Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Отчет по лабораторной работе №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 не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...