|
Главная | Правила | Регистрация | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
|
Опции темы | Опции просмотра |
24.02.2010, 19:56 | #1 (permalink) |
Member
Регистрация: 29.09.2009
Сообщений: 32
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Записи. Подпрограммы.
ввод/вывод записи об авто: марка, цвет(красн,син,бел,черн)б мощностьб пробег, расход. Код:
Program ZapisiAvto; uses crt; Type color1=(red,blue,white,black); Avto=Record marka:String [10]; color:color1; moshost:Word; probeg:Word; rasxod:Real; end; Var color,q:color1; S:Avto; A:array[1..35] of Avto; i,y,z,N:Byte; Fl:Boolean; Procedure VVOD (Var x:avto; C:Byte); Var i,j:Byte; q:color1; Begin For i:=1 to C do begin WriteLn ('Vvedite marku'); ReadLn (x[i].marka); WriteLn ('Vvedite color'); {??????????} ReadLn (j); q:=color1(j); x[i].color:=q; WriteLn ('Vvedite moshost'); ReadLn (x[i].moshost); WriteLn ('Vvedite probeg'); ReadLn (x[i].probeg); WriteLn ('Vvedite razxod'); ReadLn ([i].rasxod); WriteLn; WriteLn; end; end; Procedure Vivod (Var x:avto; C:Byte); Var i,j:Byte; q:color1; Begin For i:=1 to C do begin Write ('nazv ', x[i].marka); Write ('color '); Case q of red:Write ('red'); blue:Write ('blue'); white:Write ('white'); black:Write ('black'); end; Write ('moshost ',x[i].moshost); Write ('probeg ' , x[i].probeg); WriteLn ('razxod ',x[i].rasxod); WriteLn; WriteLn; end; end; begin vvod (S,N); WriteLn; vivod (S,N); ReadLn; end. |
24.02.2010, 19:56 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Чтобы вы не тратили время на поиск, отправлю вам аналогичные топики Записи Процедуры-подпрограммы-паскаль |
24.02.2010, 22:00 | #2 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
1. Перечисляемый тип описан правильно, но работать с ним так, как у Вас написано, нельзя. Значения переменной перечисляемого типа вообще не вводятся с консоли. Да и зачем он тут вообще нужен - непонятно. 2. Параметрами процедур (х) у Вас являются не записи, а МАССИВЫ записей. Значит, необходимо предварительно ввести и описать такой тип. 3. В процедуре Vivod оба параметра являются входными, поэтому var ставить в заголовке НЕ СЛЕДУЕТ. 4. В теле программы пропущен ввод количества машин. 5. Программа просто изобилует элементарными неряшливостями, типа ([i].rasxod) вместо (x[i].rasxod) и т.п. Я не стану отслеживать все ошибки, а просто выложу работающий вариант, а Вы, путем сопоставления, постарайтесь сами отладить программу. Код:
Program ZapisiAvto; Type Avto=Record marka:String; color:String; moshost:Word; probeg:Word; rasxod:Real; end; AR_Rec=ARRAY[1..35] of Avto; Var S:AR_Rec; N:Byte; Procedure VVOD (Var x:Ar_Rec; C:Byte); Var i:Byte; Begin For i:=1 to C do begin WriteLn ('Vvedite marku'); ReadLn (x[i].marka); WriteLn ('Vvedite color'); ReadLn (x[i].color); WriteLn ('Vvedite moshost'); ReadLn (x[i].moshost); WriteLn ('Vvedite probeg'); ReadLn (x[i].probeg); WriteLn ('Vvedite razxod'); ReadLn (x[i].rasxod); WriteLn; WriteLn; end; end; Procedure Vivod (x:Ar_Rec; C:Byte); Var i:Byte; Begin For i:=1 to C do begin WriteLn ('nazv ', x[i].marka); WriteLn ('color ',x[i].color); WriteLn ('moshost ',x[i].moshost); WriteLn ('probeg ' , x[i].probeg); WriteLn ('razxod ',x[i].rasxod); WriteLn; WriteLn; end; end; begin Write('Kolichestvo mashin '); ReadLn(N); vvod (S,N); WriteLn; vivod (S,N); ReadLn; end. |
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Опции темы | |
Опции просмотра | |
|
|