Изменение данных о товарах

Задача

Написать программу, в которой хранятся данные о товарах, их количестве и цене. При запуске программы эта информация выводится на экран. Далее пользователю должно предлагаться вводить номера товаров и их новое количество. Изменение данных должно завершаться, если пользователь вводит специально оговоренный символ (например, 0). После этого все данные о товарах должны снова выводиться на экран.

Пояснение к задаче и алгоритм решения

  1. В программе должна быть структура с полями для хранения названия товара, его количества и цены. После этого создается массив структур. Он заполняется внутри программы.
  2. После этого в цикле прохода по элементам массива структур надо вывести значения всех полей каждого элемента-структуры.
  3. Создать бесконечный цикл. В нем спрашивать у пользователя номер товара. Если был введен 0, то прерывать цикл оператором break. В остальных случаях запрашивать новое количество товара и записывать в соответствующее поле товара под указанным номером это новое значение.
  4. В конце программы снова вывести всю информацию о товарах.

Исходный код на языке программирования Pascal

type
    goods = record
        good: string[50];
        qty: byte;
        price: word;
    end;
var
    arr: array[1..5] of goods;
    i,n: byte;
begin
    with arr[1] do begin good:='Core-i3-4330'; qty:=10; price:=4600 end;
    with arr[2] do begin good:='Core i5-4670K'; qty:=5; price:=8600 end;
    with arr[3] do begin good:='AMD FX-6300'; qty:=7; price:=3600 end;
    with arr[4] do begin good:='Pentium G3220'; qty:=11; price:=2200 end;
    with arr[5] do begin good:='Core i5-3450'; qty:=9; price:=6500 end;
 
    for i:=1 to 5 do
        writeln(i,') ',arr[i].good,', ',arr[i].qty,', ',arr[i].price);
 
    while true do begin
        write('№: '); readln(i);
        if i <> 0 then begin
            write('Количество: '); readln(n);
            arr[i].qty := n;
        end else break;
    end;
 
    for i:=1 to 5 do
        writeln(i,') ',arr[i].good,', ',arr[i].qty,', ',arr[i].price);
end.

Пример(ы) выполнения программы на языке Pascal

1) Core-i3-4330, 10, 4600
2) Core i5-4670K, 5, 8600
3) AMD FX-6300, 7, 3600
4) Pentium G3220, 11, 2200
5) Core i5-3450, 9, 6500
№: 1
Количество: 15
№: 3
Количество: 10
№: 4
Количество: 7
№: 0
1) Core-i3-4330, 15, 4600
2) Core i5-4670K, 5, 8600
3) AMD FX-6300, 10, 3600
4) Pentium G3220, 7, 2200
5) Core i5-3450, 9, 6500

Исходный код на языке программирования C

#include <stdio.h>
 
struct goods {
    char good[50];
    unsigned short qty;
    unsigned int price;
};
 
main() {
    struct goods arr[5] = {
        "Core-i3-4330", 9, 4500,
        "Core i5-4670K", 3, 8500,
        "AMD FX-6300", 6, 3700,
        "Pentium G3220", 8, 2100,
        "Core i5-3450", 5, 6400 };
    struct goods *a;
    int i, n;
    for (i=0, a=arr; i<5; i++, a++)
        printf("%d) %s, %d, %d\n", i+1, a->good, a->qty, a->price);
    while (1) {
        printf("№: ");
        scanf("%d", &i);
        if (i == 0) break;
        else {
            printf("Количество: ");
            scanf("%d", &n);
            a = arr+i-1;
            a->qty = n;
        }
    }
    for (i=0, a=arr; i<5; i++, a++)
        printf("%d) %s, %d, %d\n", i+1, a->good, a->qty, a->price);  
}

Исходный код на языке программирования Python

goods = {'1': ['Core-i3-4330', 9, 4500],
'2': ['Core i5-4670K', 3, 8500],
'3': ['AMD FX-6300', 6, 3700],
'4': ['Pentium G3220', 8, 2100],
'5': ['Core i5-3450', 5, 6400]}
 
for i in goods:
    print("%s) %s - %d шт. по %d руб" % (i, goods[i][0], goods[i][1], goods[i][2]))
 
while 1:
    n = input('№: ')
    if n != '0':
        qty = int(input('Количество: '))
        goods[n][1] = qty
    else:
        break
 
for i in goods:
    print("%s) %s - %d шт. по %d руб" % (i, goods[i][0], goods[i][1], goods[i][2]))

Особенности решения на языке программирования Python

Поскольку в словаре нет порядка (это неупорядоченная структура в отличие от списка), то потребовалось ввести еще одно поле - номер товара.

Тема

Структуры данных (записи, словари)

Уровень сложности

Средний

Дата публикации