Найти сумму самого дорогого заказа - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Дано условие. Дан массив из 20 элементов: каждый нечетный содержит цену товаров, а каждый четный - количество заказов на этот товар: а) найти сумму самого дорогого заказа (цена * количество) б) найти среднюю цену среди товаров, у которых больше 2 заказов в) отсортировать массив по возрастанию цен, сохраняя структуру "цена - количество" г) Вывести количество заказчиков для каждого товара в заданном ценовом диапазоне, отсортированное по возрастанию Пока сделал задание а), компилирует, но неправильно считает.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define N 20
 
int main()
{int a[N], i, price, order, max, s, n ;
 
  puts(" vvedite massiv 0<x<=20");
  scanf ("%d", &n);
  if(n<=20)
{
  s=0;
  puts(" vvedite elementi massiva");
  for(i=0;i<n;i++)
   { scanf("%d", &a[i] );//zadaem massiv
     if(i%2==0) //razdelenie elementov na chetnie(zakazi) i nechetnie(cena)
     order=a[i];
     else
     price=a[i];
     s+=order*price; //summa
   }
//obrabotka massiva
  puts("massiv:");
  for(i=0;i<n;i++)
  {  printf("\n zakazi %d",order);
     printf (" cena %d ", price); //vivod massiva
     printf("\n");
  }
 
  max=a[0];
  for(i=0;i<n;i++)
  { if(s>max)
    max = s;   //summa samogo dorogogo zakaza
  }
   printf("\n summa samogo dorogogo zakaza= %d",max);

}
else
printf("\n chislo ne podhodit ");
 
return 0;
}

Решение задачи: «Найти сумму самого дорогого заказа»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#define N 20
 
int main()
{
    int a[N], i, max = 0, nmax, n;
    puts("Enter number of records 0<x<=10: ");
    scanf ("%d", &n);
 
    if (n > N/2)
    {
        fprintf (stderr, "Number of records so big.\n");
        exit (1);
    }
 
    for(i=0;i<n;i++)
    {
        printf ("Enter trade good price: ");
        scanf("%d", &a[2*i]);           // Элемент массива первый, т.е. нечетный. Но индекс имеет 0 - четный :)
        printf ("Enter trade good demand: ");
        scanf("%d", &a[2*i+1]);
    }
 
    // Получили массив из чередующихся элементов - цена, спрос
    // Теперь обработаем-с
 
    for (i = 0; i < n; i++)
    {
        printf ("\nTrade good No %d\n", i+1);
        printf ("Price: %d\tDemand: %d\n", a[2*i], a[2*i+1]);
        
        // Поиск самого дорогого товара (цена * кол-во)
        if ((a[2*i] * a[2*i+1]) > max)
        {
            max = a[2*i] * a[2*i+1];
            nmax = i;
        }
 
    }
 
    printf ("\nMax profit from trade good No %d: %d\n", nmax + 1, max);
 
    return 0;
}

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

  1. Объявление переменных:
    • int a[N], i, max = 0, nmax, n;
    • N - количество товаров в магазине (максимальное количество записей)
    • i - цикловой счетчик
    • max - переменная для хранения максимальной прибыли
    • nmax - переменная для хранения индекса самого дорогого товара
    • n - количество записей, которые нужно ввести (читается с клавиатуры)
  2. Проверка на количество записей:
    • if (n > N/2)
    • fprintf (stderr, Number of records so big.\n);
    • exit (1);
    • проверка, чтобы количество записей не превышало половину от максимального количества товаров в магазине
  3. Ввод данных:
    • for(i=0;i<n;i++)
    • printf (Enter trade good price:);
    • scanf(%d, &a[2*i]);
    • printf (Enter trade good demand:);
    • scanf(%d, &a[2*i+1]);
    • цикл для ввода цен и спроса на товары
  4. Обработка данных:
    • for (i = 0; i < n; i++)
    • printf (\nTrade good No %d\n, i+1);
    • printf (Price: %d\tDemand: %d\n, a[2i], a[2i+1]);
    • поиск самого дорогого товара (цена * кол-во)
    • если (a[2i] a[2*i+1]) > max
    • то обновление значений max и nmax
  5. Вывод результата:
    • printf (\nMax profit from trade good No %d: %d\n, nmax + 1, max);
    • вывод максимальной прибыли от самого дорогого товара
  6. Конец программы:
    • return 0;
    • завершение работы программы

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


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

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

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