Найти сумму самого дорогого заказа - 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; }
Объяснение кода листинга программы
- Объявление переменных:
- int a[N], i, max = 0, nmax, n;
- N - количество товаров в магазине (максимальное количество записей)
- i - цикловой счетчик
- max - переменная для хранения максимальной прибыли
- nmax - переменная для хранения индекса самого дорогого товара
- 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]); - 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[2i], a[2i+1]); - поиск самого дорогого товара (цена * кол-во)
- если (a[2i] a[2*i+1]) > max
- то обновление значений max и nmax
- Вывод результата:
- printf (
\nMax profit from trade good No %d: %d\n
, nmax + 1, max); - вывод максимальной прибыли от самого дорогого товара
- printf (
- Конец программы:
- return 0;
- завершение работы программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д