Информация


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

Программирование — в обычном понимании, это процесс создания компьютерных программ.
В узком смысле (так называемое кодирование) под программированием понимается написание инструкций — программ — на конкретном языке программирования (часто по уже имеющемуся алгоритму — плану, методу решения поставленной задачи). Соответственно, люди, которые этим занимаются, называются программистами (на профессиональном жаргоне — кодерами), а те, кто разрабатывает алгоритмы — алгоритмистами, специалистами предметной области, математиками.
В более широком смысле под программированием понимают весь спектр деятельности, связанный с созданием и поддержанием в рабочем состоянии программ — программного обеспечения ЭВМ. Более точен современный термин — «программная инженерия» (также иначе «инженерия ПО»). Сюда входят анализ и постановка задачи, проектирование программы, построение алгоритмов, разработка структур данных, написание текстов программ, отладка и тестирование программы (испытания программы), документирование, настройка (конфигурирование), доработка и сопровождение.

Глава 2. Решения

Решения задач С++ 120-196

Задача 121

// Таблица функции у=|х| #include <stdio.h> ¦#include <conio.h> linclude "math.h"
% Ifdefine LB -4 // нижняя граница диапазона изменения
// аргумента #define HB 4 // верхняя граница диапазона изменения
// аргумента #define DX 0.5 // приращение аргумента
void main() {
float x,y; // аргумент и значение функции int n; // кол-во точек int i; // счетчик циклов
printf("ХпТаблица значений функции у=|х| \п");
п = (НВ - LB) /DX + 1;
х = LB;
for (i = 1; i <= n; i
у = fabs(x);
printf("%4.2f %3.2f\n", x, у);
x += DX;
printf("\пДля завершения нажмите <Enter>"); getch();
Выводит таблицу умножения на 7 #include <stdio.h> #include <conio.h> aid main ()
int m; // число, для которого надо вывести // таблицу умножения (множимое)
int n; // множитель int p; // произведение
m = 7;
printf("ХпТаблица умножения на %i\n", m);
for (n = 1; n<=9; n++)
{
p = m * n;
printf("%ix%i=%i\n", m, n, p); printf("\пДля завершения нажмите <Enter>"); getch();

Задача 124

// Квадрат Пифагора - таблица умножения
#include <stdio.h>
#include <conio.h>
void main ()
{
int i,j; // номер строки и столбца таблицы
printf (" "); // левая верхняя клетка таблицы for (j = 1; j <=10; j++) // первая строка - номера
// столбцов printf ("%4i",-j) ; printf("\n");
for (i = 1; i <=10; i
printf("%4i",i); // номер строки
for (j = 1; j <= 10; j++) // строка таблицы
printf("%4i",i*j); printf("\n"); printf("\пДля завершения нажмите <Enter>"); getch(); \

Задача 125

// Вычисление числа "ПИ" с использованием // свойства ряда 1 -1/3 + 1/5 - 1/7 + ...
|#include <stdio.h>
f#include <conio.h> void main() float x; // член ряда
int n; // количество суммируемых членов float suirtn;. // частичная сумма int i; // счетчик циклов
// при суммировании достаточно большого (-1000) количества
// элементов ряда, значение суммы стремится к "ПИ"/4
printf("Вычисление суммы ряда 1 -1/3 + 1/5 - 1/7 + ...\п");
printf("Введите кол-во суммируемых членов ряда ->" );
scanf("%i", &n);
suiran = 0;
for (i = 1; i <= n; x = (float) 1/ (2*i - 1) ;
if ((i % 2) ==0) x = -1 * x;
summ += x; }
printf("Сумма ряда: %2.6f\n", summ); printf("Вычисленное значение "); printf("числа ПИ = %2.6f\n", summ * 4); printf("ХпДля завершения нажмите <Enter>"); getch();

Задача 126

I/ Приближенное вычисление интеграла '/ методом прямоугольников (цикл for) ^include <stdio.h> #include <conio.h>
void main()
.
float a,b; // границы отрезка
float dx; // приращение аргумента
float s; // приближенное значение интеграла
infc n; // количество интервалов
// аргумент
// значение функции в начале интервала
float х; float у; int i;
printf("\Приближенное вычисление интеграла\п");
printf("Нижняя граница интервала -> ");
scanf("%f", &a);
printf("Верхняя граница интервала -> ");
scanf("%f", &b);
printf("Приращение аргумента -> ");
scanf("%f", &dx) ;
n= (b-a) /dx + 1; ¦
x = a;
s = 0; .
for (i = 1; i<=n; i++)
y=x*x+2; // значение функции в начале интервала
s += y*dx;
х += dx; } printf("Значение интеграла: %6.3f", s) ;
printf("\пДля завершения нажмите <Enter>"); getch();

 

Задача 127

// Приближенное вычисление интеграла методом трапеций
#include <stdio.h>
#include <conio.h>
void main()
float a,b; // границы отрезка
float dx; // приращение аргумента
float s; // приближенное значение интеграла
int n; // количество интервалов
float х; // аргумент
float yl,y2; // значение функции в начале и в конце
int i;
printf("ХпПриближенное вычисление интеграла\п");
printf("методом трапеций\п");
printf("Нижняя граница отрезка -> ") ;
scanf("%f", &a);
printf("Верхняя граница отрезка -> ") ;
scanf("%f", &b) ;
printf("Приращение аргумента -> ") ;
scanf("%f", sdx);
n = (b - a) / dx;
x = a;
s = 0;
for (i = 1; i <=n; i++)
yl = x*x +2; // значение ф-и в начале интервала х += dx;
у2 = х*х +2; // значение ф-и в конце интервала
s += (yl + y2)*dx/2;
printf("Значение интеграла: %6.3f", s);
printf("\пДля завершения нажмите <Enter>"); getch ();

Задача 129

int dec; // десятичное число
int v; // вес формируемого разряда
int i; // номер формируемого разряда //
Преобразование десятичного числа в двоичное tinclude <stdio.h> #include <conio.h> void main ()
printf("ХпПреобразование десятичного числа в двоичное\п");
printf("Введите целое число от 0 до 255")f
printf ("и нажмите <Enter>");
printf("-> ");
scanf("%i", &dec);
printf("Десятичному числу %i соответствует двоичное ",
dec) ;
v = 128; // вес старшего (восьмого) разряда
for (i = 1; i <= 8; i-
if (dec >= v) {
printf("1");
dec -= v; else printf("0");
v = v / 2; // вес следующего разряда в два раза меньше }
printf("\п\пДля завершения нажмите <Enter>"); getch ();

 

Задача 130

// Программа проверяет знание таблицы умножения
#include <stdio.h>
#include <conio.h>
#include <stdlib.h> // для доступа к srand и rand
#include <time.h>
void main()
int numbl,numb2; // сомножители
N
int res; int otv; int kol = 0; int i;
time t t;
¦
// произведение
// ответ испытуемого
// количество правильных ответов
// счетчик циклов
// текущее время - для инициализации
// генератора случайных чисел
printf("\*** Проверка знания таблицы умножения ***\п"); printf(" После примера введите ответ и нажмите <Enter>");
srand((unsigned) time(&t));; // инициализация генератора
// случайных чисел
for (i = 1; i <= 10; i++) // 10 примеров
numbl = rand()%7 + 2 ; // число от 2 до 9
numb2 = rand()%7 + 2 ;
res = numbl * numb2;
printf("%ix%i=", numbl, numb2);
scanf("%i",&otv);
if (otv == res)
else printf("Вы ошиблись! %ix%i=%iХпПродолжим...\n", numbl, numb2, res);
printf("ХпПравильных ответов: %i\n", kol); printf("Ваша оценка: "); switch (kol)
case 10: puts("5"); break; case 9: puts("4"); break; case 8: puts("4"); break; case 7: puts("3"); break; default: puts("2"); break;
printf("ХпДля завершения нажмите <Enter>");
getchO;

Задача 131

l// Проверка умения складывать и вычитать числа #include <stdio.h> #include <conio.h>
finclude <stdlib.h> // для доступа к srand и rand #include <time.h>
tdefine LEVEL 97+2 // действия над числами от 2 до 99
void main() {
int nuitibl, numb2; // числа
int op; // действие над числами:
//О - сложение, 1 - вычитание
char zop; // знак операции - "плюс" или "минус"
int res; // результат
int otv; // ответ испытуемого
int kol =0; // количество правильных ответов
int buf; // буфер для обмена numbl и numb2,
//в случае, если numbl<numb2
int i; // счетчик циклов
time_t t; // текущее время - для инициализации
// генератора случайных чисел
printf("ХпПроверка умения складывать и вычитать числа\п"); printf("После примера введите ответ и нажмите <Enter>"); kol = 0;
srand((unsigned) time (&t));; // инициализация генератора
// случайных чисел
for (i = 1; i <= 10; i // сгенерируем пример
numbl = rand() % LEVEL; // число от 2 до 99
numb2 = rand() % LEVEL;
op = rand()%2; // действие над числами
if (op == 0) res = numbl + numb2;
zop = '+'; }
else { // Вычитание
zop =
if (numbl < numb2) // обменяем numbl и numb2 buf = numb2; numb 2 = numbl; numbl = buf;
res = numbl - numb2; }
printf("%i%c%i=", numbl, zop, numb2); // вывести пример scanf("%i", &otv); // получить ответ испытуемого if (otv == res)
else printf("Вы ошиблись. %i%c%i=%i\n", numbl, zop, numb2, res);
printf("Правильных ответов: %i\n", kol); printf("Ваша оценка:\n"); switch (kol)
case 10: puts("5"); break;
case 9: puts("4"); break;
case 8: puts("4"); break;
case 7: put s("3"); break;
default: puts("2"); break;
printf("ХпДля завершения нажмите <Enter>") getch();

Задача 132

1I Электронные часы '(include <stdio.h> Hnclude <conio.h>
finclude "dos.h" // для доступа к delay aid main()
int min,sec; // минуты, секунды
clrscrO; // очистить экран
_setcursortype(_NOCURSOR); // убрать курсор
printf("Чтобы остановить таймер, нажмите любую клавишу")
for (min = 0; min <= 2; min++)
for (sec = 0; sec <= 59; sec++)
delay(lOOO); // задержка 1000 ms
gotoxy(1,3); // курсор в 1-ую колонку 1-ой строки
printf("%i:%2i", min, sec);
if (kbhit()) break;
if (kbhitO) break; }
_setcursortype(_NORMALCURSOR);
getchО; // клавиша, остановившая часы
printf("\пДля завершения нажмите <Enter>");
getch();

Задача 133

// Вычисление среднего арифметического // последовательности положительных чисел #include <stdio.h> #include <conio.h> void main() int a; // число, введенное с клавиатуры
int n; // количество чисел
int s; // сумма чисел
float m; // среднее арифметическое s = 0;
n = 0;
printf("\Вычисление среднего арифметического");
printf("последовательности положительных чисел.\п");
printf("Вводите числа. Для завершения введите ноль.Хп");
do {
printf("-> ");
scanf("%i", &a);
if (a > 0) s += а;
} while (a > 0);
printf("Введено чисел: %i\n", n);
printf("Сумма чисел: %i\n", s);
m = (float) s / n;
printf("Среднее арифметическое: %3.2f", m) ;
printf("\п\пДля завершения нажмите <Enter>") ; getch();

Задача 134

// Определение максимального числа
//в последовательности положительных чисел
#include <stdio.h>
#include <conio.h>
void main()
int a; // очередное число int m; // максимальное число
puts("\пОпределение максимального числа");
puts("последовательности положительных чисел.");
puts("Вводите числа. Для завершения введите ноль.");
m = 0;
do {
printf("-> ");
scanf("%i", &a);
if (a > m) m = a; } while (a > 0); printf("Максимальное число: %i", m);
printf("\пДля завершения нажмите <Enter>"); getch();

Задача 135

// Определение минимального числа
// последовательности положительных чисел
¦include <stdio.h>
#include <conio.h>
II пусть первое число минимальное
void main() {
int a; // очередное число int min; // минимальное число
printf("ХпОпределение минимального числаХп"); printf("B последовательности положительных чисел.\п"); printf("Вводите числа. Для завершения введите ноль.Хп"); printf("-> "); scanf("%i", sa); min = a; while ( a > 0) {
if (a < min) min = a;
printf("-> ");
scanf("%i", sa); }
printf("Минимальное число последовательности: "); printf("%i\n", min);
printf("\пДля завершения нажмите <Enter>"); getch();

Задача 136

// Проверяет, является ли число простым #include <stdio.h> #include <conio.h> void main ()
{
int n; // число
int d;- // делитель
int r; // остаток от деления п на d
printf("Введите целое число-> ");
scanf("%i", &n);
d = 2; // сначала будем делить на два
do {
г = n % d;
if (r != 0) d++;
while ( г != 0 ) ; ' // пока п не разделится на d if (d == n)
printf("%i - простое число" ,n); else printf("%i - не простое число" ,п);
printf("\п\пДля завершения нажмите <Enter>"); getch();

Задача 138

// Игра "Угадай число" ;#include <conio.h>
Binclude <stdlib.h> // для доступа к srand .#include <time.h> void main() {
int comp; // задуманное число int igrok; // вариант игрока int n; // количество попыток time_t t; // текущее время - для инициализации // генератора случайных чисел
srand((unsigned) time(&t));
comp = rand() % 10 +1 ; // число от 1 до 10
clrscr() ;
cprintf("\п\гКомпыотер \"задумал\" число от 1 до\
1О.\п\г");
cprintf("Вы должны его угадать за три попытки.");
п = 0;
do {
cprintf("\n\r->") ;
cscanf("%i",iigrok);
} while ({igrok != comp)&&(n < 3)); if (igrok == comp)
textcolor(RED+BLINK);
cprintf ("\п\гВЫ ВЫИГРАЛИ.'"); }
else {
textcolor(GREEN);
cprintf("\п\гВы проиграли.);
cprintf("Компьютер задумал число %d",comp); }
textcolor(LIGHTGRAY);
cprintf("\п\гДля завершения нажмите любую клавишу..."); getch();getch (); }

Задача 140

// Выводит таблицу функции #include <stdio.h> #include <conio.h> void main()
float x,dx; // аргумент и его приращение
float xl,x2; // диапазон изменения аргумента float у; II значение функции
xl = -4; х2 = 4; dx = 0.5; х = xl;
printf ("--------------\n") ;
printf (" x | y\n");
printf ("--------------\n") ;
while (x < x2) {
у = x*x + 2;
printf("13.2f | %3.2f\n", x, y);
x += dx;
printf ("--------------\n") ;
printf("\пДля завершения нажмите <Enter>"); getch ();

Задача 141

Щ/ Вычисление числа "Пи" #include <stdio.h> #include <conio.h> void main ()
{
float p; // вычисляемое значение ПИ
float t; // точность вычисления
int n; // номер члена ряда
float el; // значение члена ряда
Р = 0;
п = 1;
el = 1; // начальное значение
printf("ХпЗадайте точность вычисления ПИ -> ");
scanf("%f", &t);
printf("Вычисление ПИ с точностью %f\n",t);
while (el >= t )
el = (float) 1 / (2*n -1); if ((n % 2) == 0)
p -= el; else p += el;
p = p*4;
printf("ХпЗначение ПИ с точностью %f равно %f\n", t,
printf("Просуммировано %i членов ряда.\п", п);
printf("\пДля завершения нажмите <Enter>"); getch();
p);

Задача 142

Вычисление наибольшего общего делителя f/ двух целых чисел (алгоритм Евклида)
linclude <stdio.h> Unclude <conio.h> id main()
int nl,n2; // числа, НОД которых надо вычислить int nod; // наибольший общий делитель int г; // остаток от деления nl на п2
printf("ХпВычисление наибольшего общего делителя ");
printf("для двух целых чисел.\п");
printf("Введите в одной строке два числа ");
printf("и нажмите <Enter>");
printf("-> ");
scanf("%i%i", &nl, &n2) ;
printf("НОД чисел %i и %i - это ", nl, n2);
while (nl % n2)
г = nl % n2; // остаток от деления nl = п2; п2 = г;
1
nod = п2;
printf("%i\n", nod);
printf("\пДля завершения нажмите <Enter>"); getch();

Задача 143

// Подсчет ненулевых элементов массива // (доступ к элементам по номеру) #include <stdio.h> #include <conio.h>
#define SIZE 5 // размер массива void main()
int a[SIZE]; //массив
int n = 0; // кол-во ненулевых эл-тов
int i; // индекс printf("ХпВведите массив целых чисел.\п"); printf("После ввода каждого числа "); printf("нажимайте <Enter>\n");
for (i = 0; i < SIZE; i++) {
printf("a[%i] ->",i+l) scanf("%i", &a[i]); if (a[i] != 0) n++; printf("В массиве %i ненулевых элемента.\n", n); printf("\пДля завершения нажмите <Enter>"); getch();

Задача 144

11 Поиск минимального элемента массива linclude <stdio.h> linclude <conio.h> itdefine HB 5 // размер массива aid main() int a[HB]; // массив
int min; // номер минимального элемента
int i; // индекс массива
printf("ХпПоиск минимального элемента массива\п"); printf("Введите в одной строке элементы массива,\п"); printf("%i целых чисел, и нажмите <Enter>\n", HB) ; printf("-> ") ; for (i = 0; i < HB; i++) scanf("%i",&a[i]);
min =0; // предположим, что первый эл-т минимальный // сравним оставшиеся эл-ты массива с минимальным for (i = 1; i < HB; i++)
if (a[i] < a[min]) min = i;
printf("Минимальный элемент массива: "); printf("a[%i]=%i ", min+1, a[min]);
printf("\пДля завершения нажмите <Enter>"); getch();

Задача 145

// Поиск минимального элемента массива
// (доступ к элементам при помощи указателя)
#include <stdio.h>
#include <conio.h>
#define HB 5
void main()
// размер массива
int a[HB]; // массив
int *min; // номер минимального элемента
int *p; // указатель на элемент массива int i; printf("ХпПоиск минимального элемента массива\п");
printf("Введите в одной строке элементы массива,\п");
printf("%i целых чисел, и нажмите <Enter>\n", HB);
printf("-> ");
р = а;
for (i = 1; i <= HB; i++)
scanf("%i", p++);
min = a; // пусть первый элемент минимальный
р = а + 1;
// теперь р содержит адрес второго элемента
// сравним оставшиеся эл-ты массива с минимальным
for (i = 2; i <= HB; i++)
if (*p < *min) min = p;
p++; //к следующему элементу
}
printf("Минимальный элемент массива: %i\n", *min);
printf("\пДля завершения нажмите <Enter>"); getch()i

Задача 148

// Вычисление средней (за неделю) температуры воздуха tinclude <stdio.h> ttinclude <conio.h>
fvoid main ()
// названия дней недели -.массив строковых констант
char *day[] = {"Понедельник","Вторник","Среда",
"Четверг","Пятница","Суббота","Воскресенье"}; float t[7]; // температура float sum; // сумма температур за неделю float sred; // средняя температура за неделю int i;
printf("ХпВведите температуру воздуха:\п"); for (i = 0; i <= 6; i
printf("%s->", day[i]); scanf("%f", &t[i]); sum += t [i]; i
sred = sum / 7;
printf("ХпСредняя температура за неделю: %2.1f", sred);
printf("\пДля завершения работы нажмите <Enter>"); getch(); }

Задача 149

// Поиск в массиве методом перебора элементов #include <stdio.h> iinclude <conio.h> f#define HB 5 void main()
int m[HB]; int obr; int found; int i;
// массив целых
// образец для поиска
// признак совпадения с образцом
for (i = 0; i < НВ; i++)
scanf("%i", Sm[i]);
printf("Введите образец для поиска (целое число)->"); scanf("%i", Sobr);
// поиск простым перебором found = 0;
¦
i = 0; // проверяем с первого элемента массива do {
if (m[ij == obr )
found =1; // совпадение с образцом else i++; // переход к следующему элементу } while (!found && i < НВ) ; if ( found )
printf("Совпадение с элементом номер %i", i+1) ; else
printf("Совпадений с образцом нет");
>¦¦•-'-.
printf("\пДля завершения работы нажмите <Enter>"); getch();

Задача 150

// Проверяет, отсортирован ли массив по возрастанию #include <stdio.h> #include <conio.h> #define НВ 5 void main()
i
int a[HB]; // массив
int к; // индекс
int ok; // 1 - последовательность неубывающая
printf("Проверка, упорядочен ли массив\п"); printf("по возрастаникЛп");
printf("Введите массив (%i целых чисел ", НВ); printf ("в одной строке) и нажмите <Enter>\n"); for (k =0; k < НВ; k++) scanf("%i", &a[k]); к = 0; ок = 1; do {
if (a[k] > ок = 0;
} while ( к < НВ-1 && ок); printf("Элементы массива "); if ( !ок )
printf("не упорядочены ");
printf("по возрастаниюХп");
printf("ХпДля завершения работы нажмите <Enter>"); getch();

Задача 151

// Проверяет, сколько раз число встречается в массиве
finclude <stdio.h>
tinclude <conio.h>
#define HB 5 // размер массива
void main()
int a[HB]; // массив
int obr; // искомое число (образец)
int n; // кол-во элементов массива,
// значение которых равно образцу int i; // индекс
printf("Введите массив (%i ", HB) ; printf("целых чисел в одной строке)\п"); printf("->"); for (i = 0; i < HB; i++)
scanf("%i",&a[i]);
printf("Введите образец для сравнения ->"); scanf("%i", &obr); n = 0; for (i = 0; i < HB; i++)
if (a[i] == obr) n++;
if ( n )
printf("Число %i встречается в массиве %i раз",
obr, п) ; else printf("Ни один элемент массива не равен образцу")
printf("\цЦля завершения работы нажмите <Enter>"); getch();

Задача 153

// Сортировка массива методом прямого выбора
iinclude <stdio.h>
#include <conio.h>
#define SZ 5 // размер массива
void main () int a[SZ]; // массив of integer;
int i; // номер элемента, от которого ведется noi
// минимального эл-та int min; // номер минимального элемента в части
// массива от i до верхней границы массива int j; // номер эл-та, сравниваемого с минимальным int buf; // используется при обмене эл-тов массива int k; // индекс для ввода и вывода printf("ХпСортировка массива\п"); printf("Введите массив (в одной строке %i", SZ) ; printf("целых чисел) и нажмите <Enter>\n"); printf("->"); for (k =0; k < SZ; k++) scanf("%i", &a[k]);
•printf("Сортировка...\n"); for (i = 0; i < SZ-1; i++) // поиск минимального эл-та
// в части массива от а[1] до последнего эл-та
min = i;
for (j = i+1; j < SZ; j
if (a[j] < a[min]) min = j; // поменяем местами a[min] и a[i]
buf = a[i]; a [i] = a [min] ; a[min] = buf;
// цикл сортировки закончен // отладочная печать
// выведем, промежуточное состояние массива for (k =0; к < SZ; к++) printf("%i ", а[к]); printf ("\n");
// выведем отсортированный массив printf("Массив отсортированХп"); for (к =0; к < SZ; к++)
printf("%i ", а[к]); printf("\n");
printf("\пДля завершения работы нажмите <Enter>"); getch();

Задача 154

// Сортировка массива методом "пузырька" #include <stdio.h> #include <conio.h> #define SZ 5 void main()
int a[SZ];
int i; // счетчик циклов
int k; // текущий индекс элемента массива
int buf;
printf("ХпСортировка массива методом \"пузырька\"\п"); printf("Введите массив (в одной строке %i ", SZ) ; printf("целых чисел) и нажмите <Enter>\n"); for (k = 0; k < SZ; k++)
scanf("%i", &a[k]); printf("Сортировка...\n"); for (i = 0; i < SZ-1; i {
for (k = 0; к < SZ-1; k++)
{
if (a[k] > a[k+l])
// обменяем к-й и (к+1)-й элементы
buf = а[к]; а[к] = а[к+1]; а[к+1] = buf; // отладочная печать - состояние
// массива после очередного цикла сортировки for (k = 0; к < SZ; к++)
printf("%i ",a[k]); printf ("W) ;
}
printf("Массив отсортированХп"); for (к =0; к < SZ; k++)
printf("%i ",a[k]);
<Enter>");
printf("\п\пДля завершения работы нажмите getch();

Задача 155

// Объединение двух упорядоченных массивов в один
#include <stdio.h>
#include <conio.h>
#define SZ 5 // размер исходных массивов
void main ()
{
int a[SZ], b[SZ]; // исходные массивы
int c[SZ*2]; // массив - результат
int k,i,m; // индексы массивов a, b и с
printf{"Объединение двух упорядоченных "); printf("по возрастанию массивов\п"); printf("Введите первый массив ");
i = 0; i < SZ-1; i {
for (k = 0; к < SZ-1; k++)
{
if (a[k] > a[k+l])
// обменяем к-й и (к+1)-й элементы
buf = а[к]; а[к] = а[к+1]; а[к+1] = buf;// отладочная печать - состояние// массива после очередного цикла сортировки for (k = 0; к < SZ; к++)
printf("%i ",a[k]); printf ("W) ;
}
printf("Массив отсортированХп"); for (к =0; к < SZ; k++)
printf("%i ",a[k]);
<Enter>");
printf("\п\пДля завершения работы нажмите getch();

Задача 155

// Объединение двух упорядоченных массивов в один
#include <stdio.h>
#include <conio.h>
#define SZ 5 // размер исходных массивов
void main ()
{
int a[SZ], b[SZ]; // исходные массивы
int c[SZ*2]; // массив - результат
int k,i,m; // индексы массивов a, b и с
printf{"Объединение двух упорядоченных "); printf("по возрастанию массивов\п"); printf("Введите первый массив ");
printf("(%i целых чисел) -> ", SZ) ; for (к = 0; к < SZ; k++) scanf("%i", sa[k]);
printf("Введите второй массив "); printf("(%i целых чисел) -> ", SZ); for (i = 0; i < SZ; i++) scanf("%i",
к = i = m = 0; do {
if (a[k] < b[i] )
else
if (a[k]
else
} while ( к < SZ && i < SZ); // один из двух исходных // массивов полностью не переписан в массив С
while (к < SZ) // есть эл-ты А, не переписанные в С
while (i < SZ) // есть эл-ты В, не переписанные в С
printf("Массив - результат: \п"); for (i = 0; i < 2 * SZ; i++) printf("%i ", c[i]);
printf("Для завершения работы нажмите <Enter>\n"); getch();

Задача 156

// Бинарный поиск в упорядоченном массиве #include <stdio.h> #include <conio.h>
fine SZ 10 void main()
// размер массива
int a[SZ]; // массив целых
int obr; // образец для поиска
int ok; // 1 - массив упорядочен
int verh,niz; // границы части массива, в которой
// выполняется поиск int sred; // индекс среднего элемента в области
// поиска
int found; 111- поиск успешен int n; // счетчик сравнений с образцом int i;
// ввод массива printf("*** Бинарный поиск "); printf("в упорядоченном массиве ***\п"); printf("Введите массив (в едной строке %i ", SZ); printf("целых чисел) и нажмите <Enter>\n"); printf("-> "); for (i = 0; i < SZ; i++) scanf("%i", &a[i]);
// проверим, упорядочен ли массив по возрастанию ok = 1; // пусть массив упорядочен i = 0; do
if (a[i] <= a[i+l]) i++;
else ok = 0; while (ok SS i < SZ -1);
if ( !ok) {
puts("Введенный массив не является"); puts("упорядоченным по возрастаникЛп"); goto bye; printf ("Введите образец для поиска (целое число) -> ".); scanf("%i", &obr);
// бинарный поиск verh = 0; niz = SZ - 1; found = 0; n = 0; do {
sred = (niz-verh) / 2 + verh; // делим массив пополам
if (a[sred] == obr)
found = 1; else
// в какой части, в верхней или в нижней,
// может находиться искомый элемент?
if ( obr < a[sred])
niz = sred-1; //в верхней
else verh = sred+1; //в нижней } while (verh <= niz && !found); if (found) {
printf("Совпадение с элементом номер %i ", sred);
printf("Выполнено %i сравнений" , n);
else
printf("Образец в массиве не найден\п");
bye:
printf("\пДля завершения работы нажмите <Enter>"); getch();

Задача 157

// Анализ роста учеников #include <stdio.h> #include <conio.h>
ttdefine SZ 30 //максимальное кол-во учеников
void main()
int r;
// рост ученика
int rost[SZ]; // рост всех учеников
int h = 0; // кол-во учеников, о которых
// введены сведения float sred; // средний рост int m = 0; // кол-во учеников, у которых
// рост больше среднего int sum =0; // суммарный рост int i = 0;
printf("*** Анализ роста учеников ***\п");
printf("Вводите рост (см) учеников\п");
printf("Для завершения введите 0 и нажмите <Enter>\n");
do
printf("-> "); scanf ("%i", &r) ; if ( r ) rost[i++] = r; sum += r;
.
} while (r && i < SZ);
if ( n )
sred = (float) sum / n;
m = 0;
// сравним рост каждого со средним
for (i = 0; i < n; i++)
if (rost[i] > sred) m++;
printf("Средний рост: %3.2f см\п", sred);
printf("У %i учеников рост превышает среднийХп", m)
printf("\пДля завершения нажмите <Enter>"); getch();

Задача 158

ш/ Вычисление суммы элементов массива (по столбцам) •finclude <stdio.h>
#include <conio.h>
#define ROW 3 // кол-во строк
#define COL 5 // кол-во столбцов
void main ()
int a[ROW][COL]; // массив
int s[COL]; // сумма элементов
int i,i;
printf("ХпВведите массив\п") ;
printf("После ввода элементов каждой строки,"); printf("\n%i целых чисел, нажимайте <Enter>\n", COL); for (i = 0; i < ROW; i++) // ROW строк
printf("->"); for (j = 0; j < COL; j++) scanf("%i", &a[i] [j]);
printf("ХпВведенный массив\п");
for (i = 0; i < ROW; i++)
{
for (j = 0; j < COL; j++)
printf("%i " , a[i][j]);
printf("\n");
// "очистим" массив s
for (i = 0; i < COL; i++) s[i] = 0;
// обработка
for (j = 0; j < COL; j++) // для каждого столбца
for (i = 0; i < ROW; i++) // суммируем эл-ты
+= a[i] [j];
ntf("
for (i = 0; i < COL; i++) printf("%i ", s [i]);
An.");
printf("\пДля завершения нажмите <Enter>"); getch();

Задача 160

// Обработка результатов экзамена #include <stdio.h> #include <conio.h> void main()
i
int n[6]; // количество двоек, ..., пятерок
int s = 0; // всего оценок
float p[6]; // процент каждой оценки
char *mes[6] ={"\0", "\0", "двоек\0","троек\0",
"четверок\0","пятерок\0"}
int i;
puts("Обработка результатов экзамена"); puts("Введите исходные данные:"); for (i = 5; i >= 2; i—)
printf("%s ->", mes[i]);
scanf("%i", &n[i]);
s += n[i]; }
// вычислим процент каждой оценки for (i = 2; i < 6; i++)
p[i] = (float)n[i]/s*100; puts("Результаты экзамена");
puts ("----------------------------") ;
for (i = 5; i >= 2; i—)
printf("%8s %2i %2.0f%\n",mes[i], n[i], p[i]); puts (" ") ;
.
puts("Для завершения программы нажмите <Enter>"); getch();

Задача 162

// Определитель матрицы второго порядка #include <stdio.h> finclude <conio.h>void main ()
float a[2][2]; // матрица
float det; // определитель (детерминант)
int i,j; // индексы массива
printf("ХпВведите матрицу второго порядка.\n");
printf("После ввода элементов строки нажмите <Enter>\n");
for (i = 0; i < 2; i++)
{
printf("->");
scanf("%f%f", &a[i][0], &a[i][l]); } det = a[0] [0] * a[l] [1] - a[0] [1] * a[l] [0];
printf("Определитель матрицы\п") ; for (i = 0; i < 2; i++)
printf ("%f %f\n", a[i][0], a[i][l]);
printf("равен %f", det);
printf("ХпДля завершения нажмите <Enter>"); getch();

Задача 163

// Строка с максимальной суммой элементов #include <stdio.h> #include <conio.h>
#define N 3 // размер квадратной матрицы
138
d main()
int m[N][N+l]; // последний столбец используем
// для хранения суммы эл-тов строки
int max; // строка с максимальной суммой // элементов
int i/j; // индексы
puts("ХпОпределение строки с максимальной");
puts("суммой элементов") ;
printf("Введите матрицу %ix%i\n", N, N);
for (i = 0; i < N; i++)
{
printf("Элементы Si-й строки -> ", i+1);
for (j = 0; j < N; j++)
scanf ("%i", &m[i] [j] ) ;// для каждой строки вычислим сумму эл-тов for (i = 0; i < N; i
m[i] [N] = 0; for(j = 0; j < N; j m[i] [N] += m[i] [j];// найдем строку с максимальной суммой
max =0;
for (i = 1; i < N; i++)
if ( m[i] [N] > m[max] [N] ) max = i;
printf("\nB %±-й строке сумма элементов", max+1); printf("максимальна и равна %i\n", m[max][N]);
printf("\пДля завершения нажмите <Enter>\n"); ge

Задача 164

// Проверяет, является ли матрица "магическим" квадратом #include <stdio.h> #include <conio.h>
#define SZ 5 // максимальный размер матрицы [void main ()
int a[SZ] [SZ]; // матрица
int n; // размер проверяемой матрицы
int ok; // матрица - "магический" квадрат
int i,j; // индексы массива
int sum; // сумма эл-тов главной диагонали
int temp; // сумма элементов текущей строки,
// столбца или второй диагонали матрицы
printf("*** МАГИЧЕСКИЙ КВАДРАТ ***\п");
printf("ХпВведите размер матрицы (3..%i) -> ", SZ) ;
scanf("%i", &n);
printf("Введите строки матрицьДп");
printf("После ввода строки, %i целых чисел, ", п);
printf("нажимайте <Enter>\n");
for (i =0; i < n; i++)
printf("->");
for (j =0; j < n; j++)
scanf("%i", &a[i][j]);
ok = 1; // пусть матрица - "магический" квадрат // вычислим сумму элементов главной диагонали sum = 0;
for (i = 0; i < n; i++) sum += a[i][i];
// вычисляем суммы по строкам i = 0; do {
temp =0; // сумма эл-тов текущей строки
for (j = 0; j < n; j++) temp += a[i] [j] ;
(temp != sum) ok = 0; } while (ok && i < n); if ( ok )// здесь сумма элементов каждой строки
// равна сумме элементов главной диагонали
// вычисляем суммы по столбцам j = 0; do {
temp =0; // сумма эл-тов текущего столбца
for (i = 0; i < n; i++)
temp += a[i][j];
if (temp != sum) ok = 0;} while (ok && i < n) ;
if ( ok ,) {
// здесь сумма элементов каждой строки
// равна сумме элементов каждого столбца и
// сумме элементов главной диагонали.
// Вычислим сумму элементов второй
// главной диагонали
temp = 0;
i = n - 1;
for (j = 0; j < n; j++) temp += a[i— ] [j] ;
if (temp != sum) ok = 0; }
printf("Введенная матрица "); if ( !ok )
printf("не "); printf("является \"магическим\"квадратом.\n");
printf("ХпДля завершения нажмите <Enter>"); getch();

Задача 165

// Приветствие #include <stdio.h>
#include <conio.h> void main() {
char name[15]; // имя
char fam[20]; // фамилия
printfC'KaK Вас зовут?\п");
printf("Введите свое имя и фамилию,");
printf("затем нажмите <Enter>") ;
printf("-> ");
scanf("%s", &name);
scanf("%s", sfam);
// функция scanf читает из буфера клавиатуры символы
//до разделителя - пробела
printf("Здравствуйте, Is %s!\n", name, f am) ;
printf("\пДля завершения нажмите <Enter>"); getch()

Задача 166

// Приветствие (посимвольный ввод строки) #include <stdio.h> #include <conio.h> void main()
char name[40]; // имя и отчество пользователя char ch; int i;
printfC'KaK Вас зовут?\п");
printf("(введите свое имя, отчество и нажмите <Enter>"); printf("-> "); i = 0;
while ((ch=getch()) != 13 && i < 40) // пока не нажата
/¦/ клавиша <Enter>
h); name[i++] - ch; }
namefi] = '\0'; printf("ХпЗдравствуйте, %s!\n", name); И
И printf("\Для завершения нажмите <Enter>"); I getch О; И

Задача 167

II // Вычисляет длину строки HI #include <stdio.h> #include <conio.h> void main()
III { char st[80]; // введенная строка int i = 0; // длина строки IB
1 II HI puts("ХпВведите строку и нажмите <Enter>"); Н printf("->"); 111 gets(st); while( st[i++])
III
¦ HI printf("Длина введенной строки: %i\n", i) ; printf("Для завершения работы нажмите <Enter>"); 8^o,

Задача 168

¦ Hi // Посимвольный вывод сообщения I #include <stdio.h> #include <conio.h> #include "dos.h" // для доступа к функции delay void main () I ' {
char msg[] = "\п\гПриветствую великого программиста!\0"; int i; /8номер символа
ш
i = 0;
while(msg[i])
putch (itisg[i delay(150);
printf("\п\пДля завершения нажмите <Enter>"); getch();

Задача 169

// Выводит код символа #include <stdio.h> #include <conio.h> void main()
unsigned char ch;
// Если ch объявить как char, то буквам русского
// алфавита будут соответствовать отрицательные числа
printf("ХпВводите символы.\п");
printf("Для завершения введите точку.\п");
do {
ch = getch();
printf("Символ: %c Код: %i\n", ch, ch) ; } while ( ch != '.');
printf("\п\пДля завершения нажмите <Enter>"); getch();

Задача 170

'// ASCII-таблица кодировки символов #include <stdio.h> #include <conio.h>
^define SM 128
// 0 символы с кодами 0 - 127 // 128 - символы с кодами 128 - 256
d main()
// Если ch объявить как char, то буквам русского
// алфавита будут соответствовать отрицательные числа
unsigned char ch; /'/ символ
int i,j;
printf ("ХпАБСИ-таблица кодировки символов\п"); for (i = 0; i <= 16; i++) // шестнадцать строк { ch = i + SM;
for (j = 1; j <= 8; j++) // восемь колонок i
if (( ch <7 || ch >= 14) && ch !=26)
printf("%3c -%4i", ch, ch) ; else // символы CR, LF, TAB не отображаются
printf("%3c - ", ch, ch) ; ch += 16;
printf("\n");
printf("\пДля завершения нажмите <Enter>"); getch();

Задача 171

// Преобразование прописных букв в строчные #include <stdio.h> #include <conio.h> void main()
unsigned char st[80]; // строка текста
int i; // номер обрабатываемого символа
printf("ХпВведите строку текста и нажмите <Enter>"); printf("->"); gets (st); i = 0;
145
while ( St[i]
if ((st[i] >= 'a' && st[i] <= 'z') || (st[i] >= 'a' && st[i] <= 'n'))
st[i] -= 32;
else if (st[i] >= 'p' && st[i] <= 'я') st[i] -= 80;
printf("\n%s\n", st);
printf("\пДля завершения нажмите <Enter>"); getch();

Задача 172

[// Удаление начальных пробелов из строки !#include <stdio.h> #include <conio.h> pinclude "string.h" void main () {
unsigned char sst[80]; // строка unsigned char dst[80]; // буфер int i,j; printf("Удаление начальных пробелов\п"); printf("Введите строку:");
i=0;
while ((sst[i] - getch()) != 13)
putch(sst [i-sstti] = '\0';
i = 0; j = 0;
// найдем первый символ, отличный от пробела
while( sst[i] && sst[i] == ' ')
// здесь i - номер первого символа, отличного от пробела, // скопируем sst в le (sst[i])
dst [j++] = sst dst[j] = '\0';
printf("ХпСтрока без начальных пробелов:%s\n", dst);
printf("ХпДля завершения нажмите <Enter>"); getch();

Задача 173

// Проверяет, является ли строка целым числом #include <stdio.h> #include <conio.h> void main()
char st[40]; // строка
int i; // номер проверяемого символа
printf("Введите целое число и нажмите <Enter>");
printf("->"),¦
scanf ("%s",&st);
i = 0;
while (st[i] >= '0' && st[i] <= '9')
// здесь st[i] '\0', если введены только printf("Введенная строка "); if (st[i])
printf("не "); printf("является целым числом.\п");
printf("\пДля завершения нажмите <Enter>"); getch();

Задача 175

// Проверяет, является ли введенная стр 147
#include <stdio.h> #include <conio.h> *,#include "string.h" void main ()
char st[20]; // строка
int i; // номер проверяемого символа
printf("ХпВведите шестнадцатеричное число ->"); scanf("%s", Sst);
strupr(st); // преобразуем к верхнему регистру
i = 0;
while ((st[i] >= '0' && st[i] <= '9') || (st[i] >= 'A' && st[i] <= 'F') )
printf("Строка ");
// если st[i] != '\0\
// то i - номер первого ошибочного символа
if ( st[i] )
printf("не "); printf("является шестнадцатеричным числом.\п");
printf("\пДпя завершения нажмите <Enter>"); getch();

Задача 176

// Проверяет, является ли строка ; // дробным числом без знака
#include <stdio.h> #include <conio.h> :void main()
char st[20]; // строка
int i;
// номер проверяемого символа
int ok = 0; // пусть строка — не дробное число
ntf("Введите дробное число и нажмите <Enter>"); printf("->"); scanf("%s", &st);
i = 0;
if (st[i] >= 4' && st[i] <='9') // первый символ - цифра
i i
//за цифрой могут быть еще цифры
while ( st[i] >='l' && st[i] <='9' )
i++;
//за цифрами должна быть точка
if (st[i] — ' . ')
//за точкой должна быть хотя бы одна цифра if (st[i] >='!' && st[i] <='9')
//и ещё цифры
while ( st[i] >= nl' && st[i] <='9' )
i++; ok = 1; // похоже строка - дробное число
printf("Строка %s ",st); if ( st[i] || !ok )
printf("не "); printf("является дробным числом без знака.\n");

printf("\пДля завершения нажмите <Enter>"); getchO;

Задача 177

// Преобразует двоичное число в десятичное #include <stdio.h> #include <conio.h> #include "string.h" void main()
char bin[16]; // изображение двоичного числа
long int dec; // десятичное число
int i; // номер разряда двоичного числа
int v; // вес i-ro разряда двоичного числа
printf("Введите восьмиразрядное двоичное число "); printf("n нажмите <Enter>") ; printf("->"); scanf("%s", &bin);
dec = 0;
v = 1; // вес младшего (0-го) разряда двоичного числа
for ( i = strlen(bin) -1; i >= 0; i—)
if ( bin[i] == Ч1 ) dec += v;
v *= 2; // вес следующего разряда }
printf("Двоичному числу %s", bin); printf("соответствует десятичное %d", dec);
printf("\пДля завершения нажмите <Enter>"); getch();

Задача 178

Ш/ Преобразует шестнадцатеричное число в десятичное I// разобраться с переполнением! ¦include <stdio.h> #include <conio.h> |.#include "string.h" 'Void main() I
char st[5]; // шестнадцатеричное число
unsigned int dec;// десятичное число
int v; // вес разряда шестнадцатеричного числа
int err =0; // err == 1 - в строке недопустимый символ
int i;
ntf("Введите шестнадцатеричное "); printf("(не более 4-х знаков) число\п"); printf("-> "); scanf("%s",&st);
// преобразуем введенную строку к верхнему регистру strupr(st);
dec = 0;
v = 1; // вес младшего разряда шестнадцатеричного
// числа
for ( i = strlen(st) -1; i >= 0; i—) {
//printf("\n%d\n",v); if (st[i] >= '01 && art til] <= '9') dec += v * (st[i]- 48); // (int)'0'=48, (int)'l'=49
// и т.д. else if (st[i] >= 'A' && st[i] <= 'F')
// (int)'A'=65, (int)'B'=66 и т.д. // А обозначает 10, В - 11 и т.д. dec += v * (st[i]- 55); else // недопустимый символ { err = 1; break; } v *= 16; // вес следующего разряда
if ( !err ) {
printf("Шестнадцатеричному числу %s ", st); printf("соответствует десятичное %u\n", dec);
else (
printf("Строка %s не является ", st); printf("шестнадцатеричным числом\п"); }
printf("\пДля завершения нажмите <Enter>"); getch();

Задача 179

// Преобразует десятичное число в другую // систему счисления (от 2-х до 10-ти) #include <stdio.h> #include <conio.h> void main()
int osn, // основание системы счисления n, // исходное число en, // копия исходного числа г; // остаток от деления числа //на основание сист. счисл. char st[17]; // представление числа в заданной
// системе счисления int i;
printf("ХВведите целое число ->");
scanf("%d", &n);
printf("Введите основание системы счисления ->");
scanf("%d", &osn);
en = п;
// делим исходное число на основание системы
// счисления до тех пор, пока остаток от деления
// больше основания системы счисления.
// Остаток от деления на каждом щаге - очередная цифра
st[16] ='\0';
i = 15;
do {
г = n % osn; // очередная цифра
n = n / osn; // целая часть деления
// printf("цифра:%d остаток:%d\n", r,n);
st[i—] = г + 48; // преобразование цифры в символ } while ( n > 0);
// "сдвинем" сформированную строку в начало
int j = 0; while(st[i])
st [j++] = st St[j] = '\0';
152
i— ] = ' ';
printf("Десятичному числу %d соответствует ", en);
printf("число %s по основанию %d\n", st, osn) ;
printf("ХпДля завершения нажмите <Enter>"); getch();

Задача 180

// Преобразует десятичное число в шестнадцатеричное #include <stdio.h> #include <conio.h> void main()
int n; // Исходное число
int r; // Остаток от деления числа на основание
// системы счисления char st[5]; // Представление числа в заданной
// системе, счисления int i;
printf("\пПреобразование десятичного числа ); printf("в шестнадцатеричное\п") ; printf("Введите целое число ->") ; scanf("%d", &n);
// делим исходное число на 16 до тех пор, // пока остаток от деления больше 16
printf("\пДесятичному числу %d", n) ;
printf(" соотвествует шестнадцатеричное ");
st[5] = '\0';
i = 4;
do {
r=n%16; // очередная цифра
n = n / 16; // целая часть рез-та деления
if (г < 10) /
st[i— ] = г + 48; // (int)'0'=48, (int) Ч'=49 и т. д. else st[i— ] = г + 55; // (int) 'A'=65, (int) 'B'==66
// и т. д.
} while ( n > 0);
// удалим начальные пробелы
int j = 0; while( st[i] )
st[j] = '\0'; printf("%s\n", st) ;
printf("\пДля завершения нажмите <Enter>");
getch();

Задача 181

// Вычисление значения арифметического выражения 1linclude <stdio.h> (#include <conio.h> ftinclude "stdlib.h" void main() {
char st[40]; // строка
char buf[10]; // изображение очередного числа
char op; // оператор
int rez; // значение выражения
int n; // очередное число
int i,j;
printf("ХпВведите арифметическое выражение,\п"); printf("например, 45+5-3-125+2 и нажмите <Enter>"); printf("(пробелы и другие знаки недопустимы)\п"); 'printf("->"); scanf("%s", &st);
rez = 0; // значение выражения op = ' ; i = j = 0; while( st[i] )
// выделить число
0;
while (st[i] >= '0' && st[i] <= '9')
buf[j++] = st[i++]; buf[j] = '\0';
n = atoi(buf); // преобразовать строку в целое
// выполнить действие
switch ( op )
case '+': rez += n; break;
case '-': rez -= n; break;
case ' ': rez = n; break; // первое число примера
// выделить знак операции op = st
printf("Значение введенного выражения: %d", rez); printf("\пДля завершения нажмите <Enter>"); getch();

Задача 182

// Итоги летней Олимпиады 2000 года linclude "stdio.h" #include "conio.h" #include "string.h"
idefine NC 10 void main()
//количество стран-участниц
char *strana[] = {"Австрия\0","ГерманияХО", "Канада\0","Китай\0","Корея\0", "НорвегияХО","Россия\0", "С311А\0", "Франция\0", "Япония\0" } ;
// таблица результатов
int result[NC+1][5];
// NC+1-ая строка используется как буфер
// при сортировке табли 155
int i,j;
int max; // номер строки таблицы, в которой
// количество очков максимально char buf[9]; // используется при сортировке
printf("\n*** Сидней 2000 ***\п");
printf("Введите в одной строке количество золотых,\п");
printf("серебряных и бронзовых медалей\п");
// ввод исходных данных for (i = 0; i < NC; i++)
printf("%s ->", strana[i]);
scanf("%i%i%i", &result[i][0], // золотых
&result[i][1], // серебряных
Sresult[i][2]); // бронзовых
// вычислим общее количество медалей и очков
for (i = 0; i < NC; i++)
{
result[i] [3] =
result[i] [0]+result[i] [1]+result[i] [2] ; result[i] [4] =
result[i][0]*7+result[i] [1]*6+result [i] [2]*5;
// сортировка массива в соответствии с количеством очков // методом простого выбора for (i = 0; i < NC-1;
//в части таблицы, начиная со строки i, // найти j-ую строку, в которой элемент // result[j][5] максимальный
max = i; // пусть это строка с номером i for (j = i+1; j < NC; j++)
if (result[j][4] > result[max][4]) max = j;
// обменяем 1-ую строку со строкой с номером max //в качестве буфера используем последнюю cpy(buf,strana[i]) ; strcpy(strana[i],strana[max]); strcpy(strana[max],buf); for (j = 0; j < 5; j++)
result [NC] [j] = result [i] [j] ; for (j = 0; j < 5; j++) #
result[i][j] = result[max][j]; for (j = 0; j < 5; j++)
result[max][j] = result[NC][j];
// здесь таблица упорядочена
printf("Итоги летней Олимпиады в Сиднее, 2000 г.\п");
printf("%12s%8s%8s%8s%8s%8s","Страна","Золото",
"Серебро","Бронза","Всего","Очков"); for (i =0; i < NC; i++) {
printf("\n%12s", strana[i]); for (j = 0; j < 5; j++)
printf("%8i", result[i][j]);
printf("\пДля завершения нажмите <Enter>"); getch();

Задача 183

// Игра "Угадай число" #include "stdio.h" #include "conio.h" #include "stdlib.h" #include "time.h"
#define N 3 // уровень сложности - количество цифр в числе #define DEBUG // режим отладки
void main ()
char igrok[N]; II комбинация игрока
char comp[N]; II комбинация компьюте 157
int a[N]; // a[i] == 1, если i-ая цифра
// компьютера совпала с одной из цифр игрока
int ugad; // угадано чисел
int mesto; //из них на своих местах
int i,j;
time t t;
// индексы
printf("ХпКомпьютер задумал трехзначное число.\п"); printf("Bbi должны его отгадать . \п") ; printf("После ввода очередного числа вам будет "); printf("сообщено, сколько цифр угадано, и сколько"); printf("из них находится на своих местах.\п"); printf("После ввода числа нажимайте <Enter>\n");
srand((unsigned)time(&t) );
for (i = 0; i < N; i++) // компьютер "задумывает" число
comp[i] = rand() % 10 + 48; // 48 - код символа '0' #ifdef DEBUG
printf("Компьютер задумал: "); for (i = 0; i < N; i++)
printf("%c", comp[i]); printf("\n"); ttendif do {
printf("\пВаш вариант-> ");
scanf("%s", Sigrok); // массив вводим как строку
for (i = 0; i < N; i++) a[i] = 0;
// проверим, сколько цифр угадано ugad =0;
for (i =0; i < N; i++) // каждую цифру игрока for (j = 0; j < N; j++) // сравним с цифрами
// компьютера
if ((igrok[i] ==comp[j]) && !
{ ugad++;
] = 1; // запретим сравнивать
// эту цифру компьютера с оставшимися, // еще не проверенными, цифрами игрока
break;
}
// проверим, сколько на своих местах
mesto = 0;
for (i =0; i < N; i++)
if (igrok[i] == comp[i]) mesto++;
printf("Угадано: %i. На своих местах: %i", \
ugad, mesto);
} while ((ugad < N) ]| (mesto < N) ) ; printf("\n*** ВЫ УГАДАЛИ ЧИСЛО! ***\п");
printf("\пДля завершения нажмите <Enter>"); getch ();

Задача 184

II Телеграф - передача сообщений при помощи азбуки Морзе
#include "stdio.h"
#include "conio.h"
#include "string.h" // strlen
#include "dos.h" // delay
// параметры передачи
#define TONE 100 // частота сигнала (гц) #define LI 50 // длительность (мс) "точки" #define L2 100 // длительность (мс) "тире" #define L3 50 // пауза (мс) между точками и тире одной
// буквы
#define L4 100 // пауза (мс) между буквами #define L5 150 // пауза (мс) между словами
void main()
// кодировка букв русского алфавита char *morse[] = {
" _ II II Н Н_____Ч II II / /7\ П О Т1
,-..., .---,--. , //А, Ь,В,1
II Д,Е,Ж,3
// и,й,к,л
// м,н,о,-п
// Р,С,Т,У
// Ф,Х,Ц,Ч
// ш,щ,ъ,ы
// ь,э,ю,я
unsigned char mes[80]; // сообщение
char sim[4]; // символ в кодировке Морзе -
// последовательность точек и тире
char znak; // "передаваемый" знак - тире или точка int i,j; // номер символа и знака
puts("\n*** Телеграф ***");
puts("Введите сообщение, которое надо передать");
puts("(используйте только заглавные русские буквы)");
printf("->");
gets(mes);
for (i =0; i < strlen(mes); i++)

if (mes[i] >= 'A1 && mes[i] <='Я')
{
// определим код очередной буквы (ф-я Ord) сообщения //и получим из таблицы кодировки соответствующий // элемент массива - последовательность точек и тире strcpy(sim,morse[mes[i]-128]); j = 0;
do
if (sim[j] == '-' II sim[j] == '.') {
putch(sim[j++]);
sound(1000);
if (sim[j] == '.') delay(LI);
else delay(L2);
nosound;
delay(L3);
le ( sim[j] != ' ' && j <4 ); delay(L4); // пауза между буквами
else
if (mes[i] == ' ') // пробел между словами {
printf(" "); // пробел между словами сообщения
delay(L5);
puts("\пСообщение передано!");
puts("Для завершения работы нажмите <Enter>");
getch ();

Задача 185

¦include <stdio.h> #include <conio.h> #include <math.h> // для доступа" к М PI
// объем цилиндра
float veil(float h, float r)
return(M PI*r*r*h);
void main ()
float r,h; // высота и радиус основания цилиндра
float v; // объем цилиндра
puts("Вычисление объема цилиндра");
printf("Введите высоту и радиус основания ->");
scanf ("%'f%f", &h, &r) ;
v = veil(h, r);
printf("Объем цилиндра %3.2f\n", v);
printf("Для завершения нажмите <Enter>");
getch();

Задача 186

I// Функция max возвращает максимальное из двух чисел int max(int a, int b)
if (a > b)
return(a); else
return(b);

Задача 187

// Функция compare возвращает результат сравнения чисел //в виде символа отношения #include "stdio.h" #include "conio.h"
char compare(int a, int b)
char res;
if (a > b) res = '>';
else if (a < b) res = '<';
else res = '='; return(res);
void main()
int xl,x2; // сравниваемые числа char res; // результат Сравнения
puts("Введите два целых числа и нажмите <Enter>");
printf("->");
scanf("%i%i", &xl, &x2);
res = compare(xl,x2); // вызов функции программиста
printf("%i %c %i\n", xl, res, x2);
puts("\nfljiH завершения работы программы \ нажмите <Enter>"); getch();
// Вычисляет сопротивление электрической цепи float sopr( float rl, float r2, int t)
// rl,r2 - величины сопротивлений
// t - тип соединения:
// 1 - последовательное;
// 2 - параллельное.
// если тип соединения указан неверно,
//то функция возвращает -1
float r;
if ( t==l) r = rl + r2;
else if (t== 2) г = rl*r2/ (rl+r2);
else r = -1; return(r); }

Задача 191

// Функция "факториал" #include "stdio.h" #include "conio.h"
unsigned int factor(int x) {
unsigned int f = 1;
for (int i = 2; i <= x; i++)
f *= i;
return(f) ; }
void main() {
unsigned int f;
puts("ХпТаблица факториалов"); for (int n = 1; n <= 8; n++) {
f = factor(n); printf("%2i %u\n", n, f); I
puts("\mtnH завершения работы нажмите <Enter>"); getch();

Задача 192

// Функция вычисляет доход по вкладу
float dohod(float sum, // сумма вклада
float stavka, *// процентная ставка (годовых)
int srok) // срок вклада (дней)
return(sum*(stavka/100/365)*srok); // 365 кол-во дней
// году

Задача 193

// Функция проверяет, является ли символ гласной буквой int glasn(char ch)
static char gl[] ="АаЕеИиОоУуЫыЭэЮюЯя\0"; int i = 0;
while (gl[i] && gl[i] ! = ch)
if ( gl[i] )
return(1); else return(0);

Задача 195

// Функция upcase
linclude "stdio.h"
¦ #include "conio.h"
// функция преобразования строчных букв в прописные
char* upcase(char *st)
{
int i = 0;
while ( st[i] )
7
164
(st[i] >= 'a' && st[i] <= 'z' || // латинские
st[i] >= 'a' && st[i] <= 'п') // русские St'ti] -= 32;
else if (st[i] >= 'p' && st[i] <= 'я') st[i] -= 80;
return st;
// пример использования функции upcase void main()
char st[80];"Введите строку текста и нажмите <Enter>");
printf("->");
gets(st);
puts(upcase(st));
puts("\n,IlnH завершения нажмите <Enter>") ; getch();

Задача 196

// Функция решения квадратного уравнения ¦include "stdio.h" #include "conio.h" #include "math.h"

int kvadur(float a, float b, float с, // коэф-ты уравнения
float *xl, float *x2) // корни уравнения // значение функции - количество корней // или -1, если неверные исходные данные
[
float d; // дискриминант
if (a == 0) return(-1);
d = b*b-4*a*c;
if (d < 0)
return(0);
// уравнение не имеет решения
*xl = (-b+sqrt(d))/(2*a); *х2 = (-b-sqrt(d))/(2*a);
if (*xl != *х2) return(2); else return(1);// проверка работоспособности функции . void main()
float a,b,c; // коэффициенты уравнения float xl,x2; // корни уравнения int n; // кол-во корней
puts("ХпРешение квадратного уравнения");
puts("Введите в одной строке коэффициенты и нажмите\
<Enter>");
printf("->");
scanf("%f%f%f", &a, &b, &c);
switch (kvadur(a,b,c,&xl,&x2)) r
case -1: puts("Ошибка исходных данных.");
break; case 0: puts("Уравнение не имеет решения.");
break; case 1: printf("Корни одинаковые: x=%3.2f", xl) ;
break; case 2: printf("xl=%3.2f x2=%3.2f", xl, x2);
puts("\nfljiH завершения работы нажмите <Enter>"); getch();
// Функция starline выводит строку из звездочек #include "stdio.h" #include "conio.h"
// выводит строку из звездочек
void starline(int len)
{
for (int i = 0; i < len; i++) putch('*');

void main()

starline(10);
puts("\nfljra завершения работы нажмите <Enter>");
getch();