Заменить все элементы массива числом 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;

Объяснение кода листинга программы

  1. Объявляются две переменные типа int - a и b.
  2. С помощью функции scanf в переменную a считывается целое число, которое затем выводится на экран.
  3. С помощью функции scanf в переменную b считывается целое число, которое затем выводится на экран.
  4. С помощью функции fflush в буфер ввода-вывода очищается предыдущее значение, чтобы избежать эффекта фантомного чтения и обеспечить корректное считывание следующего числа.
  5. В цикле for перебираются все элементы массива arr.
  6. Если значение текущего элемента меньше значения переменной a, то его заменяют значением переменной b.
  7. Цикл завершается, когда будет выполнено условие i < MAX.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.6 из 5
Похожие ответы