Задачник и решебник (1087980), страница 14
Текст из файла (страница 14)
Решенияfor (i = 0; i < SIZE; i++){printf("a[%i] ->",i+l);scanf("%i", &a[i]);if (a[i] != 0) n++;}printf("B массиве %i ненулевых элемента.\n", n ) ;printf("\пДля завершения нажмите <Enter>");getch();}Задача 144// Поиск минимального элемента массива#include <stdio.h>#include <conio.h>#define HB 5// размер массиваvoid mainO{int a[HB]; // массивint min;// номер минимального элементаint i;// индекс массиваprintf("ХпПоиск минимального элемента массиваХп");printf("Введите в одной строке элементы массиваЛп");printf("%i целых чисел, и нажмите <Enter>\n", НВ);printf("-> " ) ;for (i = 0; i < HB; i4-+)scanf("%i",&a[i]);min = 0 ; // предположим, что первый эл-т минимальный// cpaBHPiM оставшиеся эл-ты массива с минимальным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();123^124C/C-t-^ в задачах и примерахЗадача 145// Поиск минимального элемента массива// (доступ к элементам при помощи указателя)#include <stdio.h>#include <conio.h>#define HB 5// размер массиваvoid mainO{int a[HB];// массивint *min;// номер минимального элементаint *p;// указатель на элемент массиваint i;printf("\пПоиск минимального элемента массиваХп");printf("Введите в одной строке элементы массива,\п");printf("%i целых чисел, и нажмите <Enter>\n", НВ);printf("-> " ) ;р = а;for (i = 1; i <= НВ; 1++)scanf("%i", Р++);min = a;// пусть первый элемент минимальныйр = а + 1;// теперь р содержит адрес второго элемента// сравним оставшиеся эл-ты массива с минимал^>нымfor (i = 2; i <= НВ; i++){if (*p < *min) min = p;P++; / / к следующему элементу}printf("Минимальный элемент массива: %i\n", *min);printf("\пДля завершения нажмите <Enter>");getch();}Задача 148// Вычисление средней (за неделю) температуры воздуха#include <stdio.h>#include <conio.h>Часть //.
Решений125v o i d 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[ij);sum += t[i];}sred = sum / 7;printf("ХпСредняя температура за неделю: %2.1f", sred);printf("\пДля завершения работы нажмите <Enter>");getch();}Задача 149// Поиск в массивеtinclude <stdio.h>#include <conio.h>tdefine HB 5void mainO{int m[HB]; //int obr;//int found; //int i;методом перебора элементовмассив целыхобразец для поискапризнак совпадения с образцомprintf("ХпПоиск в массиве методом перебораХп");printf("Введите в одной строке %i целыхХп", НВ);printf("чисел и нажмите <Enter>\n");printf("->");126С/С-*-*- в задачах и примерахf o r ( i = 0 ; i < НВ; i++)scanf("%i", &m[i]);printf("Введите образец для поиска (целое число)->");scanf("%i", &obr);// поиск простым переборомfound = 0;i == 0;// проверяем с первого элемента массиваdo {if (m[i] == obr )found = 1 ;// совпадение с образцомelse i++;// переход к следующему элементу} while (!found && i < НВ);if ( found )printf("Совпадение с элементом номер %i", i+1);elseprintf("Совпадений с образцом нет");printf("\пДля завершения работы нажмите <Enter>");getch();}Задача 150// Проверяет, отсортрфован ли массив по возрастанию#include <stdio.h>#include <conio.h>#define НВ 5void mainO{int a[HB];// массивint k;// индексint ok;// 1 - последовательность неубывающаяprintf("Проверка, упорядочен ли массив\n");printf("по возрастанию\п");printf("Введите массив (%i целых чисел ", НВ);printf("в одной строке) и нажмите <Enter>\n");for (к = 0; к < НВ; k-f+)scanf("%i", &а[к]);Часть 11.
Решенияк = 0;ok = 1;do {if (a[k] > a[k+l])ok = 0;k++;} while ( к < HB-1 && ok);printf("Элементы массива " ) ;if ( !ok )printf("не упорядочены " ) ;printf("по возрастаниюХп");printf("\пДля завершения работы нажмите <Enter>");getch();Задача 151// Проверяет, сколько раз число встречается в массиве#include <stdio.h>tinclude <conio.h>#define HB 5 // размер массиваvoid mainO{int a[HE]; // массивint obr;// искомое число (образец)int n;// кол-во элементов массива,// значение которых равно образцуint i;// индексprintf("Введите массив (%i ", НВ);printf("целых чисел в одной строке)\п");printf("->");for (i = 0; i < HB; i++)scanf("%i",&a[i3);printf("Введите образец для сравнения ->");scanf("%i", &obr);n = 0;for (i « 0 ; i < HB; i++)if (a[i] == obr) n++;f£7128C/C-^-f- в задачах и примерахif ( п )printf("Число %i встречается в массиве %i раз",оЬг, п ) ;else printf("Ни один элемент массива не равен образцу");printf("ХпДля завершения работы нажмите <Enter>");getch();}Задача 153// Сортировка массива методом прямого выбора#include <stdio.h>#include <conio.h>#define SZ 5 // размер массиваvoid main 0{int a[SZ]; // массив of integer;int i;// номер элемента, от которого ведется поиск// минимального эл-таint min;// номер минимального элемента в части// массива от i до верхней границы массиваint j;// номер эл-та, сравниваемого с минимальнымint buf;// используется при обмене эл-тов массиваint к;// индекс для ввода и выводаprintf("ХпСортировка массиваХп");printf("Введите массив (в одной строке %i", SZ);printf("целых чисел) и нажмите <Enter>\n");printf("->");for (к = 0; к < SZ; к++)scanf("%i", &а[к]);printf("Сортировка..Лп");for (i = 0; i < SZ-1; i++){// поиск минимального эл~та/ / в части массива от a[i] до последнего эл-таmin = i;for (j == i+1; j < SZ; j++)if (a[j] < a[min]) min = j;// поменяем местами a [min] и a[i]Часть Ik Решенияbuf = а[i];a[i] = a[min];a[itiin] = buf;// цикл сортировки закончен// отладочная печать// выведем промежуточное состояние массиваfor (к = 0 ; к < SZ; к++)printf ("%i ", ,а[к]);printf("\п");}// выведем отсортированный массивprintf("Массив отсортирован\п");for (к = 0; к < SZ; к++)printf("%i ", а[к]);printf("\п");printf("\пДля завершения работы нажмите <Enter>");getch();Задача 154// Сортировка массива методом "пузырька"#include <stdio.h>#include <conio.h>#define SZ 5void main(){int a[SZ];int i;// счетчик цикловdint к;// текущий индекс элемента массиваint buf;printf("ХпСортировка массива методом \"пузырька\"\п");printf("Введите массив (в одной строке %i ", SZ);printf("целых чисел) и нажмите <Enter>\n");for (к = 0; к < SZ; k+-f)scanf("%i", &а[к]);printf("Сортировка...\п");129130С/С-^-^- в задачах и примерахfor((i = 0; i < S Z - 1 ; i++)for(k = 0; к < S Z - 1 ; k++){if (a[k] > a[k+l]){// обменяем к-й и {к+1)-й элементыbuf = а[к];а[к] = а[к+1];а[к+1] = buf;}}// отладочная печать - состояние// массива после очередного цикла сортировкиfor (к = 0 ; к < SZ; к++)printf("%i ",а[к]);printf("\п");}printf("Массив отсортированХп");for (к = 0 ; к < SZ; к++)printf("%i ",а[к]);printf("\п\пДля завершения работы нажмите <Enter>");getch();}Задача 155// Объединение двух упорядоченных массивов в один#include <stdio.h>#include <conio.h>#define SZ 5 // размер исходь1ых массивовvoid main О{int a[SZ], b[SZ]; // исходные массивыint c[SZ*2];// массив - результатint k,i,m;// индексы массивов a, b и сprintf("Объединение двух упорядоченных " ) ;printf("по возрастанию массивов\п");printf("Введите первый массив " ) ;Часть II.
Решенияprintf("(%i целых чисел) -> ", SZ);for (к = 0; к < SZ; к++)scanf("%i", &а[к]);printf("Введите второй массив " ) ;printf("(%i целых чисел) -> ", SZ);for (i = 0 ; i < SZ; i++)scanf("%i", &b[i]);к = i = m = 0;do {if (a[k] < b[i] )c[m++] = a[k++];elseif (a[k] > b[i])c[m++] = b[i++];else {с[ш++] = a[k++];c[m++] = b[i++] ;}} while ( к < SZ && i < SZ); // один из двух исходных// массивов полностью не переписан в массив Сwhile (к < SZ) // есть эл-ты А, не переписанные в Сс[т++] = а[к++];while (1 < SZ) // есть эл-ты В, не переписанные в Сс[т++] = b[i++];printf("Массив - результат: \ п " ) ;for (1 = 0; i < 2 * SZ; i++)printf("%i ", c[i]);printf("Для завершения работы нажмите <Enter>\n");getch();}Задача 156// Бинарный поиск в упорядоченном массиве#include <stdio.h>#include <conio.h>131132C/C-t"i- в задачах it примерах#define SZ 10// размер массиваvoid main(){int a[SZ]; // массив целыхint obr;// образец для поискаint ok;// 1 - массив упорядоченint verh,niz;// границы части массива, в которой// выполняется поискint sred;// индекс среднего элемента в областиint found;// 1 - поиск успешенint п;// счетчик сравнений с образцом// поискаint i;// ввод массиваprintf("*** Бинарный поиск");printf("в упорядоченном массиве * * * \ п " ) ;printf("Введите массив (в одной строке %i ", S Z ) ;printf("целых чисел) и нажмите <Enter>\n");printf("->");for (i = 0; i < SZ; i++)scanf("%i", &a[i]);// проверим, упорядочен ли массив по возрастаниюок = 1; // пусть массив упорядоченi = 0;doif (a[i] <= a[i-bl])i+-»-;else ok = 0;while (ok && i < SZ - 1 ) ;if ( !ok) {puts("Введенный массив не является");puts("упорядоченным по возрастаниюХп");goto bye;}Часть II.
Решения133printf("Введите образец для поиска (целое число) -> " ) ;scanf("%i", &obr);// бинарный поискverh = 0;niz =^ SZ - 1;found = 0;n = 0;do {sred = (niz-verh) / 2 + verh; // делим массив пополамn++;if (a[sred] == obr)found = 1;else/ / в какой части, в верхней или в нижней,// может находиться искомый элемент?if ( obr < а[sred])niz = sred-1;/ / в верхнейelse verh = sred+1;// в нижней} while (verh <= niz && !found);if (found) {printf("Совпадение с элементом номер %i ", sred);printf("Выполнено %i сравнений" , n ) ;}elseprintf("Образец в массиве не найденХп");bye:printf("\пДля завершения работы нажмите <Enter>");getch();}Задача 157// Анализ роста учеников#include <stdio.h>#include <conio.h>#define SZ 30//максимальное кол-во учениковvoid main О{int r;// рост ученика134С/С-^"*- в задачах и примерахint rost[SZ]; //int п = 0;////float sred;//int m = 0;////int sum = 0 ; //int i == 0;рост всех учениковкол-во учеников, о которыхвведены сведениясредний росткол-во учеников, у которыхрост больше среднегосуммарный ростprintf("*** Анализ роста учеников ***\п");printf("Вводите рост (см) учениковХп");printf("Для завершения введите О и нажмите <Enter>\n");do {printf("-> " ) ;scanf("%i", &r);if ( r ){rost[i++] = r;sum += r;П+-1-;}} 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();Часть II.
РешенияЗадача 158// Вычисление суммы элементов массива (по столбцам)#include <stdio.h>#include <conio.h>idefine ROW 3// кол-во строк#define COL 5// кол-во столбцовvoid mainO{int a[ROW][COL]; // массивint s[COL];// сумма элементовint i,j;printf("\пВведите массивХп");printf("После ввода элементов каждой строки,");printf("\n%i целых чисел, нажимайте <Enter>\n", COL);for (i = 0; i < ROW; i-f+) // 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");}// "очистим" массив sfor (i = 0; i < COL; i++)s[i3 « 0;// обработкаfor (j = 0 ; j < COL; j+-f-)// для каждого столбцаfor (i = 0; i < ROW; i++) // суммируем эл-тыs[j] += a[i3[j];135136C/C++ в задачах и примерахprintf ("for (i = 0; i < COL; i++)printf("%i ", s[i]);\п") ;printf("\пДля завершения нажмите <Enter>");getch();}Задача 160/ / Обработка результатов экзамена#include <stciio.h>#include <conio.h>void main(){int n[6];// количество двоек, ..., пятерокint s = 0; // всего оценокfloat p[6]; // процент каждой оценкиchar *mes[6] ={"\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]/3*100;puts("Результаты экзамена");puts ("") ;for (i = 5; i >= 2; i—)printf("%8s %2i%2.0f%\n",mes[i], n[i], p[i]);puts ("") ;Часть II.