Помощь - Поиск - Пользователи - Календарь
Полная версия: помогите.[двумерные массивы+записи]
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
TreyOl
В N городах провели обследование жителей на предмет употребления или не-употребления ими наркотиков (1 - употребляет, 0 - не употребляет). Результаты обсле-дования жителей поступают не упорядоченными по городам. Определить города с мак-симальной тенденцией к употреблению наркотиков.

должна быть запись из 4-ех городов. Напримерм. магнитогорск.саратов.пермь.ульяновск.

исполнителю идет текст.
он отвечает магнитогорск 1.
следующий саратов 0.
магнитогорск 1.
и т.д.
в конце вывести у кого максимум.
Krjuger
Я вот только не уловил причем здесь двухмерные массивы?У тебя будет одномерный массив из 4 элементов.Считываешь из файла название города магнитогорск.саратов.пермь.ульяновск. если возле города ноль,то ничего не делаешь,идешь дальше,если около города 1,то записываеш в наш массив в ячейку,соотв нашему городу.Возьмем твой пример.
магнитогорск 1. массив выглядит как (1,0,0,0)
саратов 0. массив выглядит как (1,0,0,0)
пермь 1. массив выглядит как (1,0,1,0)
магнитогорск 1. массив выглядит как (2,0,1,0).В конце ищещ максимум из 4 этих чисел.Это будет первое число,что соответствует городу магнитогорску.

Все, что я написал решит твою задачу в том виде,в котором она изложена,если там есть еще какие то параметры,то уж извини,об этом ничего не было сказано.Попробуй написать,сама,если не получиться,покажешь,тебе помогут.
TreyOl
Цитата(Krjuger @ 8.02.2012 15:47) *



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


Просто лабораторная называется двумерные массивы. подходила к учителю, сказала что будет record состоять из названия города и 0.1.

я должна буду вводить данные..
"магнитогорск 1"
"Саратов 0"
"магнитогорск 0"
"магнитогорск 1"

так например.

нужно из вводимых данных создать еще record. Но в нем уже не будет повторений("магнитогорск", "магнитогорск").
а будут только по одному имени города. и + уже подсчитаные голоса 1+.

и вывести город с наибольшим надо.
возможно массивы и не нужны будут.
помогите..вообще не знаю уже что делать.
Гость
Ну record, так record.Вы покажите,как вы пытались решить эту задачу,чтобы было видно,что вы пытались решить ее.
TreyOl
Цитата(Гость @ 8.02.2012 17:42) *

Ну record, так record.Вы покажите,как вы пытались решить эту задачу,чтобы было видно,что вы пытались решить ее.


Сначала так.
uses crt;
const n=10;
var
a:array [1..n,1..2] of integer;
i,kol,kol1,m: integer;
begin
writeln('введите город');
readln(m);
writeln('введите колличесвто жителей употребляющие наркотики, kol');
readln(kol);
writeln('введите колличесвто жителей НЕ употребляющие наркотики, kol1');
readln(kol1);
a[m,1]:=0;
a[m,2]:=0;

a[m,1]:=a[m,1]+kol;
a[m,2]:=a[m,2]+kol1;

writeln('употребляют ',a[m,1],',а не употребляют ', a[m,2]);
end.
______________________________________________
но потом сказали что нужен record.
и вот только до этого дошла.
и то ошибки(


uses crt;
type town=record;
name:(Magnitogorsk,Saratov,Mockva,Perm);
kol:0,1: byte;
end;

var
a:array [1..n] of integer;
i:integer;
t1,t2: town;

begin


writeln('введите город');
readln(t1.name);
writeln('употребляешь нарктотики');
readln(t1.kol);
end.

Krjuger
Ничего не понял,то вы вводите количество наркоманов,то вы говорите что вам надо говорить есть ли наркоман или нет,то еще что то.

Как я понимаю, у вас есть 4 города, вы якобы снуете по этим городам и ищите наркоманов,нашли отправили отчет, то есть в базу добавляеться всегда по 1 наркоману,либо сообщаеться,что оный не найден, так?

Эх вы действительно хотите помучаться с перечислимыми типами данных?Для них не работают стандартные функции ввода вывода.....
Krjuger
В общем так,я не нашел стандартных сособов ввода,вывода перечислимых типов, поэтому сделал следующее, я сделал, как смог, заполнение нашего массива записей,теперь тебе надо найти максимальное значение наркоманов и вывести ответ на экран.

uses crt;
const n=4;
type
town=(Magnitogorsk,Saratov,Moscow,Perm);
type city=record
name:town;
nar: byte;
kol: integer;
end;

var
temp:string;
arr :array[1..n] of city;
i:integer;
Ans:char;
Tname:town;
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('Vvedite gorod');
readln(temp);
if temp='Magnitogorsk' then
Tname:=Magnitogorsk
else
if temp='Saratov' then
Tname:=Saratov
else
if temp='Moscow' then
Tname:=Moscow
else
if temp='Perm' then
Tname:=Perm
else
writeln('Vi vveli neverniy gorod');

for i:=1 to n do
if Tname=arr[i].name then
begin
writeln('Est8 li narkoman?');
readln(arr[i].nar);
if arr[i].nar=1 then
arr[i].kol:=arr[i].kol+1;
end;
writeln('prodolzit* vvod?(y/n)');
Ans:=readkey;
until ans<>'y';
for i:=1 to n do
writeln(i,' ', arr[i].kol);

readln;
end.


Это,момент когда вводится неверный город в таком виде не работает,я только что заметил,так что надо будет подправить.Сейчас моя программа выводит количество норкаманов во всех городах по списку.
TreyOl
Цитата(Krjuger @ 8.02.2012 20:23) *

В общем так,я не нашел стандартных сособов ввода,вывода перечислимых типов, поэтому сделал следующее, я сделал, как смог, заполнение нашего массива записей,теперь тебе надо найти максимальное значение наркоманов и вывести ответ на экран.

Это,момент когда вводится неверный город в таком виде не работает,я только что заметил,так что надо будет подправить.Сейчас моя программа выводит количество норкаманов во всех городах по списку.


Да я изначально не правильно начала делать...

Мм..ясно. Спасибо большое. Попробую подправить wink.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.