Форум программистов, компьютерный форум, киберфорум
Наши страницы
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
Byrone
1 / 1 / 0
Регистрация: 17.10.2010
Сообщений: 115
1

Подкорректировать сортировку в программе

26.09.2011, 18:14. Просмотров 303. Ответов 1
Метки нет (Все метки)

добрый день
вот текст программы:
программа сортирует строки в порядке убывания сумм
мне же надо чтобы она выводила предмет на который было потрачено меньше всего (Физика ср.15.12 650)
собственно его и надо вывести
помогите пожалуйста
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
uses CRT;
 
function WordPos(N: integer; str: string): integer;
var
 s, {sostoyanie}
 w, {kol-vo scitannih slov}
 i: integer;
begin
 s:= 1;
 i:= 0; w:= 0;
 while (i <= Length(str)) and (w < N) do begin
  i:= i + 1;
  if (str[i] = ' ') and (s = 2) then s:= 1
  else if (str[i] <> ' ') and (s = 1) then begin
   s:= 2;
   w:= w + 1;
  end;
 end;
 if w = N then
  WordPos:= i
 else {esli net slova s nomerom N v stroke}
  WordPos:= 0;
end;
 
 
function WordCount(s: string): integer;
{kol-vo slov v stroke s}
var
 i: integer;
begin
 i:= 0;
 while WordPos(i+1, s) <> 0 do
  i:= i + 1;
 WordCount:= i;
end;
 
function ExtractWord(N: integer; s: string): string;
{izvlekaet slovo s nomeron N iz stroki s}
var
 i: integer;
 s1: string;
begin
 s1:= '';
 i:= WordPos(N, s);
 if i > 0 then
  while (i<=Length(s)) and (s[i] <> ' ') do begin
   s1:= s1 + s[i];
   i:= i + 1;
  end;
 ExtractWord:= s1;
end;
 
type
 Predmet = record
  Name: string;
  Money: integer;
 end;
 
var
 Predmeti: array[1..10] of Predmet;
 P: Predmet;
 s, name: string;
 f1, f2: text; {tekst. fayli}
 N, {kol-vo predmetov}
 money, code,
 i, j: integer;
 
begin
 ClrScr;
 N:= 0;
 Assign(f1, 'in.txt');
 Reset(f1);
 while not eof(f1) do begin
  ReadLN(f1, s);
  name:= ExtractWord(1, s);
  val(ExtractWord(3, s), money, code);
  i:= 1;
  while (i<=N) and (Predmeti[i].Name<>name) do
   i:= i + 1;
  if i > N then begin {takogo predmeta ne bilo}
   N:= N + 1;
   Predmeti[N].Name:= name;
   Predmeti[N].Money:= money;
  end else
   Predmeti[i].Money:= Predmeti[i].Money + money;
 end;
 Close(f1);
 
 {sortirovka}
 for i:= 1 to N-1 do
  for j:= i+1 to N do
   if Predmeti[i].money < Predmeti[j].money then begin
    P:= Predmeti[i];
    Predmeti[i]:= Predmeti[j];
    Predmeti[j]:= P;
   end;
 
 {vivod rez-v}
 
 Assign(f2, 'out.txt');
 ReWrite(f2);
 for i:= 1 to N do
  WriteLN(f2, Predmeti[i].Name, ' ', Predmeti[i].money);
 Close(f2);
 
 ReadLN;
end.
содержание файла in.txt

Математика вс.13.06 500

Информатика чт.16.09 1000

Математика вс.13.06 500

Информатика сб.18.09 1000

Математика вс.13.10 600

Физика ср.15.12 650

Добавлено через 1 час 19 минут
ап ап ап!
срочно нужно!(
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.09.2011, 18:14
Ответы с готовыми решениями:

Сделать в программе сортировку списка типизированного файла
program phone; uses crt; type book=record name:string; phone:string; end;...

Подкорректировать
не работает вывод в программе. Подскажите в чём ошибка? Модуль unit bas;...

Подкорректировать цикл
Кто нибудь может подсказать или подправить цикл, почему не вычисляется сумма...

Подкорректировать код
Дана строка символов S, состоящая из латинских букв. Группы символов,...

Одномерный массив, удаление, вставка, перенос элементов (подкорректировать)
Ребят помогите переделать программу. задача:Дан массив целых чисел (n=25),...

1
Zhexon
312 / 271 / 272
Регистрация: 25.09.2011
Сообщений: 477
27.09.2011, 11:41 2
у тебя программа и так делает то, что ты хочешь - содержимое файла out.txt после отработки прог-мы:

Информатика 2000
Математика 1600
Физика 650

если ты добавишь строчку
Pascal
1
Writeln(predmeti[N].Name)
перед последнем ReadLn то как раз и получишь название .
есил я все правильно понял.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.09.2011, 11:41

упорядочить массив по возрастанию элементов первой строки. подкорректировать.
здесь чего-то не хватает..... вот задание:упорядочить массив по возрастанию...

Составить программу, выводящую на экран разноцветные окна (по диагонали) одного размера / (проверить, подкорректировать)
Составить программу, выводящую на экран разноцветные окна (по диагонали) одного...

Составить блок-схему к программе 1 и к программе 2
1) var i, multiply,result:longint; digit:byte; fail:boolean; begin...


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

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

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