Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Решения по С++(Слабженников).doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
336 Кб
Скачать
☆
  1. Если a<b, то переменной z присваивается значение переменной с.

  2. Иначе, если а равняется нулю, то переменной z присваивается значение переменной а, иначе – b.

Для реализации алгоритма применить вложенный условный оператор. Проверку переменной а на ноль выполнить оператором !.

#include "stdio.h" #include "iostream.h" int main() { int a,b,c,z; cout<<"Enter a: "; //ввод чисел cin>> a; cout<<"Enter b: "; cin>> b; cout<<"Enter c: "; cin>> c; if (a<b) z=c; else if (a!=0) z=b; else z=a; cout<<"z = "<<z<<endl; // вывод значения z return 0;

23.**T10.4

Напишите программу решения квадратного уравнения

по формуле (b2 - 4ac ≥ 0).

#include "iostream.h" #include "stdio.h" #include "math.h" void main() { float x1,x2,a,b,c,d; //объявление переменных cout<<"Enter a: "; cin>>a; cout<<"Enter b: "; cin>>b; cout<<"Enter c: "; cin>>c; if (a==0) { // выводим что корней нет,так как не квадратное уравнение cout<<"a=0. The roots are not present "<<endl; // getchar(); } else { d=b*b-4*a*c; //вычисляем дискриминант cout<<"D = "<<d<<endl; //выводим пользователю значение дискриминнанта if (d<0) //если дискриминант меньше нуля, то выводим { //сообщение о том что дискриминант отрицательный cout<<"Negative d"<<endl; } else if(d=0) //иначе если дискриминант равен нулю, то { //вычисляем корень и выдаем сообщения что x1=(-b+sqrt(d))/(2*a); //два корня, одинаковые по значению cout<<"x1 = x2 = "<<x1<<endl; } else // если же дискриминант больше нуля, то вычисляем корни { // по формулам нахождения корней x1=(-b+sqrt(b*b-4*a*c))/(2*a); x2=(-b-sqrt(b*b-4*a*c))/(2*a); cout<<"x1 = "<<x1<<endl; //выводим значения х1 и переходим на новую строчку cout<<"x2 = "<<x2<<endl; //выводим значения х2 и переходим на новую строчку }; } getchar(); //выходим из программы после нажатия на Enter //return 0; }

24.**T10.5(a)

Напишите программу, которая выводит на экран меню в виде:

Please enter one of the following choices:

a) apple g) game

t) tree p) pianist

Каждый из четырёх пунктов меню помечен буквой (a, g, t, p). Если пользователь отвечает вводом буквы, отличающейся от меток, программа должна предложить ему ввести допустимый ответ. Например, так:

Please enter a , g, t, p:.

В случае правильного ответа, программа должна использовать инструкцию switch для выбора простого действия.

#include "iostream.h" #include "stdio.h" void main() { char ans; { // запрашиваем у пользователя символ cout<<"Please enter one of the following choices: "<<endl; cout<<"a) apple g) game"<<endl; cout<<"t) tree p) pianist"<<endl; cout.flush(); cin>> ans; //считываем символ } switch (ans) //начало оператора сопоставления { case 'a': //если символ а, то выводим apple cout<<"apple"; break; case 'g': //если символ g, то выводим game cout<<"game"; break; case 't': //если символ t, то выводим tree cout<<"tree"; break; case 'p': //если символ p, то выводим pianist cout<<"pianist"; break; default: //если любой дугой символ, то просим ввести снова cout<<"Please enter a, g, t, p:"; break; }; getchar(); }

25.**T10.5(b)

if(ch=='A') a++;

else if(ch=='B') b++;

else if(ch=='C') c++;

else if(ch=='D') d++;

else f++;

Перепишите фрагмент кода, используя инструкцию switch, и проверьте практически.

#include<iostream> using namespace std; void main() { int a,b,c,d,f; //объявление переменных char ch; cin>>ch; switch(ch) //начало оператора сопоставления { case 'A': // если символ А, то a++; // увеличиваем переменную a на единицу. break; case 'B': // если символ B, то b++; // увеличиваем переменную b на единицу. break; case 'C': // если символ C, то c++; // увеличиваем переменную c на единицу. break; case 'D': // если символ D, то d++; // увеличиваем переменную d на единицу. break; default: //если символ не a, b, c или d, то f++; //увеличиваем переменную d на единицу break; }; }

26.Т10.7(a)

Вывести на экран таблицу умножения. Таблицу представить в виде сетки:

------------------

| | 2 | 3 | …

------------------

| 2 | 4 | 6 | …

------------------

| 3 | 6 | 9 | …

------------------

………………….

27.Т10.7(b)

Допишите реализацию

double R=

for(int n=N, p=P; p>0; n--,p) R=(n/p);

формулы

.

28.**Т10.8

Используя инструкцию while, напишите программу, которая запрашивает ввод чисел. После ввода каждого числа сообщается общая сумма введённых до сих пор чисел. Программа завершается после ввода нуля.

#include "iostream.h" #include "conio.h" int main() { float sum,a; //объявление переменных sum=0; // присваиваем значение переменной cout<<"enter number: "; //запрашиваем у пользователя число cin>>a; // считываем введенное пользователем число while(a!=0) //начало цикла,пока пользовваетль не введет 0 { //будем запрашивать у него число sum=sum+a; //складываем с предыдущими cout<<sum<<endl; //выводим сумму cout<<"enter number: "; cin>>a; } return 0; }

29.**Т10.9(a)

Используя цикл do-while, напишите программу, которая ожидает ввод числа 7. После вода числа 7 программа выводит на экран сообщение и завершает работу.

#include <iostream> using namespace std; int main() { float sum,a; //объявляем переменные sum=0; //обнуляем переменную, т.е. присваиваем значение 0 do //начало цикла, который будет продолжаться пока пользователь не введет "7" { cout<<"enter number 7: "; //запрашиваем число 7 cin>>a; //считываем число введенное пользователем } while (a!=7); //проверяем семерка ли это. cout<<"Nu nakonetz-to :) "; // выводим сообщение если пользователь ввел 7 return 0; //getch(); }

30.**Т10.9(b)

Решить уравнение x=cos(x) итерационным методом. Значение переменной х вычислить с ошибкой, равной ±10-4 радиан.

31.Т10.12

Напишите программу, которая кодирует и декодирует строку.

32.Т11.4

Напишите программу, которая требует ввода строки с клавиатуры. Программа вычисляет длину строки и выводит на экран введённую строку и её длину.

33.T11.5

Напишите программу, которая требует ввода двумерного массива типа int с клавиатуры и выводит его на экран.

34.**Т11.6

Напишите программу, которая перемножает элементы одномерного массива типа int.

#include "stdio.h" #include "iostream.h" #include "conio.h" int main() { int a[50],n,i; int mul=1; cout<<"enter dimension "; //запрашиваем размероность массива cin>>n; if (n<=0) //проверяем размерность массива, если она равна 0.то { cout<<"your array is: null"<<endl; //выводим сообщение } else { for(i=0;i<n;i++) //в цикле заполняем массив { cout<<"enter element of an one-dimensional the array: "; cin>>a[i]; mul=mul*a[i]; //перемножаем элементы массива }; cout<<"multiplication elements of your array is: "<<mul<<endl; }; getch(); return 0;

35.Т11.7

Напишите программу, которая находит минимальный и максимальный элементы двумерного массива.

36.Т12.1

Проверьте и объясните результаты инструкций: y=4+*pf*y; *pf+=11.2;.

37.Т12.2

1.) Следующий текст оформить в виде программы:

//инициализация переменных а и b

sw(&a,&b);

//вывод на экран a и b

void sw(int *с, int *d)

{

int tm=*с;

*с=*d;

*d=tm;

}

2.) Выполните программу и запишите результирующие значения a и b.

3.) Удалить из программы операторы & и *. После этого выполните программу и запишите результирующие значения a и b.

4.) Значения а и b, найденные в пункте 2, сравнить со значениями, найденными в пункте 3, и сформулируйте вывод.

38.Т12.3

Вычислить функцию:

1.) .

2.) .

3.) .

4.) .

5.) .

6.) .

7.) .

8.) .

9.) .

10.) .

11.) .

12.) .

13.) .

14.) .

15.) .

16.) .

17.) .

18.) .

19.) .

20.) .

21.) .

22.) .

23.) .

24.) .

25.) .

Т13.1(a)

Структура Produce состоит из трёх элементов. Первый элемент содержит название продукта. Второй – вес (определённый вещественным числом), а третий – количество калорий (целочисленное значение). Напишите программу, которая объявляет такую структуру и создаёт переменную типа Produce. Переменная инициализируется в инструкции объявления. Программа должна вывести содержимое переменной.

Т13.1(b)

Структура Produce состоит из трёх элементов, как описано в упражнении Т13.1(a). Напишите программу, которая создаёт массив из трёх структур Produce, предлагает пользователю ввести данные для каждого элемента массива, а затем выводит содержимое каждой структуры. Массив должен быть динамическим.

Т13.1(c)

Выполните упражнение Т13.1(b), но вместо объявления массива трёх структур типа Produce примените оператор new для динамического выделения памяти под массив.

Т14.1

Используя метод width() вывести на экран таблицу:

N: N*N:

1: 1:

10: 100:

100: 10000:

Т14.2

Напишите программу, которая содержит два цикла вида:

for(double d1=0,d2=0;d1<10;d1+=1.1,d2+=10.2). Оба цикла выводят на экран два столбца чисел. В первом столбце содержатся значения переменной d1, а второй столбец образован значениями переменной d2. Ширина поля отводимого под каждое значение равняется 10. Количество выводимых цифр после десятичной точки равняться единице. Формат значений первого цикла задаётся флагом ios_base::fixed, а второго – флагом ios_base::scientific.

Т14.3

Измените программу Т15.9 следующим образом. Цикл for(double d1=0,d2=0;d1<10;d1+=1.1,d2+=10.2) поместите в функцию Out(). Функция Out() имеет два аргумента. Первым аргументом является флаг форматирования, а вторым аргументом задаётся количество выводимых цифр после десятичной точки. В main() функции поместите два вызова функции Out(). При первом вызове в функцию передаётся флаг ios_base::fixed, при втором – _base::scientific.

Т14.4

Напишите программу, которая подсчитывает количество символов в потоке ввода до первого символа $, причем данный символ должен оставаться в потоке ввода. Для возврата символа в поток применить метод istream& putback(char ch);

Т14.5

Напишите программу, которая копирует ввод с клавиатуры (до символа конца файла) в файл с именем, задаваемым в командной строке.

Т14.6

Напишите программу, которая записывает в текстовой файл из символьного массива строку «Текстовой массив», а затем после пробела число 100. После этого программа читает эти данные из файла и выводи их на экран.

Т14.7

Напишите программу, которая копирует один файл в другой. Программа должна получать имена файлов из командной строки. Если программа не может открыть файл, то она должна сообщать об этом.

Т14.8

Напишите программу, которая открывает два текстовых файла для ввода и один – для вывода. Программы конкатенирует соответствующие строки из входных файлов, используя в качестве разделителя пробел, и записывает результат в выходной файл. Если один из входных файлов короче, чем другой, то соответствующие строки в более длинном файле следует скопировать в выходной файл.

Т14.9

Напишите программу, которая выполняет следующее:

Читает список друзей из текстового файла с именем File_A.dat, в котором в каждой строке по одному перечислены имена. Имена должны быть помещены в массив, а затем отсортированы.

Читает список друзей из текстового файла с именем File_B.dat, в котором в каждой строке по одному перечислены имена. Имена должны быть помещены в массив, а затем отсортированы.

Объединяет оба списка имён, исключая повторение, и сохраняет результаты в файле File_AB.dat, по одному имени в строке. Для сравнения строк применить функцию int strcmp().

Т14.10

Напишите две функции, создающие динамические потоки ввода и вывода. Обе функции возвращают указатель на один из потоков, и имеют по одному аргументу типа char, для передачи имени файла. Эти функции примените в программе.

Т15.1

Напишите программу, которая запрашивает ввод двух целых чисел. Затем эта программа должна вычислить и отобразить сумму всех целых чисел, находящихся в пределах между двумя введёнными целыми числами включая их.

Т15.2

Напишите программу, которая требует ввода количества книг, проданных за каждый месяц в течение года. В этой программе следует использовать цикл, предлагающий ввести данные продаж за каждый месяц. Для этого используется массив указателей типа char *, который инициализируется названиями месяцев года. Введённые данные сохраняются в массиве значений типа int. После этого программа должна найти сумму содержимого массива и выдать отчёт об объёме продаж за год.

Т15.3

Напишите программу, в которой используются следующие функции:

Fill_array() имеет в качестве аргументов указатель на одномерный массив типа double и размер этого массива. Функция предлагает пользователю заполнить массив с клавиатуры. Процесс ввода прекращается, когда массив заполнен или когда пользователь вводит не числовое значение, при этом возвращает фактическое число введённых данных.

Show_array() имеет в качестве аргументов указатель на одномерный массив типа double и размер этого массива. Эта функция отображает содержимое массива.

Reverse_array() имеет в качестве аргументов указатель на одномерный массив типа double и размер этого массива. Эта функция инвертирует порядок следования значений массива.

Программа должна заполнить массив, отобразить его на экране, изменить порядок следования всех значений элементов массива на обратный, за исключением первого и последнего элементов, а затем отобразить полученный массив на экране.

Т15.4

Разработайте функцию calculate(), у которой два первых аргумента имеют тип double, третий аргумент – указатель на функцию, а сама функция возвращает значение типа double. Указатель на функцию соответствует функции с двумя аргументами типа double и возвращаемым значением также типа double. Функция calculate() должна возвращать значение, вычисленное функцией, на которую указывает указатель.

Программа должна использовать цикл, в котором пользователь вводит пары чисел, а также вложенный цикл. Вложенный цикл выбирает указатель из массива указателей на функции и вызывает функцию calculate(), для выполнения операций над введённой парой чисел.

Т15.5

Вычислите площадь.