17.11.2018, 17:10 [+3 UTC]
в нашей команде: 3 112 чел. | участники онлайн: 13 (рекорд: 17)

:: РЕГИСТРАЦИЯ

:: задать вопрос

:: все разделы

:: правила

:: новости

:: участники

:: доска почёта

:: форум

:: блоги

:: поиск

:: статистика

:: наш журнал

:: наши встречи

:: наша галерея

:: отзывы о нас

:: поддержка

:: руководство

Версия системы:
7.55 (06.11.2018)

Общие новости:
24.09.2018, 16:49

Форум:
08.11.2018, 13:36

Последний вопрос:
17.11.2018, 15:12

Последний ответ:
17.11.2018, 17:02

Последняя рассылка:
17.11.2018, 16:46

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
19.05.2010, 09:31 »
Botsman
Огромное спасибо! Как всегда, вовремя, красиво и правильно! [вопрос № 178455, ответ № 261478]
16.09.2010, 17:16 »
Vassea
Спасибо большое. Помогли [вопрос № 179932, ответ № 263066]
28.09.2012, 03:34 »
Вера Михайловна
спасибо [вопрос № 186615, ответ № 271519]

РАЗДЕЛ • Pascal / Delphi / Lazarus

Создание программ на языках Pascal, Delphi и Lazarus.

[администратор рассылки: Зенченко Константин Николаевич (Модератор)]

Лучшие эксперты в этом разделе

Зенченко Константин Николаевич
Статус: Модератор
Рейтинг: 684
Степанов Иван /REDDS
Статус: 4-й класс
Рейтинг: 26
Асмик Гаряка
Статус: Советник
Рейтинг: 6

Перейти к консультации №:
 

Консультация онлайн # 175677
Раздел: • Pascal / Delphi / Lazarus
Автор вопроса: parazut
Отправлена: 27.12.2009, 21:24
Поступило ответов: 1

Добрый вечер. Понадобилась помощь с задачей.Суть ее такова.
Описать запись с именем Price содержащую поля:
-название товара
-название магазина, в котором продается товар
-стоимость товара в рублях
Написать программу,выполняющую следующие действия:
-ввод данных с клавиатуры в массив,состоящий из восьми элементов типа Price;записи должны быть размещены в алфавитном порядке по названиям товаров
-вывод на экран информации о товаре,название которого введено с клавиатуры;если таких товаров нет, вывести на экран соответствующее сообщение
-запись массива в файл под заданным с клавиатуры именем

Состояние: Консультация закрыта

Ответ # 258233 от Пупорев Юрий Борисович

Здравствуйте, parazut!
Решение задачи в приложении.

Приложение:


Консультировал: Пупорев Юрий Борисович
Дата отправки: 29.12.2009, 08:55

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Мини-форум консультации № 175677

Посетитель

ID: 317222

# 1

= общий = | 28.12.2009, 02:56 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Собственно осталась проблема в сортировке по алфавиту...пока выглядит так:
Program prog5;
uses ocna,crt;

const
n=5;
x11=2;y11=2;x12=58;y12=12;
x21=2;y21=14;x22=58;y22=23;
x31=60;y31=2;x32=79;y32=12;
type note=record
naz:string;
mg:string;
bd:integer;
end;
{------Описание процедур--------}
procedure vvod(var a:array[1..n] of note); {ВВОД ДАННЫХ}
var
i,j:integer;
x:byte;
begin
Window1(x11,y11,x12,y12);
for i:=1 to n do
begin
writeln('Введите название товара');
readln(a[i].naz);
writeln('Введите название магазина');
readln(a[i].mg);
writeln('Введите стоимость товара');
readln(a[i].bd);
clrscr;
end;
end; {конец ввода}

procedure sravn(s1,s2:array[1..3] of integer;var r:boolean);{Сравнение 2х массивов из записи}
var
i,j:integer;
begin
for i:=3 downto 1 do
begin
if s1[i]>s2[i] then begin r:=true;break end;
if s1[i]<s2[i] then begin r:=false;break end;
continue
end;
end;

procedure swap(var x,y:note);{подмена одной записи,другой}
var t:note;
begin
t := x;
x := y;
y := t
end;

procedure sort(var a:array[1..n] of note);
var i,j:byte;

begin
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i].naz>a[j].naz then
begin
a[i]:=a[j];
end;
end;
{procedure sort(var a:array[1..n] of note);{сортировка по алфавиту в записи}

{var
i,j:integer;
r:boolean;
begin
for j:=1 to n-1 do
for i:=1 to n-j do
begin
sravn(a[i].unucualu,a[i+1].unucualu,r);
if r=true then
swap(a[i],a[i+1]);
end;
end; }


procedure found(a:array[1..n] of note);{Поиск товара}
var
i,j:integer;
s:string;
z:boolean;
x:byte;
begin
Window1(x11,y11,x12,y12);
writeln('Введите товар для поиска');
readln(s);
z:=false;
Window2(x21,y21,x22,y22);
Writeln;
for i:=1 to n do
if s<>a[i].naz then continue
else begin z:=true;
writeln(a[i].naz);
writeln(a[i].mg);
write(a[i].bd);
writeln( );
end;
if z=false then writeln('Ненайдено');
end; {конец поиска}

procedure zapis(a:array[1..n] of note);{запись в файл}
var
f:text;
i,j:integer;
name:string;
x:byte;
begin
Window1(x11,y11,x12,y12);
sort(a);
writeln('Введите название файла');
readln(name);
Assign(f,name+'.txt');
rewrite(f);
for i:=1 to n do
With a[i] do
begin
writeln(f,'-----------------------');
writeln(f,'Название товара: ',naz);
writeln(f,'Название магазина: ',mg);
Write(f,'Стоимость товара: ',bd);
writeln(f,'-----------------------');
end;

Window1(x11,y11,x12,y12);
Writeln('Запись совершенна!');
close(f);
end;{конец записи в файл}
{--------------Главная программа---------------------}
var
i,j:integer;
ch:Char;
a:array[1..n] of note;
begin

Window1(x11,y11,x12,y12);
Window2(x21,y21,x22,y22);
Window3(x31,y31,x32,y32);
repeat
begin
ch:= ReadKey;
TextMode(Co80);
if ch=#59 then vvod(a);{ввода данных в запись}
if ch=#67 then found(a); {Поиск по магазину}
if ch=#61 then zapis(a);{запись в файл}
end;
until ch=#27;
end.


Сергей Бендер
Профессионал

ID: 304622

# 2

= общий = | 28.12.2009, 18:43 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Александр Белов:
1) В этой программе используется модуль ocna. Где он?
2) Насколько я знаю вот такие конструкции
procedure vvod(var a:array[1..n] of note);
в Борланд Паскале недопустимы. Ты уже компилировал и запускал эту программу?


Посетитель

ID: 317222

# 3

= общий = | 29.12.2009, 01:33 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Unit ocna;
Interface
Uses Crt;
Procedure namewi (x1,y1,x2,y2:Integer);
Procedure Window1(x1,y1,x2,y2:Integer);
Procedure Window2(x1,y1,x2,y2:Integer );
Procedure Window3(x1,y1,x2,y2:Integer );
Implementation

Procedure namewi(x1,y1,x2,y2:integer);
var
x:byte;
begin;
Window(x1,y1,x2,y2);
TextBackground(blue);TextColor(Black);
ClrScr;
x := (X2-x1) Div 2 - 5;
GoToXY(x,1);
Write('Программа ');
writeln;
End;


Procedure Window1(x1,y1,x2,y2:integer);
var
x:byte;
begin;
Window(x1,y1,x2,y2);
TextBackground(red);TextColor(Black);
ClrScr;
x := (X2-x1) Div 2 - 5;
GoToXY(x,1);
Write('Ввод данных');
writeln;
End;

Procedure Window2(x1,y1,x2,y2:integer);
var
x:byte;

begin
Window(x1,y1,x2,y2);
TextBackground(yellow);TextColor(Blue);
ClrScr;
x := (X2-x1) Div 2 - 5;
GoToXY(x,1);
Write('Результат поиска');
writeln;
End;

Procedure Window3(x1,y1,x2,y2:integer);
var

x:byte;
begin
Window(x1,y1,x2,y2);
TextBackground(Cyan);TextColor(Black);
ClrScr;
x := (X2-x1) Div 2 ;
GoToXY(x,1);
Writeln('Меню');
WriteLn;
WriteLn('Ввести данные <F1>');
WriteLn('Поиск <F9>');
WriteLn('Запись в файл <=>');
WriteLn('Выход <ESC>');


End;
end.

вот ocna. Забыл выложить:)
Программу компилировал и запускал.

Сергей Бендер
Профессионал

ID: 304622

# 4

= общий = | 29.12.2009, 18:21 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Александр Белов:

© Цитата:
Программу компилировал и запускал.


Я весьма удивлён. У меня на строке
"
procedure vvod(var a:array[1..n] of note); {ВВОД ДАННЫХ}
"
компилятор стопорится со словами "Error 54. OF Expected" . Ты компилировал в Borland Pascal v7?


Посетитель

ID: 317222

# 5

= общий = | 29.12.2009, 20:31 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Pascal ABC

Сергей Бендер
Профессионал

ID: 304622

# 6

= общий = | 30.12.2009, 12:31 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Александр Белов:

© Цитата:
Pascal ABC


А!! Понятно.

Тебе ответ дали. Устраивает? Надо разбирать твою программу?


Посетитель

ID: 317222

# 7

= общий = | 30.12.2009, 12:49 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Не совсем,то. Я остановился на своей версии программы с некоторыми изменениями. Можно уже не разбирать. Спасибо за помощь:)

 

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

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

Время генерирования страницы: 0.14840 сек.

© 2001-2018, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.55 от 06.11.2018