3. ввести с клавиатуры по одному последовательность целых чисел (конец последовательности – число 0). Определить их сумму, максимальное и минимальное число, количество введенных чисел и их среднее арифметическое.
Пусть s – искомая сумма,
min, max – минимальное и максимальное из введенных чисел,
count – количество введенных чисел,
sred – среднее арифметическое,
n – очередное число.
Тогда алгоритм решения задачи можно описать следующим образом:
1. обнуляем сумму s = 0,
2. вводим первое число n,
3. если оно не равно нулю, то
4. принимаем его значение за min и max
5. количество введенных чисел count = 1
6. увеличиваем сумму на введенное число s = s + n
7. входим в цикл ввода:
8. вводим очередное число n,
9. если оно не равно нулю, то
10. количество введенных чисел увеличиваем на 1: count = count+1
11. увеличиваем сумму на введенное число s = s + n
12. если оно меньше min, то min = n,
13. если оно больше max, то max = n,
14. повторяем цикл до тех пор, пока n # 0 – это и будет условием продолжения цикла.
Создадим интерфейс этой задачи – взаимодействие программы с пользователем, то есть что должно выводиться на экран:
Первое число: 3
Очередное число: 8
Очередное число: 1
Очередное число: -2
Очередное число: 0
Сумма = 10
Количество чисел = 4
min = -2
max = 8
Среднее арифметическое = 2.50
Схема алгоритма:
#include <stdio.h>
#include <conio.h>
#include <math.h>
{
int min, max, n, count = 0;
float sred, s = 0.0;
printf(“\nВведите первое число:”);
scanf(“%d”, &n);
if (n==0)
min = n; // за минимум и максимум принимаем
max = n; //первое введенное число
count = 1; //введено одно число
while (n!=0)
{
printf(“\nВведите очередное число:”);
scanf(“%d”, &n);
if (n==0)
count++;
if (n > max)
max = n;
if (n < min)
min = n;
}
printf(“\nСумма = %4.2f”, s);
printf(“\nКоличество чисел = %d”, count);
printf(“\nmin = %d”, min);
printf(“\nmax = %d”, max);
sred = s / count;
printf(“\n Среднее арифметическое = %6.2f”,sred);
}
Часто встречающиеся ошибки программирования:
1. Использование после условия точки с запятой, которая, как правило, приводит к появлению бесконечного цикла:
int i=1, s = 0;
while (i<=100);
{
}
2. Условие не заключено в скобки:
int i=1, s = 0;
while i<=100
{
}
3. Отсутствие фигурных скобок, в которые заключается тело цикла:
int i=1, s = 0;
while (i<=100)
Это может привести к появлению бесконечных циклов.
4.Отсутствие в теле цикла оператора, изменяющего условие:
int i=1, s = 0;
while (i<=100)
{
}
Это тоже приводит к появлению бесконечных циклов.
У циклов с постусловием (циклов типа ДО) проверка условия продолжения цикла производится после выполнения операторов, составляющих тело цикла: