Скорая Компьютерная Помощь г. Калуга

Полный спектр компьютерных услуг!

Здравствуйте, гость ( Вход | Регистрация )

> Внимание!

  • Вся информация, расположенная в данном и других разделах форума получена из открытых источников (интернет-ресурсы, средства массовой информации, печатные издания и т.п.) и/или добавлена самими пользователями. Администрация форума предоставляет его участникам площадку для общения / размещения файлов / статей и т.п. и не несет ответственности за содержание сообщений, а также за возможное нарушение авторских, смежных и каких-либо иных прав, которое может повлечь за собой информация, содержащаяся в сообщениях.
Ремонт компьютеров в калуге Рекламное место сдается
 
Ответить в эту темуОткрыть новую тему
> Задачки по программированию (Turbo Pascal)
BlaX
сообщение 12.12.2008, 21:30
Сообщение #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. Чёта я нублю, тут же пару строк изменить и своя задача получится. Ну лан, для подстраховки wink.gif
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Просто псих :)
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
BlaX
сообщение 12.12.2008, 23:33
Сообщение #2


Newbie
*

Группа: Пользователи
Сообщений: 6
Регистрация: 8.12.2008
Пользователь №: 89



tongue.gif

Код
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.


--------------------
Просто псих :)
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Decker
сообщение 13.12.2008, 10:08
Сообщение #3


Администратор
*****

Группа: Главные администраторы
Сообщений: 14349
Регистрация: 12.10.2007
Из: Twilight Zone
Пользователь №: 1



Была аналогичная контрольная в КФМГТУ им. Н.Э. Баумана когда-то, только там "с закосом" под полноценную базу данных, т.е. с функциями сохранения в файл, чтения из файла. У меня где-то болванка валяется (правда сложновато ее найти уже будет, да и не факт что прочитается, столько лет ведь прошло) с где-то 20-ю вариантами подобных заданий. Семьи, кинотеатры с числом свободных мест ... ууу )

p.s. 2BlaX: Видишь, можешь ведь когда захочешь wink.gif
p.p.s. Кстати во FreePascal нет проблем с русскими символами, более того, он и под Vista'у нормально работает, и скомпилированные exe'шники Win32 Based получаются )

Прикрепленное изображение


--------------------

Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
BlaX
сообщение 13.12.2008, 17:31
Сообщение #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.


Самостоятельная работа:

З.Ы. Вот эту правда хз как делать.
З.З.Ы. Прогу, которую ты выложил постом выше, мне в понедельник сдавать wink.gif
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Просто псих :)
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Decker
сообщение 13.12.2008, 17:54
Сообщение #5


Администратор
*****

Группа: Главные администраторы
Сообщений: 14349
Регистрация: 12.10.2007
Из: Twilight Zone
Пользователь №: 1



Блин, BlaX ... Зачем картинки у себя на хосте хранить, ведь когда ты не в сети они не отображаются, да и страница форума загружается долго, если картинка недоступна. Так, вообщем, задача #3:

Наименование товара;
Количество товара;
Стоимость товара;
Принадлежность товара: 1) отечественный (государственное или частное предприятие), 2) импортный (страна)
Вывести на экран товар отечественного производства суммарная стоимость которого максимальная.

В процессе решения ...


--------------------

Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Decker
сообщение 13.12.2008, 18:34
Сообщение #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$
Тип производителя: отечественный
Тип предприятия: государственное


--------------------

Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
BlaX
сообщение 24.12.2008, 20:24
Сообщение #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.


Самостоятельная работа:

Любой выриант навыбор (естественно тот который полегче tongue.gif 1-ый или 2-ой)
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Просто псих :)
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Decker
сообщение 25.12.2008, 0:48
Сообщение #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.


Пример работы:

понедельник
вторник
среда
четверг
пятница


--------------------

Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Decker
сообщение 6.1.2012, 0:34
Сообщение #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 за единицу. Оптом - скидки wink.gif Варианты / сложность / требования к оформлению проектов обсуждаемы. Обращаться по этому адресу. К оплате принимаются WebMoney и Яндекс.Деньги, оплата производится после получения скриншота работающей программы, сразу после поступления оплаты высылаются исходные тексты.


--------------------

Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

Рекламное место сдается Рекламное место сдается
Текстовая версия Сейчас: 26.4.2025, 23:41
Рейтинг@Mail.ru
Яндекс.Метрика Яндекс цитирования