Заменить все элементы массива числом b, вводимый с клавиатуры - C (СИ)
Формулировка задачи:
Как реализовать пункт Г?
#include <stdio.h> #include <locale.h> #include <math.h> /* **************************************************************************** * В ячейках массива находится прибыль магазина за каждый день недели (7 дней). * а) Найти номера дней с максимальным и минимальным доходом. * б) Определить: сколько дней подряд держалась максимальная прибыль? * в) Найти среднее значение прибыли для дней с нечетным порядковым номером. * г) Заменить все элементы массива числом b, вводимый с клавиатуры, если * элемент меньше заданного числа а. * ***************************************************************************/ #define MAX 7 int main (void) {setlocale(LC_ALL,"rus"); double arr[MAX]; double max, min, middle; //максимум, минимум, среднее int maxar, minar; //соответствующий день недели int i; /* a: Найти номера дней с максимальным и минимальным доходом. */ for (i=0; i<MAX; i++) { // получаем элементы массива: printf("Введите %i элемент массива: ", i); scanf("%lf", &arr[i]); fflush(stdin); // определяем минимум и максимум: if (i<1) { max = min = arr[i]; maxar = minar = i; } else if (arr[i] < min) { min = arr[i]; minar = i; } if (arr[i] > max) { max = arr[i]; maxar = i; } } // выводим результаты на экран: printf("максимальная прибыль была в: %d день\n", maxar+1); printf("минимальная прибыль была в: %d день\n", minar+1); /* б: Определить сколько дней подряд держалась максимальная прибыль? */ int days = 0; // дни подряд for (i=maxar; i<MAX; i++) { if (arr[i] == max) { if (days == 0) days = 1; //если первый раз else //если мы не в самом начале цикла if (arr[i-1] == max) days++; } } // выводим результаты на экран: printf("Максимальная прибыль держалась %d дней подряд\n", days); /* в: Найти среднее значение прибыли для дней с нечетным порядковым номером. */ int c; for (i=0; i<MAX; i+=2) { if (i < 2) { middle = arr[i]; c = 1; } else { middle += arr[i]; c++; } } middle /= (c * 1.0); printf("Средняя прибыль по нечетным дням: %lf\n", middle); /* осталось реализовать пункт Г... */ return 0; }
Решение задачи: «Заменить все элементы массива числом b, вводимый с клавиатуры»
textual
Листинг программы
int a, b; printf("a = "); scanf("%d", &a); printf("b = "); scanf("%d", &b); fflush(stdin); for (i=0; i<MAX; i++) if(arr[i] < a) arr[i] = b;
Объяснение кода листинга программы
- Объявляются две переменные типа int -
a
иb
. - С помощью функции scanf в переменную
a
считывается целое число, которое затем выводится на экран. - С помощью функции scanf в переменную
b
считывается целое число, которое затем выводится на экран. - С помощью функции fflush в буфер ввода-вывода очищается предыдущее значение, чтобы избежать эффекта
фантомного чтения
и обеспечить корректное считывание следующего числа. - В цикле for перебираются все элементы массива
arr
. - Если значение текущего элемента меньше значения переменной
a
, то его заменяют значением переменнойb
. - Цикл завершается, когда будет выполнено условие
i < MAX
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д