Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Отчет по лабораторной работе №6
Постановка задачи Задана строка, состоящая из символов. Символы объединяются в слова. Слова друг от друга отделяются одним или несколькими пробелами. В конце текста ставится точка. Текст содержит не более 255 символов. Выполнить ввод строки, используя функцию Gets(s) и обработку строки в соответствии со своим вариантом. Вариант задачи Преобразовать строку так, чтобы все буквы в ней были отсортированы по возрастанию.
Текст программы //---------------------------------------------------------------------------
#include <vcl.h> #pragma hdrstop #include <iostream.h> #include <conio.h> #include <windows.h> #include <string.h> #include <stdio.h> #include <algorithm> #include <cstring>
//---------------------------------------------------------------------------
#pragma argsused char* rus(const char* text); //создать вначале прграммы char* my(char*); char* built_in(char*); int main(int argc, char* argv[]) { /* 7. Преобразовать строку так, чтобы все буквы в ней были отсортированы по возрастанию. */ char text[255]; printf(rus("Введите текст: ")); gets(text); // char textcopy[255]; // сюда скопируем наш текст strcpy(textcopy,text); // копируем из text в textcopy
my(text); printf(rus("Проверка моего алгоритма:\n\t %s"), text); built_in(textcopy); printf(rus("\nОтсортированный текст с помощью библиотеки:\n\t %s"),textcopy);
getch(); return 0; } char* my( char* text) { char symbol,symbol2; for (int i = 0; i < strlen(text); i++) { for (int j = 0; j < strlen(text)-1; j++) { if (text[j] > text[j+1]) { symbol = text[j+1]; text[j+1] = text[j]; text[j] = symbol; } } } return text; } char* built_in(char *textcopy) { sort(textcopy,&textcopy[ strlen(textcopy) ]); // сортировка нашего текста // с помощью функции sort и выводим его ниже } char bufrus[256]; //создать после тела программы char* rus(const char* text) { CharToOem(text,bufrus); return bufrus; }
//---------------------------------------------------------------------------
Результат работы программы
Отчет по лабораторной работе №7 Постановка задачи 7.1 Написать перегруженные функции и основную программу, которая их вызывает.
7.2 Решить указанную в варианте задачу, используя функции с переменным числом параметров. Вариант задания 7.1 а) для деления целых чисел; б) для деления комплексных чисел. 7.2 Написать функцию min с переменным числом параметров, которая находит минимальное из чисел типа int или из чисел типа double, тип параметров определяется с помощью первого параметра функции. Написать вызывающую функцию main, которая обращается к функции min не менее трех раз с количеством параметров 5, 10, 12. Текст программы //---------------------------------------------------------------------------
#include <vcl.h> #pragma hdrstop #include <iostream.h> #include <conio.h> #include <windows.h> #include <math.h> //---------------------------------------------------------------------------
#pragma argsused char* rus(const char *text); float dive(int , int ); float dive(float,float,float,float); void transformer(float,float,float,float); int min(int k, ... ); int main(int argc, char* argv[]) { /* 7.1 Написать перегруженные функции и основную программу, которая их вызывает. а) для деления целых чисел; б) для деления комплексных чисел.
*/ int choice; // переменная для выбора режима работы программы int ch; // аналогично printf(rus("Выберите режим работы программы: 1 или 2? ")); cin >> choice; // вводим 1 или 2. if (choice == 1) // если выбрали 1, то { int a,b; // переменные под целые числа float q,w,e,r; // переменные под комплексные printf(rus("Введите целые числа:\n")); cin >> a; // вводим целые числа cin >> b; if (b != 0) // если делитель не равен 0, то живем { cout << rus("Результат деления : ") << dive(a,b) << endl << endl; } else // иначе ошибка cout << rus("Деление на ноль, это возмутимо.\n");
printf(rus("Введите два комплексных числа:\n")); cin >> q; // вещественная часть первого числа cin >> w; // мнимая часть первого cin >> e; // вещественная второго cin >> r; // мнимая второго transformer(q,w,e,r); // ф-ия просто покажет два комплексных числа if ((e!=0)||(r!=0)) // если хотя бы одно из частей не ноль, то работать можно { printf(rus("Результат деления z1/z2 : ")); dive(q,w,e,r); // ф-ия по подсчету комплексного числа } else if ((e == 0)&&(r == 0)) // если делитель ноль, то так нельзя cout << rus("Деление на ноль, это возмутимо!!!");
printf("\n\n-------------//-----------------\n\n"); printf(rus("Вы хотите включить следующий режим? 3 - да, 4 - нет ")); cin >> ch; // мы продолжаем работать(перейдем к след режиму) или нет? } if ((choice == 2)||(ch == 3)) { /* 7.2 Написать функцию min с переменным числом параметров, которая находит минимальное из чисел типа int или из чисел типа double, тип параметров определяется с помощью первого параметра функции. Написать вызывающую функцию main, которая обращается к функции min не менее трех раз с количеством параметров 5, 10, 12. */ cout << rus("min(2,3,4,3,1) = ") << min(5,2,3,4,3,1) << endl; cout << rus("min(9,7,2,6,5,4,3,5,5,2) = ") << min(10,9,7,2,6,5,4,3,5,5,2) << endl; cout << rus("min(11,3,9,5,7,6,5,4,7,5,5,3) = ") << min(12,11,3,9,5,7,6,5,4,7,5,5,3) << endl; cout << rus ("min(67,-65,66) = ") << min(3,67,-65,66) << endl; } else if((choice > 2)||(choice < 0)) printf(rus("\nНет такого режима работы программы!!!"));
printf(rus("\nНажмите любую клавишу для выхода...")); getch(); return 0; }
float dive(int a, int b) { // ф-ия по делению целых чисел float c = 1.0*a/b; return c; } float dive(float a, float b, float c, float d) { // ф-ия по подсчету мнимой и вещественной части деления z1 и z2 float mnim = (a*(-1)*d + b*c)/ (pow(c,2)+pow(d,2)); // мнимая float real = (a*c+(-1)*b*(-1)*d)/(pow(c,2)+pow(d,2)); // вещественная
if (mnim > 0) // вывод на экран в зависимости от мнимой части cout << "z = " << real << " + i(" << mnim << ")"; else cout << "z = " << real << " - i(" << (-1)*mnim << ")";
} void transformer(float q, float w, float e, float r) { // ф-ия по выводу чисел z1 и z2 в зависимости от знака мнимых частей if ((w>=0)&&(r>=0)) { cout << "z1 = " << q << " + i(" << w << ")" << endl; cout << "z2 = " << e << " + i(" << r << ")" << endl; } else if ((w >= 0)&&(r<0)) { cout << "z1 = " << q << " + i(" << w << ")" << endl; cout << "z2 = " << e << " - i(" << (-1)*r << ")" << endl; } else if ((w<0)&&(r>=0)) { cout << "z1 = " << q << " - i(" << (-1)*w << ")" << endl; cout << "z2 = " << e << " + i(" << r << ")" << endl; } else if ((w<0)&&(r<0)) { cout << "z1 = " << q << " - i(" << (-1)*w << ")" << endl; cout << "z2 = " << e << " - i(" << (-1)*r << ")" << endl; } } int min(int k, ...) {
int *p = &k; int min; for ( ; k != 0 ; k--) { if (*p <= *(p++)) { min = *p; } } return min; } char bufrus[256]; char* rus(const char* text) { CharToOem(text,bufrus); return bufrus; } //--------------------------------------------------------------------------- Результат работы программы |
||
Последнее изменение этой страницы: 2018-05-29; просмотров: 168. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |