IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Переделайте с процедурами.
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Женский
Реальное имя: Юлия

Репутация: -  0  +


Готовая программа, только требуют с процедурами что бы были команды.

помогитею

Код

uses crt;
const n=4;

type city=record
name:string;
nar: byte;
kol: integer;
end;

var
temp:string;
arr :array[1..n] of city;
i,max,q:integer;
Ans,nam:string;
Tname:string;
begin
arr[1].name:='Magnitogorsk';
arr[2].name:='Saratov';
arr[3].name:='Moscow';
arr[4].name:='Perm';
arr[1].kol:=0;
arr[2].kol:=0;
arr[3].kol:=0;
arr[4].kol:=0;

repeat
writeln('Введите город');
readln(temp);
for i:=1 to n do
  if temp=arr[i].name then Tname:=arr[i].name;

  if (temp<> arr[1].name) and (temp <> arr[2].name) and (temp<> arr[3].name) and (temp<>arr[4].name) then writeln('Вы ввели неверный город');
for i:=1 to n do
if Tname=arr[i].name then
begin
    writeln('употребляешь нарктотики?');
    readln(arr[i].nar);
    if arr[i].nar=1 then
     arr[i].kol:=arr[i].kol+1;
  end;
writeln('Производить ввод данных?(y/n)');
readln(ans);
until ans<>'y';

for i:=1 to n do
begin
writeln(i,' ', arr[i].kol);
  if max < arr[i].kol  then begin max:=arr[i].kol;
q:=i;

       end;
       end;
       writeln('Максимальное количество наркоманов в городе ',arr[q].name,', их ', max);


end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

Репутация: -  20  +


Ну не создавай ты новые темы,пиши в предыдущих,а по делу
Цитата
требуют с процедурами что бы были команды.

С процедурами это понятно,но вот обьясни, что за команды?футбольные чтоли? наркоманы на команды разбились?Пожалуйста,пиши болеее развернуто,что тебе нужно.Тогда тебе быстрее и правильнее ответят.Если вы все таки отказались от использования перечислимых типов,то ваш код можно изрядно сократить.Например надобность в переменной Tname вообще отпала, можно смело удалить все,где оно попадается.
if Tname=arr[i].name then станет if temp=arr[i].name then
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Женский
Реальное имя: Юлия

Репутация: -  0  +


Цитата(Krjuger @ 21.02.2012 21:13) *

Ну не создавай ты новые темы,пиши в предыдущих,а по делу



Нужно использовать модуль и соответственно + процедуры.

эта часть идет как отдельная процедура
writeln('Введите город');
readln(temp);
for i:=1 to n do
if temp=arr[i].name then Tname:=arr[i].name;

if (temp<> arr[1].name) and (temp <> arr[2].name) and (temp<> arr[3].name) and (temp<>arr[4].name) then writeln('Вы ввели неверный город');


потом эта
for i:=1 to n do
if Tname=arr[i].name then
begin
writeln('употребляешь нарктотики?');
readln(arr[i].nar);
if arr[i].nar=1 then
arr[i].kol:=arr[i].kol+1;
end;
writeln('Производить ввод данных?(y/n)');
readln(ans);


и последняя
for i:=1 to n do
begin
writeln(i,' ', arr[i].kol);
if max < arr[i].kol then begin max:=arr[i].kol;
q:=i;

end;
end;


просьба использовать паскалевские теги (см. п.2 вверху этой страницы)

Сообщение отредактировано: Lapp -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

Репутация: -  20  +


Ну тогда все будет вот так вот.Вот файл модуля.

Unit Help2;

interface
type
city=record
name:string;
nar: byte;
kol: integer;
end;

procedure MyCreate(var arr:array of city);
procedure MyInput(n:integer;var arr:array of city;temp:string);
function MySearch(n:integer;arr:array of city):integer;

implementation

procedure MyCreate;
begin
arr[1].name:='Magnitogorsk';
arr[2].name:='Saratov';
arr[3].name:='Moscow';
arr[4].name:='Perm';
arr[1].kol:=0;
arr[2].kol:=0;
arr[3].kol:=0;
arr[4].kol:=0;
end;

procedure MyInput;
var
i:integer;
begin
if (temp<> arr[1].name) and (temp <> arr[2].name) and (temp<> arr[3].name) and (temp<>arr[4].name) then
writeln('Вы ввели неверный город');
for i:=1 to n do
if temp=arr[i].name then
begin
writeln('употребляешь нарктотики?');
readln(arr[i].nar);
if arr[i].nar=1 then
arr[i].kol:=arr[i].kol+1;
end;
end;

function MySearch;
var
i:integer;
max:integer;
begin
max:=0;
for i:=1 to n do
begin
writeln(i,' ', arr[i].kol);
if max < arr[i].kol then
begin
max:=arr[i].kol;
MySearch:=i;
end;
end;
end;
begin
end.


Ну а вот сам файл программы.

uses Help2;
const n=4;
Var
arr:array[1..4] of city;
numb:integer;
temp:string;
ans:string;
begin
MyCreate(arr);
repeat
writeln('Введите город');
readln(temp);
MyInput(n,arr,temp);
writeln('Производить ввод данных?(y/n)');
readln(ans);
until ans<>'y';

numb:=MySearch(n,arr);
writeln('Narikov bolshe v ',arr[numb+1].name,', ih ', arr[numb+1].kol);
readln;
end.


Пробуй проверяй,пиши результат и не пропадай,новую тему тоже создавать ненадо. smile.gif


P.s.Вопрос к более опытным.Поначалу, я хотел цикл Repeat until оставить внутри процедуры MyInput, но на строке readln(temp); он мне начал выдавать ошибку 104, что не может найти путь к файлу....Пришлось цикл вынести и передавать temp, как переменную,но почему такое произошло я не могу понять.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 19.05.2024 21:06
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name