Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.01.2011, 21:47   #1
Freezy
Пользователь
 
Регистрация: 02.11.2010
Сообщений: 14
Злость "Недопонятый" масив записей,требуется помощ!

Условие:Информацыя про деталь состоит из названия,веса одного экзэмпляра (кг), количества экзэмпляра и статуса (заказано/не заказано).Вивести информацыю про 15 разных наименований деталей.Найти:
а)общее количество всех деталей
б)общий вес всех деталей
в)наименование детали с наибольшей массой
г)названия заказаных деталей


Код:
program lab7;
uses crt;
type
    detail=record
                 name:string[25];
                 masa:real;
                 numb:integer;
                 stat:string[12];
                 end;
var    s,i:integer;
       v:real;
       maxs:string;
       mas_det:array [1..15] of detail;
procedure initel(var el:detail);
begin
writeln('Name: ');read(el.name);
writeln('Weight: ');read(el.masa);
writeln('Quaintity: ');read(el.numb);
writeln('Status: ');readln(el.stat);
end;
procedure initbase(var a:mas_det);   
var i:integer;
begin
for i:=1 to 15 do
    begin
    initel(a[i]);
    end;
end;
begin
clrscr;initbase
for i:=1 to 15 do
    begin
    s:=a[i].numb+s;
    v:=a[i].masa+v;
    if (maxs<a[i].allmas) then maxs:=a[i].name;
    end;
writeln('Quantity of all details: ',s);
writeln('Weight of all details: ',v:0:2);
writeln('Name of the heaviest details: ',maxs);
for i:=1 to 15 do  if (a[i].status=zamovlena) then writeln(a[i].name);
readln
end.
Мне не понятно куда надо записывать масив mas_det и как обращаться к его елементам...подскажите и обьясните пожалуйста!
Freezy вне форума Ответить с цитированием
Старый 17.01.2011, 00:27   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
как обращаться к его елементам...
Код:
procedure initbase(var a:mas_det);
Два противоположных утвержедения... Вывод: код не ваш. Почему бы не взять полный у того, кто этот писал?
p51x на форуме Ответить с цитированием
Старый 17.01.2011, 11:02   #3
Freezy
Пользователь
 
Регистрация: 02.11.2010
Сообщений: 14
По умолчанию

ЭТО МОЙ КОД!ВАм что,фотографии моих конспектов сделать??или как вам все-таки доказать что это - мой код?!в а должны передаваться элементы масива,тоесть фактически вся информацыя про детали в данном случае!Вот по этому я и прошу именно помочь а не сделать за меня все с нуля!хотя бы просто обьясните в чем ошибка и возможные варианты устранения!!!
Freezy вне форума Ответить с цитированием
Старый 17.01.2011, 11:39   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
ЭТО МОЙ КОД!
Верю. Ты ступил, допустив непростительную ошибку. Ты решил что параметр "а" в процедурах будет распространяться на всю программу - типичная ошибка новичка. Но это не так.
Тебе в главной программе просто нужно заменить a[i]. на mas_det[i].
И быть повнимательнее.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.01.2011, 12:41   #5
Косюра
Пользователь
 
Аватар для Косюра
 
Регистрация: 14.01.2011
Сообщений: 74
По умолчанию

Я что-то не поняла, а это прикольно типо писать неграмотно?
"елемент" "информацыя" "экзэмпляра" "Вивести"
Я понимаю один - два раза ошибиться, но когда ТАК написано ВСЁ задание... Это же невозможно читать!
Давайте писать грамотно!
Девушка - переменная бинарного типа с рандомным значением
Косюра вне форума Ответить с цитированием
Старый 17.01.2011, 12:44   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
Давайте писать грамотно!
Погодь так судить. Може автор мой земеля, или белорус...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.01.2011, 12:53   #7
Freezy
Пользователь
 
Регистрация: 02.11.2010
Сообщений: 14
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Погодь так судить. Може автор мой земеля
ага,ток я из центральной Украины
слушай,я до сих пор не могу понять,какие параметры надо вписывать вот сюда procedure initbase(var a:mas_det)??
Freezy вне форума Ответить с цитированием
Старый 17.01.2011, 13:55   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
надо вписывать вот сюда procedure initbase(var a:mas_det)??
1) так записывать нельзя. через двоеточие в Паскаль указывается ТИП ДАННЫХ, а mas_det - это НЕ тип, это переменная.
Кроме того, для передачи массива в качестве "формального параметра" процедуры рекумендую описать свой тип.
например, так пишем (я для ориентации и Ваш код оставляю, чтобы было понятно, куда вставлять пример описания):
Код:
type
    detail=record
                 name:string[25];
                 masa:real;
                 numb:integer;
                 stat:string[12];
                 end;
    MasDetArrayType = array [1..15] of detail;
var    s,i:integer;
       v:real;
       maxs:string;
       mas_det : MasDetArrayType;
...
procedure initbase(var a: MasDetArrayType);
....

begin
 clrscr;
 initbase(mas_det);

for i:=1 to 15 do
    begin
    s:=mas_det[i].numb+s;
    v:=mas_det[i].masa*mas_det[i].numb+v;
    if (maxs<mas_det[i].allmas) then maxs:=mas_det[i].name;
    end;
writeln('Quantity of all details: ',s);
writeln('Weight of all details: ',v:0:2);
writeln('Name of the heaviest details: ',maxs);
for i:=1 to 15 do  if (mas_det[i].status=zamovlena) then writeln(mas_det[i].name);
...
Т.е. описываем мы процедуру (или функцию) с формальными параметрами,
а вот когда Вы вызываете эту процедуру, надо туда передать фактические параметры.

p.s. рекомендую ознакомится с темой передачи параметров в процедуры/функции...

p.p.s. для поиска суммы, максимального и т.д. лучше не писать обращение к элементам массива прямо в основном коде,
а так же, как и для ввода, написать отдельные процедуры (а лучше функции)...
впрочем, это не ошибка - просто некрасиво.

и ещё, для расчёта общего веса всех деталей надо вес одной детали умножить на количество таких деталей:
Код:
    v:=mas_det[i].masa*mas_det[i].numb+v;
и ещё. поиска детали с максимальным весом НЕВЕРЕН!!!
1) надо присвоить максимальному элементу какое-то начальное значение, например, массу первой детали
2) нет такого поля .allmas
3) Вы уж решите, что Вы храните в переменной maxs - то ли максимальный вес (раз Вы сравнимаете её с весом, то ли имя, раз уже Вы туда пытаетесь имя записать!...
(вообще-то, по хорошему, нужно и достаточно хранить iMax - номер детали с максимальным весом!
А уже по номеру детали (читай - "индексу в массиве") легко можно выдать и максимальный вес и название этой детали!

Последний раз редактировалось Serge_Bliznykov; 17.01.2011 в 14:11.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.01.2011, 15:45   #9
Freezy
Пользователь
 
Регистрация: 02.11.2010
Сообщений: 14
По умолчанию

Serge_Bliznykov, спасибо большое!все понял,учел и програма заработала так как надо (там еще была пара ошибок в моём коде,но я их нашел и устранил)!
Только вот один вопрос,насчет красоты,имеет ли смысл вместо 4-5 строк самой програми писать примерно 20 строк подпрограм?
Freezy вне форума Ответить с цитированием
Старый 17.01.2011, 16:05   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
насчет красоты
Процу твоя краса по барабану, а после того как ты эту лабу сдашь все успешно о коде забудут. Так что не парься. Потом если будешь разрабатывать серьезные ПО красу и эргономику наводить будешь.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как обойти "преобразование типа из "string" в "float" невозможно" lexluter1988 Помощь студентам 1 07.08.2010 12:23
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
Обновление набора данных после добавления в таблицу записей "внешней" программой dimmm БД в Delphi 5 21.04.2009 00:56
Нужна помощ в созд прогр "Сквош" doctor_dre Общие вопросы Delphi 0 24.05.2008 20:18