Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Turbo Pascal] расчетная ведомость...


Автор: Stiudent 24.9.2009, 21:11
Акт инвентаризации материальных ценностей содержит шесть наименований предметов (шкаф, стол и т.д.), их количество и стоимость. Вывести на экран данные акта и суммарную стоимость по наименованиям.
Исходные данные ввести с клавиатуры.
)))

Автор: Letov 24.9.2009, 22:59
Код
program akt;
uses crt; {Модуль, используемый для очистки экрана процедурой clrscr;}
var names: array[1..6] of string;
    number:array[1..6] of integer;
    cost: array[1..6] of real;
    i: integer;
    amount, all_: real;
begin
all_ := 0;
for i := 1 to 6 do {Ввод данных}
begin
    writeln(i, ': name: ');
    readln(names[i]);
    writeln('number: ');
    readln(number[i]);
    writeln('cost: ');
    readln(cost[i]);
end;
clrscr;{Очищаем экран}
writeln('N | name | number | cost | amount');{Шапка таблицы}
for i := 1 to 6 do
begin
    amount := number[i]*cost[i]; {Стоимость}
    writeln(i, ' | ', names[i], ' | ', number[i], ' | ', cost[i]:5:2, ' | ', amount:5:2);{Выводим строку таблицы}
    all_ := all_ + amount; {Сумма}
end;
writeln('All: ', all_:5:2); {Вывод суммы}
readln;
end.

Автор: Stiudent 26.9.2009, 16:11
Это всё? )))
 smile 
А пожалуйста объясните с начало как это работает? smile 

Автор: Letov 26.9.2009, 19:01
Вроде все откомментировано.

Код

    names: array[1..6] of string; {Тут храним имена предметов}
    number:array[1..6] of integer; {Тут храним их количество}
    cost: array[1..6] of real; {Тут храним цену одного экземпляра}
    i: integer; {Вспомогательная переменная для циклов}
    amount, all_: real; {Стоимость конкретного предмета и стоимость всех предметов соответственно}

{...}


all_ := 0;{Обнуляем общую стоимость}
for i := 1 to 6 do {Ввод данных}
begin
    writeln(i, ': name: '); 
    readln(names[i]); {Ввод названия предмета с номером i}
    writeln('number: ');
    readln(number[i]); {Ввод количества предметов с номером i}
    writeln('cost: ');
    readln(cost[i]); {Ввод цены предмета с номером i}
end;


А дальше просто выводим полученные данные (см. первый пост).

Автор: Stiudent 26.9.2009, 19:17
Цитата(Letov @  26.9.2009,  19:01 Найти цитируемый пост)
writeln(i, ': name: '); 

А почему только в этом операторе в начале стоит i, а в остальных таких нет?

Автор: Letov 26.9.2009, 19:23
В этом операторе i выводит номер предмета, для которого необходимо ввести информацию. Точно также тут:
Код

writeln(i, ' | ', names[i], ' | ', number[i], ' | ', cost[i]:5:2, ' | ', amount:5:2);{Выводим строку таблицы}

Автор: Stiudent 27.9.2009, 22:12
 smile  
Мне это через TYPE, record...
нужно 

Автор: Letov 27.9.2009, 23:14
Тогда так:

Код

type
TMyType = record
    name: string;
    number: integer;
    cost: real;
    amount: real;
end;

var
   Data: array[1..6] of TMyType;


Обращаться к полям следующим образом:
Код

Data[i].name
Data[i].number
{и т.д.}

Автор: Stiudent 27.9.2009, 23:24
Я вам наверное надоел...
Но я не понял... smile 

Автор: Letov 27.9.2009, 23:36
Код

program akt;
uses crt; {Модуль, используемый для очистки экрана процедурой clrscr;}
type
TMyType = record
    name: string;
    number: integer;
    cost: real;
    amount: real;
end;

var
   Data: array[1..6] of TMyType;
var i: integer;
    all_: real;
begin
all_ := 0;
for i := 1 to 6 do {Ввод данных}
begin
    writeln(i, ': name: ');
    readln(Data[i].name]);
    writeln('number: ');
    readln(Data[i].number);
    writeln('cost: ');
    readln(Data[i].cost);
end;
clrscr;{Очищаем экран}
writeln('N | name | number | cost | amount');{Шапка таблицы}
for i := 1 to 6 do
begin
    Data[i].amount := Data[i].number*Data[i].cost; {Стоимость}
    writeln(i, ' | ', Data[i].name, ' | ', Data[i].number, ' | ', Data[i].cost:5:2, ' | ', Data[i].amount:5:2);{Выводим строку таблицы}
    all_ := all_ + Data[i].amount; {Сумма}
end;
writeln('All: ', all_:5:2); {Вывод суммы}
readln;
end.

Автор: Stiudent 28.9.2009, 17:56
Letov, 
Спасибо большое!!! smile  smile  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)