Отчет по лабораторной работе №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-13; просмотров: 312; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!