Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.05.2009, 18:58   #1
Альбиша
Пользователь
 
Регистрация: 13.12.2008
Сообщений: 20
По умолчанию Задача на списки, массивы

Please, help me!!!
___________________________________ ______________________________
200 учеников шести школ города (номера школ заданы) принимают участие в тестировании по математике. Правильные численные ответы к пяти предложенным задачам даны. О каждом ученике известно: фамилия, номер школы и пять ответов на задачи. Сведения об учениках не имеют определенной упорядоченности. Составить списки учеников по школам, расположив в каждом списке фамилии в порядке убывания количества решенных задач. Предусмотреть возможный ответ "не решил".
___________________________________ ______________________________
Альбиша вне форума Ответить с цитированием
Старый 09.05.2009, 16:20   #2
Альбиша
Пользователь
 
Регистрация: 13.12.2008
Сообщений: 20
По умолчанию

Помоооогитеее, ну неужели никто не знает как это сделать.
Альбиша вне форума Ответить с цитированием
Старый 09.05.2009, 16:31   #3
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Так а чем вам помочь? Написать за вас?
Вы спрашивайте, что непонятно.
Вроде, все в задании ясно написано.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 10.05.2009, 14:10   #4
Альбиша
Пользователь
 
Регистрация: 13.12.2008
Сообщений: 20
По умолчанию

Да я практически дуб дубом в программировании. =( Посмотри это:
Код:
program zadacha_1;
 uses crt;
  type
  s=record {Список учеников}
   f: string[15];{фамилия}
   sсh:integer;{№ школы}
   h:integer;{переменная счетчик}
   oc_1: 1..5; {оценка по первой задаче}
   oc_2: 1..5; {оценка по второй задаче}
   oc_3: 1..5; {оценка по третьей задаче}
   oc_4: 1..5; {оценка по четвертой задаче}
   oc_5: 1..5; {оценка по пятой задаче} 
  end;
  var
   a: array [1..200] of s; {массив учащихся}
   n: integer;{количество учащихся в каждой школе}
   i: integer;
  begin
   clrscr;
   writeln('Введите количество учащихся');
   readln(n);
    for i:=1 to n do
     with a[i] do
      begin
       write('Введите фамилию ',i,' учащегося--> ');
       readln (f);
        write('Введите школу-->');
       readln(sch);
       write ('введите его пять оценок ');
         readln (oc_1, oc_2, oc_3, oc_4, oc_5);
        end;
      end;
Дальше я не сильна. Как предусмотреть ответ не решил? Можешь по возможности написать дальнейшие действия, пожалуйста!
Альбиша вне форума Ответить с цитированием
Старый 10.05.2009, 15:22   #5
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Как предусмотреть ответ не решил?
Просто если количество решенных задач = 0, то выводить "не решил". Я так понимаю.

У вас будут 3 массива (3 школы). Идете по исходному массиву. Смотрите, сколько задач решил текущий ученик. Смотрите на его школу и помещаете в соответствующий массив. При этом помещаете в нужное место (чтобы массив был отсортирован). Или можно просто сначала раскидать учеников по 3-м массивам и уже потом их отсортировать по количеству решенных задач.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 10.05.2009, 15:33   #6
Альбиша
Пользователь
 
Регистрация: 13.12.2008
Сообщений: 20
По умолчанию

насчет не решил, так будет:
oc: 0; {не решил}???
Если не трудно, можешь мне на языке программирования хотя бы описать первый массив.

Последний раз редактировалось Альбиша; 10.05.2009 в 15:35.
Альбиша вне форума Ответить с цитированием
Старый 10.05.2009, 15:42   #7
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Альбиша, на самом деле, как-то непонятно, где это "не решил" должно быть и куда его надо писать. Возможно, ответы задаются не числами, а строками.
Сделайте пока остальное:
пройдите по исходному массиву и распределите учеников по 3-м массивам (в соответствии со школой).
Потом уже эти массивы отсортируете.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 10.05.2009, 15:44   #8
Альбиша
Пользователь
 
Регистрация: 13.12.2008
Сообщений: 20
По умолчанию

Тут наверно имеется в виду : решил/не решил, я так поняла?
Альбиша вне форума Ответить с цитированием
Старый 10.05.2009, 15:52   #9
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Тут наверно имеется в виду : решил/не решил, я так поняла?
Не думаю. Похоже, вот так:
есть массив правильных ответов (5 элементов). Массив строк.
А у каждого ученика есть массив ответов. И вот там может быть ответ "не решил". Только вот не вижу смысла что-то предусматривать, т.к. неправильный ответ и "не решил", фактически, одно и то же.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 20.05.2009, 20:39   #10
Альбиша
Пользователь
 
Регистрация: 13.12.2008
Сообщений: 20
По умолчанию

Можно как-нибудь проще написать эту программку, так чтобы места занимала поменьше Посмотрите пожалуйста:
Код:
Program 1;
Const
No_1:=1;      /номера школ/
No_2:=4;
No_3:=5;
No_4:=6;
No_5:=8;
No_6:=9;
N:=200;         /кол-во учеников всего/
Var
	Sp: array [1..n] of string [15];   /список фaмилий/
	Sch:  array [1..n] of integer;  /список номеров школ/
	Sp1: array [1..n] of string [15];    /список фамилий учеников 1-ой школы №1/
	Sp2: array [1..n] of string [15];    
	Sp3: array [1..n] of string [15];    
	Sp4: array [1..n] of string [15];    
	Sp5: array [1..n] of string [15];    
	Sp6: array [1..n] of string [15];    
K1: array [1..n] of integer;      /кол-во решенных задач учеников 1-ой школы №1/
K2: array [1..n] of integer;      
K3: array [1..n] of integer;      
K4: array [1..n] of integer;      
K5: array [1..n] of integer;      
K6: array [1..n] of integer;    
PO: array [1..5] of real;    /правильные ответы/
OT: array [1..n, 1..5] of real;  /ответы учеников/
x,i j,k,i1,i2,i3,i4,i5,i6,x1,x2,x3,x4,x5,x6: integer;
	Begin
		Writeln(' введите 5 правильных ответов');
		For j:=1 to 5 do
		Readln(PO[j]);
Writeln('vvedite',n,'familiy');
For i:=1 to n do
Readln(sp[i]);
Writeln(' введите номера школ');
For i:=1 to n do
Readln(sch[i]);
Writeln(' введите 5 ответов каждого из',N,'учеников');
For i:=1 to n do
For j:=1 to 5 do
Read(OT[i,j]);
Writeln('schola',No_1);
x1:=0;              /количество учеников школы/
For i:=1 to n do
Begin
If sch[i]=No_1 then
           Begin
 x1:=x1+1;
i1:=x1;
sp1[i1]:=sp[i];   /переносим ученика из общего списка в список учеников 1-ой школы/
for j:=1 to 5 do
begin
if OT[i,j]=PO[j] then
k:=k+1; 
end;
   k1[i1]:=k;
    end;
end;
x:=0;    /число повторений обхода сортировки/
repeat
for i1:=1 to x1 do
begin
	if k1[i1]<k1[i1+1] then
                   	begin
		k1[i1]:=k1[i1+1];
		k1[i1+1]:=k1[i1];
		sp1[i1]:=sp1[i1+1];
		sp1[i1+1]:=sp1[i1];
		x:=x+1;
		end;
end;
until x=x1;
for i1:=1 to x1 do
writeln(sp1[i1]);
writeln('школа',No_2);
x2:=0;
…………………………………….
Если можно уменьшить, напишите пожалуйста код.

Последний раз редактировалось Альбиша; 20.05.2009 в 20:42.
Альбиша вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на линейные списки Ser Паскаль, Turbo Pascal, PascalABC.NET 8 06.05.2011 20:22
задача на структурированые списки innaa639 Помощь студентам 9 03.03.2009 02:19