Р. А. Юсупов, С. Н. Искандарова, Ш. Мирзанова C/C++ тилида топшириқ ва масалалар Самарқанд – 2013 йил


Download 1.35 Mb.
bet63/105
Sana13.04.2023
Hajmi1.35 Mb.
#1353566
TuriУчебник
1   ...   59   60   61   62   63   64   65   66   ...   105
Bog'liq
CPP masalalari1


Часть II. Решения 133
printf("Введите образец для поиска (целое число) -> ");
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);
}
else
printf("Образец в массиве не найденХп");
bye:
printf("\пДля завершения работы нажмите ");
getch();
}
Задача 157
// Анализ роста учеников
#include
#include
#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("Для завершения введите О и нажмите \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("\пДля завершения нажмите ");
getch();

Задача 158


// Вычисление суммы элементов массива (по столбцам)
#include
#include
idefine ROW 3 // кол-во строк
#define COL 5 // кол-во столбцов
void mainO
{
int a[ROW][COL]; // массив
int s[COL]; // сумма элементов
int i,j;
printf("\пВведите массивХп");
printf("После ввода элементов каждой строки,");
printf("\n%i целых чисел, нажимайте \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");
}
// "очистим" массив s
for (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];
136 C/C++ в задачах и примерах
printf (" \п") ;
for (i = 0; i < COL; i++)
printf("%i ", s[i]);
printf("\пДля завершения нажмите ");
getch();
}
Задача 160
// Обработка результатов экзамена
#include
#include
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 (" ") ;

Download 1.35 Mb.

Do'stlaringiz bilan baham:
1   ...   59   60   61   62   63   64   65   66   ...   105




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling