Форум программистов, компьютерный форум, киберфорум
Наши страницы
Pascal ABC
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 114, средняя оценка - 4.61
and1
4 / 4 / 0
Регистрация: 27.10.2009
Сообщений: 67
#1

Определение количества абитуриентов, проживающих в городе Минске - Pascal ABC

30.10.2009, 23:03. Просмотров 14621. Ответов 123

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

В программе должны присутствовать следующие процедуры:

1. Формирование динамического списка с элементами, содержащими следующие поля:
Ф.И.О. абитуриента, постоянное место жительства, оценки по физике, математике и русскому языку.
2. Вывод списка на экран;
3. Добавление элемента в список;
4. Удаление элемента из списка;
5. Поиск элемента списка по соответствующему полю;
6. Определение количества абитуриентов, проживающих в городе Минске и сдавших экзамены со средним баллом не ниже 4. Вывести их фамилии в алфавитном порядке.
7. Запись в файл и загрузка из файла.

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

Как другие писать не буду напишите мне программу и тому подобное, сам всегда программирование делал и делать буду... Вопрос вот в чем: с чего тут начинать, список этот к клавиатуры вводить или если разу фаил сделать то сразу из файла данные брать... Плиз подскажите....
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.10.2009, 23:03
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Определение количества абитуриентов, проживающих в городе Минске (Pascal ABC):

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

Считая фамилии абитуриентов и их оценки после первого экзамена исходными данными, составить список абитуриентов, допущенных ко второму экзамену
Задача 3. При поступлении в университет лица, получившие оценку...

Определение количества цифр в числе
Помогите, пожалуйста, с алгоритмом для определения количества цифр в числе.

Определение минимального количества элементов последовательности
Навести фрагмент кода программы для определения минимального количества...

Определение количества и адресов положительных элементов массива
Составить схему алгоритма и программу определения количества и адресов...

Определение количества положительных элементов квадратной матрицы
Опишите на русском языке или на одном из языков программирования алгоритм...

123
Inadequate
Retired
7709 / 2542 / 670
Регистрация: 17.10.2009
Сообщений: 5,100
30.10.2009, 23:16 #2
Цитата Сообщение от and1 Посмотреть сообщение
Как другие писать не буду напишите мне программу и тому подобное, сам всегда программирование делал и делать буду...
похвально...
Цитата Сообщение от and1 Посмотреть сообщение
Вопрос вот в чем: с чего тут начинать, список этот к клавиатуры вводить или если разу фаил сделать то сразу из файла данные брать... Плиз подскажите....
а что тут непонятного? вам нужно сделать программу которая будет представлять из себя некую БД(базу данных). вы должны предоставить пользователя возможности по работе с ней, т.е вывод, добавление и т.д... файл не создается вручную, программа должна проверить есть ли он? если есть предоставить к нему доступ, а если нет тогда создать новый... чтобы в бд что то было, туда надо что то ввести, поэтому понятно что редактирование будет производится в процессе выполнения программы... ну и конечно оформить чтобы все не было КАШЕЙ потому как писать немало...

Добавлено через 3 минуты
ах да забыл написать, сортировка (т.е. пункт 6)... не знаю как у вас будут требовать, но у нас требовали сортировку через массивы... а это не очень приятно.... но я не знаю как у вас...
0
and1
4 / 4 / 0
Регистрация: 27.10.2009
Сообщений: 67
31.10.2009, 00:00  [ТС] #3
спс за разъяснение, а то сижу про эти списки 3-й день читаю, так и думал что это БЗ будет. Если будут вопросы напишу
0
lexus_ilia
3050 / 710 / 69
Регистрация: 24.09.2008
Сообщений: 1,531
31.10.2009, 01:46 #4
У Вас главная задача стоит научиться работать со списками, поэтому создание и загрузка файла стоит у Вас в последнем пункте, самое главное для Вас - это работа со списками, указателями, вот над этим сначало и думайте. Пишите программу для работы с однонаправленным списком, имеющим нужные для вас поля и поле указатель (не забывайте его обнулять) ну и выполняйте Ваше задание пошагово...
0
and1
4 / 4 / 0
Регистрация: 27.10.2009
Сообщений: 67
01.11.2009, 14:06  [ТС] #5
А от списков к бс можно перейти или же мне на списках и стоит оставаться?
0
Puporev
Модератор
54148 / 41781 / 28887
Регистрация: 18.05.2008
Сообщений: 98,330
01.11.2009, 14:46 #6
Раз в задании
7
. Запись в файл и загрузка из файла.
Значит нужно будет Элементы списка загрузить в типизированный файл и дальше уже работать с ним, т.е. БД.
0
Inadequate
Retired
7709 / 2542 / 670
Регистрация: 17.10.2009
Сообщений: 5,100
01.11.2009, 14:46 #7
Цитата Сообщение от and1 Посмотреть сообщение
бс
непонятно что это такое, возможно вы имели ввиду бд. вам нужно сделать нечто подобное как в этой теме http://www.cyberforum.ru/pascal/thread60214.html#post331135. Там конечно не все вам нужно но думаю что полезные участки кода для вашей программы вы найдете.

Не по теме:

и конечно не забываем нажимать кнопочку спасибо Страдальцу за его большой труд:)

1
and1
4 / 4 / 0
Регистрация: 27.10.2009
Сообщений: 67
01.11.2009, 16:28  [ТС] #8
Цитата Сообщение от Inadequate Посмотреть сообщение
непонятно что это такое, возможно вы имели ввиду бд. вам нужно сделать нечто подобное как в этой теме http://www.cyberforum.ru/pascal/thread60214.html#post331135. Там конечно не все вам нужно но думаю что полезные участки кода для вашей программы вы найдете.

Не по теме:

и конечно не забываем нажимать кнопочку спасибо Страдальцу за его большой труд:)

спс за тему, не люблю конечно всякие процедуры и функции но что-нибудь да позаимствую, хотя там еще разобраться нужно
0
Puporev
Модератор
54148 / 41781 / 28887
Регистрация: 18.05.2008
Сообщений: 98,330
01.11.2009, 16:34 #9
Цитата Сообщение от and1 Посмотреть сообщение
не люблю конечно всякие процедуры и функции
А без них Вы программу не составите нормально. Обязательно должны они быть и вызываться из меню.
0
and1
4 / 4 / 0
Регистрация: 27.10.2009
Сообщений: 67
02.11.2009, 20:00  [ТС] #10
Оказалось самым веселым это делать интерфейс, вот вот уже закончу выложу на суд....
0
and1
4 / 4 / 0
Регистрация: 27.10.2009
Сообщений: 67
04.11.2009, 15:58  [ТС] #11
Народ хелп не могу ввести список с клавиатуры, может кто помочь кусочком кода?
0
Inadequate
Retired
7709 / 2542 / 670
Регистрация: 17.10.2009
Сообщений: 5,100
04.11.2009, 16:03 #12
вот тут прога моего одногруппника там есть некая процедура add она добавляет новый элемент в список, я думаю чуть переделаешь и пойдет:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
type
   link = ^kom;
   kom  = record
         ini  : integer;
         next : link;
      end;
var
   pn        : link;
   arg, j, m : integer;
 
procedure add(var n : link; x, num:integer);
var
   neo, ind : link;
   i        : integer;
begin
   new(neo);
   neo^.ini:=x;
   if n=nil then begin
      n:= neo;
      neo^.next:=nil;
   end
   else if num=1 then begin
      neo^.next:=n;
      n:= neo;
   end
   else begin
      i:=0;
      ind:= n;
      while (i<>num-2) and (ind^.next<>nil) do begin
     i:= i+1;
     ind:= ind^.next;
      end;
      neo^.next:=ind^.next;
      ind^.next:= neo;
   end;
end; { add }
 
procedure del(var n : link; num:integer);
var
   neo, ind : link;
   i        : integer;
begin
   if n<>nil then begin
   if num=1 then begin
      neo:=n;
      n:=n^.next;
      dispose(neo);
   end
   else begin
      i:=0;
      ind:=n;
      while (i<>num-2) and (ind^.next<>nil) do begin
     i:=i+1;
     ind:=ind^.next;
      end;
      if ind^.next<>nil then begin
     neo:=ind^.next;
     ind^.next:=neo^.next;
     dispose(neo);
      end;
   end;
   end;
end; { del }
 
procedure veiw(n : link);
var
   ind : link;
   i   : integer;
begin
   ind:=n;
   i:=0;
   if ind=nil then writeln ('List is empty')
   else begin
      writeln; writeln('The list is');
      while ind<>nil do begin
     i:=i+1;
     writeln(i,')  ',ind^.ini);
     ind:=ind^.next;
      end;
   end;
end; { veiw }
 
procedure spec(var n : link; num:integer);
var
   ind : link;
   i   : integer;
begin
   i:=0;
   ind:=n;
   while ind<>nil do begin
      i:=i+1;
      ind:=ind^.next;
   end;
   if i<num then writeln ('The list consists of only ',i,' elements')
   else begin
      i:=0;
   while i<>num do begin
      i:= i+1;
      ind:=n;
      n:=n^.next;
      dispose(ind);
   end;
   end;
end; { spec }
 
begin
   pn:=nil;
   m:=1;
   while m<>0 do begin
      writeln; writeln;
      writeln('Type "1" to ADD new element to the list');
      writeln('Type "2" to DELETE element from the list');
      writeln('Type "3" to VEIW the list');
      writeln('Type "4" to DELETE first k-elements');
      writeln('Type "0" to exit program');
      writeln;
      readln(m);
      case m of
    1 : begin
        write('Enter new element : ');
        readln(arg);
        write('Enter place : ');
        readln(j);
        add(pn,arg,j);
         end;
    2 : begin
           write('Enter number of the element : ');
           readln(j);
           del(pn,j);
        end;
    3 : begin
           veiw(pn);
        end;
    4 : begin
           writeln('Enter number of elements : ');
           readln(j);
           spec(pn,j);
        end;
      end; { case }
   end;
end.
1
and1
4 / 4 / 0
Регистрация: 27.10.2009
Сообщений: 67
04.11.2009, 17:36  [ТС] #13
еще возник вопрос: как можно сделать вывод красивым списка уже сформированного, чтобы смотрелось как по столбикам?
0
Inadequate
Retired
7709 / 2542 / 670
Регистрация: 17.10.2009
Сообщений: 5,100
04.11.2009, 18:18 #14
Цитата Сообщение от and1 Посмотреть сообщение
смотрелось как по столбикам?
это как?

Добавлено через 26 минут
в любом если хочешь сделать программу "в цвете" использую модуль crt;
или можешь попробывать сделать просто аккуратно через строчки ----------- запусти в паскале, если понравится сделай тоже самое при выводе списка, только с указание номера элемента списка, ну вообщем используй фантазию...
Pascal
1
2
3
4
5
6
7
8
uses
  crt;
begin
  clrscr;
  writeln('-------------------------------------------------------------------------------');
  writeln('                       ГђГЂГЃГЋГ’ГЂ ГЏГЋ Г’Г…ГЊГ… ËÈÍÈÉÍÛÅ ÑÏÈÑÊÈ                        ');
  writeln('-------------------------------------------------------------------------------');
end.
0
and1
4 / 4 / 0
Регистрация: 27.10.2009
Сообщений: 67
04.11.2009, 18:22  [ТС] #15
Цитата Сообщение от Inadequate Посмотреть сообщение
это как?
ну ФИО один столбец Адрес столбец 2 оценки 3 столбец чтобы красиво было тоесть фамилии под фамилиями адреса под адресами оценки под оценками....

Добавлено через 3 минуты
От чего при печатании списка не выводит на экран первую строку списка а печатает со 2???
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
program lr1;
uses crt;
type
  link=^elem;
  elem=record
    inf:string;
    next:link
  end;
var
  i,j,menu:integer;
  pn,arg,n:link;
  st:string;
  {Ввод списка с клавиатуры}
  procedure create(var pn,arg:link; var st:string);
  begin
    new(pn);
    pn^.next:=nil;
    pn^.inf:=st;
    arg:=pn;
  end;
  {печать списка}
  procedure print(n : link);
  var
   ind : link;
   i   : integer;
  begin
   ind:=n;
   i:=0;
   if ind=nil then writeln ('Список пуст')
              else
              begin
                 writeln;
                 writeln('В списке следующие записи:');
                while ind<>nil do
                begin
                  i:=i+1;
                  writeln(i,')  ',ind^.inf);
                  ind:=ind^.next;
                end;
              end;
  end; { print }
 
begin
  clrscr;
  pn:=nil;
  menu:=1;
  while menu<>0 do
  begin
    writeln;
    writeln('1 - Формирование списка.');
    writeln('2 - Вывод списка на экран.');
    writeln('3 - Добавление элемента в список.');
    writeln('4 - Удаление элемента из списка.');
    writeln('5 - Поиск элемента списка по соответствующему полю.');
    writeln('6 - Определение количества абитуриентов, проживающих в городе Минске и сдавших экзамены со средним баллом не ниже 4. Вывести их фамилии в алфавитном порядке.');
    writeln('7 - Запись в файл и загрузка из файла.');
    writeln('0 - Выход');
    writeln('Введите пунк меню');
    readln(menu);
    case menu of
      1 : begin
          writeln('Введите количество студентов в списке:');
          readln(j);
          writeln('Введите ФИО студента, адрес проживания, оценки по экзаменам математика, физика, русский язык');
          readln(st);
          create(pn,arg,st);
          writeln;
          for i:=2 to j do
          begin
            readln(st);
            create(pn,arg,st);
          end;
        end;
      2:begin
          print(pn);
        end;
      {3:add;
      4:del;}
    end;{case}
  end;{while}
end.
0
and1
4 / 4 / 0
Регистрация: 27.10.2009
Сообщений: 67
11.11.2009, 20:04  [ТС] #16
так кто нибудь может подкинуть идею как можно красиво выводить список, чтобы он как таблица выглядел?? то есть информация ровными столбцами выводилось как в таблице, фио адрес оценки есть у кого идеи какие я уже и не знаю как это и сделать
0
Puporev
Модератор
54148 / 41781 / 28887
Регистрация: 18.05.2008
Сообщений: 98,330
11.11.2009, 20:06 #17
and1, Полистай в поиске темы на записи и типизированные файлы, кучу программ писал с таблицами.
0
and1
4 / 4 / 0
Регистрация: 27.10.2009
Сообщений: 67
11.11.2009, 20:39  [ТС] #18
вначале бы еще разобраться как список так вывести чтобы он в красивую таблицу превратился
0
Puporev
Модератор
54148 / 41781 / 28887
Регистрация: 18.05.2008
Сообщений: 98,330
11.11.2009, 20:49 #19
Ну если уж лень самому искать, вот пример такого вывода.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
uses crt;
const n=7;
type TStud=record
           fio:string[15];
           god:Word;
           pol:char;
           alg:byte;
           ist:byte;
           evm:byte;
           srb:real;
           end;
var sp:array[1..n] of Tstud;
    i:byte;
    srg:real;
begin
clrscr;
writeln('Введите данные:');
for i:=1 to n do
  begin
    writeln('Студент ',i);
    write(' Фамилия И.О.: ');readln(sp[i].fio);
    repeat
     write(' Пол: ');readln(sp[i].pol);
    until sp[i].pol in ['М','Ж'];
    write(' Год рождения: ');readln(sp[i].god);
    repeat
     write(' Оценка по алгебре ');
     readln(sp[i].alg);
     write(' Оценка по истории ');
     readln(sp[i].ist);
     write(' Оценка по ЭВМ ');
     readln(sp[i].evm);
    until (sp[i].alg in [2..5])and(sp[i].ist in [2..5])and(sp[i].evm in [2..5]);
    sp[i].srb:=(sp[i].alg+sp[i].ist+sp[i].evm)/3;
   end;
clrscr;
writeln('Полный список группы:':40);
writeln;
writeln('--------------------------------------------------------------');
writeln('|  Фамилия И.О.  | Пол | Год рожд. | Алгебра | История | ЭВМ |');
writeln('--------------------------------------------------------------');
for i:=1 to n do
   begin
      gotoXY(1,whereY);write('| ',sp[i].fio);
      gotoXY(18,whereY);write('|  ',sp[i].pol);
      gotoXY(24,whereY);write('|   ',sp[i].god);
      gotoXY(36,whereY);write('|    ',sp[i].alg);
      gotoXY(46,whereY);write('|    ',sp[i].ist);
      gotoXY(56,whereY);write('| ',sp[i].evm);
      gotoXY(62,whereY);write('|');
      writeln;
     end;
readln;
clrscr;
srg:=0;
for i:=1 to n do
srg:=srg+sp[i].srb/n;
writeln('Средний балл по группе=',srg:0:2);
writeln;
writeln('Список студентов, имеющих средний балл выше среднего:':50);
writeln;
writeln('------------------------------------------------------------------------');
writeln('|  Фамилия И.О.  | Пол | Год рожд. | Алгебра | История | ЭВМ | Ср.балл |');
writeln('------------------------------------------------------------------------');
for i:=1 to n do
if sp[i].srb>srg then
   begin
      gotoXY(1,whereY);write('| ',sp[i].fio);
      gotoXY(18,whereY);write('|  ',sp[i].pol);
      gotoXY(24,whereY);write('|   ',sp[i].god);
      gotoXY(36,whereY);write('|    ',sp[i].alg);
      gotoXY(46,whereY);write('|    ',sp[i].ist);
      gotoXY(56,whereY);write('|  ',sp[i].evm);
      gotoXY(62,whereY);write('| ',sp[i].srb:0:2);
      gotoXY(72,whereY);write('|');
       writeln;
     end;
readln
end.
1
and1
4 / 4 / 0
Регистрация: 27.10.2009
Сообщений: 67
11.11.2009, 22:01  [ТС] #20
хм так можно просто изменить ввод чтобы вводилось отдельно фамилия и все остальные данные хм тогда и сортировку можно сделать по другому спс за наводку куча мыслей появилась пошел вбивать пальци в клаву!!!

Добавлено через 42 минуты
не если пойти таким способом то придется переписать занового всю программу чего не очень хочется... Так как уже добавление формирование удаление и вывод есть сделанный через процедуры. Может как-то проще через стоки это сделать или я мот туплю до сих пор в списках ((
0
11.11.2009, 22:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.11.2009, 22:01
Привет! Вот еще темы с решениями:

Определение количества положительных и отрицательных элементов массива
Составить программу определения количества положительных и отрицательных...

Определение количества цифр в записи произвольного натурального числа
Попросили создать. Нужно решение следующих заданий 1) Составьте программу для...

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

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru