![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]() ![]()
Сообщение
#1
|
|
![]() Newbie ![]() Группа: Пользователи Сообщений: 6 Регистрация: 8.12.2008 Пользователь №: 89 ![]() |
ТЕМА: Записные типы данных.
Пример: Составить список сотрудников (не более 50) по следующим параметрам: Учетный номер; Фамилия, имя, отчество; Год рождения; Стаж работы; Зарплата. Выдать на экран данные тех сотрудников, у которых стаж работы составляет не менее 10 лет. Текст программы: Код Program Spisok_otd_15; Const nn=50; Type Spisok=Record K:array [1..nn] of integer; Fio:array[1..nn] of string[30]; God_rogd, stag_rab, zarpl:array[1..nn] of integer; end; Var a:spisok; i,n:integer; BEGIN Write('Число сотрудников '); Readln(n); For i:=1 to n do Begin Write('Номер сотрудника ');Readln(a.k[i]); Write('Ф.И.О. ');Readln(a.fio[i]); Write('Год рождения ');Readln(a.god_rogd[i]); Write('Стаж ');Readln(a.stag_rab[i]); Write('Зарплата ');Readln(a.zarpl[i]); End; For i:=1 to n do With a do If a.stag_rab[i]>=10 then writeln(k[i], fio[i], god_rogd[i], stag_rab[i], zarpl[i]); END. Самостоятельная работа: P.S. Чёта я нублю, тут же пару строк изменить и своя задача получится. Ну лан, для подстраховки ![]() -------------------- Просто псих :)
|
|
|
![]()
Сообщение
#2
|
|
![]() Newbie ![]() Группа: Пользователи Сообщений: 6 Регистрация: 8.12.2008 Пользователь №: 89 ![]() |
![]() Код Program CIIucoK_MHorogeTHbIx_ceMeu;
Uses CRT; Const nn=50; Type Spisok=Record Fio, ylica:array[1..nn] of string[30]; Dom, kvartira, deti:array[1..nn] of integer; End; Var a:spisok; i,n:integer; check:boolean; BEGIN Clrscr; Write('4uclo ceMeu: '); Readln(n); For i:=1 to n do begin Write('FaMuli9, UM9, OT4ecTBo: '); Readln(a.fio[i]); Write('Yluca: '); Readln(a.ylica[i]); Write('HoMep goMa: '); Readln(a.dom[i]); Write('HoMep KBapTupbI: '); Readln(a.kvartira[i]); Write('Kol-Bo geTeu: '); Readln(a.deti[i]); WriteLn; End; Writeln('-------- Results (press any key) ---------'); ReadKey; Check:=false; For i:=1 to n do begin With a do If a.deti[i]>=2 then begin writeln('FaMuli9, UM9, OT4ecTBo: ', fio[i], Chr(10), Chr(13), 'Yluca: ', ylica[i], Chr(10), Chr(13), 'HoMep goMa: ', dom[i], Chr(10), Chr(13), 'HoMep KBapTupbI: ',kvartira[i], Chr(10), Chr(13), 'Kol-Bo geTeu: ', deti[i]); WriteLn; Check:=true; end; end; if Check = false then Writeln('MHorogeTHbIe ceMbu He o6Hapy)I(eHbI'); Writeln('-------- Press any key ---------'); ReadKey; END. -------------------- Просто псих :)
|
|
|
![]()
Сообщение
#3
|
||
![]() Администратор ![]() ![]() ![]() ![]() ![]() Группа: Главные администраторы Сообщений: 14349 Регистрация: 12.10.2007 Из: Twilight Zone Пользователь №: 1 ![]() |
Была аналогичная контрольная в КФМГТУ им. Н.Э. Баумана когда-то, только там "с закосом" под полноценную базу данных, т.е. с функциями сохранения в файл, чтения из файла. У меня где-то болванка валяется (правда сложновато ее найти уже будет, да и не факт что прочитается, столько лет ведь прошло) с где-то 20-ю вариантами подобных заданий. Семьи, кинотеатры с числом свободных мест ... ууу )
p.s. 2BlaX: Видишь, можешь ведь когда захочешь ![]() p.p.s. Кстати во FreePascal нет проблем с русскими символами, более того, он и под Vista'у нормально работает, и скомпилированные exe'шники Win32 Based получаются ) -------------------- |
|
|
||
![]()
Сообщение
#4
|
|
![]() Newbie ![]() Группа: Пользователи Сообщений: 6 Регистрация: 8.12.2008 Пользователь №: 89 ![]() |
ТЕМА: Вариантные записи.
Пример: В записной массив вводятся виды и параметры двух фигур: квадрата с одной стороной и параллелограмма с двумя сторонами. Вывести на экран порядковые номера тех квадратов, стороны у которых меньше 10. Текст программы: Код program Prim15_2; type figure=(square, paral); param=record l:integer; case fig: figure of square:(side:real); paral:(side1,side2:real); end; var a:array [1..50] of param; i,m,n:integer; begin write('Введите количество квадратов: '); readln(m); write('Введите количество параллелограммов: '); readln(n); for i:=1 to m do begin a[i].fig:=square; write('Введите номер квадрата '); readln(a[i].l); write('Введите сторону квадрата '); readln(a[i].side); end; for i:=m+1 to m+n do begin a[i].fig:=paral; write('Введите номер параллелограмма '); readln(a[i].l); write('Введите первую сторону параллелограмма '); readln(a[i].side1); write('Введите вторую сторону параллелограмма '); readln(a[i].side2); end; for i:=1 to n+m do if (a[i].fig=square)and(a[i].side<10) then writeln(a[i].l,a[i].side:5:2); end. Самостоятельная работа: З.Ы. Вот эту правда хз как делать. З.З.Ы. Прогу, которую ты выложил постом выше, мне в понедельник сдавать ![]() -------------------- Просто псих :)
|
|
|
![]()
Сообщение
#5
|
|
![]() Администратор ![]() ![]() ![]() ![]() ![]() Группа: Главные администраторы Сообщений: 14349 Регистрация: 12.10.2007 Из: Twilight Zone Пользователь №: 1 ![]() |
Блин, BlaX ... Зачем картинки у себя на хосте хранить, ведь когда ты не в сети они не отображаются, да и страница форума загружается долго, если картинка недоступна. Так, вообщем, задача #3:
Наименование товара; Количество товара; Стоимость товара; Принадлежность товара: 1) отечественный (государственное или частное предприятие), 2) импортный (страна) Вывести на экран товар отечественного производства суммарная стоимость которого максимальная. В процессе решения ... -------------------- |
|
|
![]()
Сообщение
#6
|
|
![]() Администратор ![]() ![]() ![]() ![]() ![]() Группа: Главные администраторы Сообщений: 14349 Регистрация: 12.10.2007 Из: Twilight Zone Пользователь №: 1 ![]() |
Лови:
Код program Prim_3; type TOurType = (Gos, Chastn); { Наши предприятия бывают государственными и частными } TFirmaType = (Soviet_Union, Import); { Предприятие, наше или импортное } TTovari=record TovarName: string; { Наименование товара } Amount: real; { Количество } Sum: real; { Стоимость } case MadeBy: TFirmaType of { Производитель, отечественный или импортный } Soviet_Union:(FirmaType: TOurType); Import:(Country: string); end; var Tovari: array [1..50] of TTovari; i,m,n: integer; Sum, Max: real; begin Write('Введите количество товаров: '); ReadLn(m); for i:=1 to m do begin WriteLn; WriteLn('-- Заполнение информации о товаре [',i,']:'); Write('Наименование: '); ReadLn(Tovari[i].TovarName); Write('Количество: '); ReadLn(Tovari[i].Amount); Write('Стоимость: '); ReadLn(Tovari[i].Sum); repeat Write('Тип производителя (1 - отечественный, 2 - импортный): '); ReadLn(n); until ((n=1) or (n=2)); { Повторяем цикл пока пользователь не сделает правильный выбор, т.е. либо 1, либо 2 } if n = 1 then begin Tovari[i].MadeBy:=Soviet_Union; repeat Write('Тип производителя (1 - государственный, 2 - частный): '); ReadLn(n); until ((n=1) or (n=2)); { Повторяем цикл пока пользователь не сделает правильный выбор, т.е. либо 1, либо 2 } if n = 1 then begin Tovari[i].FirmaType := Gos; end else begin Tovari[i].FirmaType := Chastn; end; end else begin Tovari[i].MadeBy:=Import; Write('Страна производитель: '); ReadLn(Tovari[i].Country); end; end; { Вывести на экран товар отечественного производства суммарная стоимость которого максимальная } WriteLn('Результат: '); Max:=0; n:=0; { Находим позицию товара с максимальной суммарной стоимостью } for i:=i to m do begin if Tovari[i].MadeBy=Soviet_Union then if Tovari[i].Amount * Tovari[i].Sum > Max then begin Max:=Tovari[i].Amount * Tovari[i].Sum; n:=i; end; { Теперь у нас в n хранится позиция товара суммарная стоимость которого максимальна } { Выводим на экран } WriteLn; WriteLn('Максимальная суммарная стоимость: ',Max:8:3,' k$'); Write('Наименование: '); WriteLn(Tovari[n].TovarName); Write('Количество: '); WriteLn(Tovari[n].Amount:8:3); Write('Стоимость: '); WriteLn(Tovari[n].Sum:8:3,' k$'); WriteLn('Тип производителя: отечественный'); Write('Тип предприятия: '); if Tovari[i].FirmaType = Gos then WriteLn('государственное') else WriteLn('частное'); end; end. Пример работы: -- Заполнение информации о товаре [1]: Наименование: Свинья упитанная Количество: 3 Стоимость: 1400 Тип производителя (1 - отечественный, 2 - импортный): 1 Тип производителя (1 - государственный, 2 - частный): 1 -- Заполнение информации о товаре [2]: Наименование: Хрюшка западная нарезная Количество: 5 Стоимость: 2000 Тип производителя (1 - отечественный, 2 - импортный): 2 Страна производитель: Уругвай -- Заполнение информации о товаре [3]: Наименование: Курочки "Мясо на ножках" Количество: 10 Стоимость: 500 Тип производителя (1 - отечественный, 2 - импортный): 1 Тип производителя (1 - государственный, 2 - частный): 2 -- Заполнение информации о товаре [4]: Наименование: Буренка "Северная" Количество: 1 Стоимость: 4500 Тип производителя (1 - отечественный, 2 - импортный): 1 Тип производителя (1 - государственный, 2 - частный): 1 Результат: Максимальная суммарная стоимость: 4500.000 k$ Наименование: Буренка "Северная" Количество: 1.000 Стоимость: 4500.000 k$ Тип производителя: отечественный Тип предприятия: государственное -------------------- |
|
|
![]() ![]()
Сообщение
#7
|
|
![]() Newbie ![]() Группа: Пользователи Сообщений: 6 Регистрация: 8.12.2008 Пользователь №: 89 ![]() |
ТЕМА: Множественные типы данных.
Пример: Составить следующую программу. Задано множество целых чисел. Выделить из него все делители, и исключить из множества те числа, которые кратны делителю и не равны ему. Текст программы: Код Program Prim_16; var m:set of byte; i,k,n:integer; begin write('Введите размер промежутка <255:'); readln(n); m:=[2..n]; for i:=2 to n do for k:=2 to n do if (k mod i=0) and (k<>i) then begin writeln(i); break; end; end. Самостоятельная работа: Любой выриант навыбор (естественно тот который полегче ![]() -------------------- Просто псих :)
|
|
|
![]()
Сообщение
#8
|
|
![]() Администратор ![]() ![]() ![]() ![]() ![]() Группа: Главные администраторы Сообщений: 14349 Регистрация: 12.10.2007 Из: Twilight Zone Пользователь №: 1 ![]() |
На ... держи ...
Код { Ввести в качестве множества имена всех дней недели. Из этого множества удалить выходные дни и напечатать элементы полученного множества } Program Blax_5; type TEnum = (Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday); TEnumSet = set of TEnum; const DayNames: array [Sunday .. Saturday] of string = ('воскресенье','понедельник','вторник','среда','четверг','пятница','суббота'); var s, w, b: TEnumSet; i: integer; c: TEnum; begin s:=[Sunday .. Saturday]; // вся неделя w:=[Sunday, Saturday]; // выходные дни b:=s - w; // рабочие дни for c:= Sunday to Saturday do if c in b then WriteLn(DayNames[c]); end. Пример работы: понедельник вторник среда четверг пятница -------------------- |
|
|
![]()
Сообщение
#9
|
|
![]() Администратор ![]() ![]() ![]() ![]() ![]() Группа: Главные администраторы Сообщений: 14349 Регистрация: 12.10.2007 Из: Twilight Zone Пользователь №: 1 ![]() |
Собственно задача взята отсюда.
Тема 10. Массивы 1 Даны: действительные числа r1, r2, ..r16. Определить количество соседств двух положительных чисел в этой последовательности. Код Program Tema10; { Тема 10. Массивы 1 Даны: действительные числа r1, r2, ..r16. Определить количество соседств двух положительных чисел в этой последовательности. } const Sign: array [0..1] of real = (-1, 1); var r: array [1..16] of real; i,Count: integer; begin Randomize; Count:=0; WriteLn('(c) Decker, 2012'); WriteLn; WriteLn('Массив действительных чисел: '); for i:=1 to 16 do begin r[i]:=Sign[Random(2)]*Random($7FFFFFFF)/10000; WriteLn(' r[',i:2,'] = ',r[i]:15:4); if (i>1) then begin if (r[i]>0) and (r[i-1]>0) then Count:=Count+1; end; end; WriteLn('Количество соседств двух положительных чисел: ',Count); end. Пример работы программы: Код © Decker, 2012 Массив действительных чисел: r[ 1] = -100671.4763 r[ 2] = -210494.0822 r[ 3] = 22750.9232 r[ 4] = -140791.8584 r[ 5] = -136070.4586 r[ 6] = -30374.4965 r[ 7] = -34368.1912 r[ 8] = -158711.4552 r[ 9] = 62647.8760 r[10] = 93889.6841 r[11] = 79144.2134 r[12] = 48145.2858 r[13] = -91800.5456 r[14] = 160351.7748 r[15] = -191586.8550 r[16] = -196647.2451 Количество соседств двух положительных чисел: 3 p.s. Решаем задачи / лабораторные на Pascal'е на заказ. Примерная цена задачи такого уровня - 150 WMR за единицу. Оптом - скидки ![]() -------------------- |
|
|
![]() ![]() |
Текстовая версия | Сейчас: 26.4.2025, 23:41 | |
|