Трабл по паскалю
Сообщений: 11
• Страница 1 из 2 • 1, 2
- Анти][акеР
- (На-ни-на)
- Сообщения: 333
- Зарегистрирован: 07-04-2005
Трабл по паскалю
Люди, помогите хто чем может:
Вот задача:
Даны натуральные числа n, a1,...,an(n>=4). Числа а1, ...,ан-это измеренные в сотых долях секунды результаты спортсменов в беге на 100 метров. Составить команду из 4 лучших бегунов для участия в эстафете 4по100.
Вот код решения:
Program noname;
Uses crt;
var kol_s,i,j:integer;
mas: array [1..100] of integer;
num, time: array [1..4] of integer;
k:char;
begin
write ('vvedite kol-vo sportsmenov: ');
read (kol_s);
if kol_s<4 then
writeln('vvedite drugoe chislo!')
else
begin
clrscr;
for i:= 1 to kol_s do
begin
write ('vvedite rezultat ',i:0,'-go sportsmena ');
read (mas[i]);
end;
clrscr;
Writeln('The best was:');
for j:= 1 to 4 do
begin
time[j]:=9999;
for i:= 1 to kol_s do
begin
if time[j] > mas[i] then
begin
time[j] := mas[i];
num[j] := i;
end;
end;
mas[num[j]]:=9999;
writeln(num[j]:0,'-j sportsmen, s rezultatom ',time[j]:0,' msek);
end;
readkey;
end;
until readkey=char(#27);
end.
Проблема в том, что не устаивает число 9999. Тут оно идет мах возможным времянем. Если ввести больше идут глюки. Как решить
эту проблему?:wacko:
Вот задача:
Даны натуральные числа n, a1,...,an(n>=4). Числа а1, ...,ан-это измеренные в сотых долях секунды результаты спортсменов в беге на 100 метров. Составить команду из 4 лучших бегунов для участия в эстафете 4по100.
Вот код решения:
Program noname;
Uses crt;
var kol_s,i,j:integer;
mas: array [1..100] of integer;
num, time: array [1..4] of integer;
k:char;
begin
write ('vvedite kol-vo sportsmenov: ');
read (kol_s);
if kol_s<4 then
writeln('vvedite drugoe chislo!')
else
begin
clrscr;
for i:= 1 to kol_s do
begin
write ('vvedite rezultat ',i:0,'-go sportsmena ');
read (mas[i]);
end;
clrscr;
Writeln('The best was:');
for j:= 1 to 4 do
begin
time[j]:=9999;
for i:= 1 to kol_s do
begin
if time[j] > mas[i] then
begin
time[j] := mas[i];
num[j] := i;
end;
end;
mas[num[j]]:=9999;
writeln(num[j]:0,'-j sportsmen, s rezultatom ',time[j]:0,' msek);
end;
readkey;
end;
until readkey=char(#27);
end.
Проблема в том, что не устаивает число 9999. Тут оно идет мах возможным времянем. Если ввести больше идут глюки. Как решить
эту проблему?:wacko:
RE: Трабл по паскалю
а не проще вместо константных начальных значений брать значения первого элемента массива и остальные уже сравнивать с ним
RE: Трабл по паскалю
не вкурил в чём именно проблема. Ели тебе нужно, чтобы переменная time[j] могла быть больше 9999 - пропиши её, как longint вместо integer. Но если я правильно понял смысл задачи, то time[j] константой тебе в принципе никуда не упёрлась. Тупо используй метод пузырька и ни колбась москъ
Собственно пример:
Writeln('The best was:');
for j:=1 to kol_s do
begin
for i:=1 to kol_s do if mas[i]>mas[i+1] then
begin
c:=mas[i];
mas[i]:=mas[i+1];
mas[i+1]:=c;
end;
end;
for i:=1 to kol_s do writeln( i ,'-j sportsmen, s rezultatom ',mas[i],' msek).
Нахрена для целочисленных переменных указывать количество знаков перед запятой - тоже не вкурил... на всякий пожарный поясню: с - просто ниочёмная переменная вводимая в прогу для буфера значений.
В принципе сказал всё то же самое, что и Криг, только в более развёрнутом варианте.
P.S. прошу всех собравшихся считать, что это не я забыл перелогиниться, а моя жена такая умная.GIF)

Собственно пример:
Writeln('The best was:');
for j:=1 to kol_s do
begin
for i:=1 to kol_s do if mas[i]>mas[i+1] then
begin
c:=mas[i];
mas[i]:=mas[i+1];
mas[i+1]:=c;
end;
end;
for i:=1 to kol_s do writeln( i ,'-j sportsmen, s rezultatom ',mas[i],' msek).
Нахрена для целочисленных переменных указывать количество знаков перед запятой - тоже не вкурил... на всякий пожарный поясню: с - просто ниочёмная переменная вводимая в прогу для буфера значений.
В принципе сказал всё то же самое, что и Криг, только в более развёрнутом варианте.
P.S. прошу всех собравшихся считать, что это не я забыл перелогиниться, а моя жена такая умная
RE: Трабл по паскалю
как-то чел попросил ему дать прогу на паскале, которая делает опрос для приема на работу
вот что получилось
begin
writeln('С глубоким сожалением вынуждены Вам сообщить, что Вы нам не подходите.');
end.
вот что получилось
begin
writeln('С глубоким сожалением вынуждены Вам сообщить, что Вы нам не подходите.');
end.
- Анти][акеР
- (На-ни-на)
- Сообщения: 333
- Зарегистрирован: 07-04-2005
RE: Трабл по паскалю
Всем большое спасибо)
- Анти][акеР
- (На-ни-на)
- Сообщения: 333
- Зарегистрирован: 07-04-2005
RE: Трабл по паскалю
[quote=Свободная Куртизанка]
не вкурил в чём именно проблема. Ели тебе нужно, чтобы переменная time[j] могла быть больше 9999 - пропиши её, как longint вместо integer. Но если я правильно понял смысл задачи, то time[j] константой тебе в принципе никуда не упёрлась. Тупо используй метод пузырька и ни колбась москъ
Собственно пример:
Writeln('The best was:');
for j:=1 to kol_s do
begin
for i:=1 to kol_s do if mas[i]>mas[i+1] then
begin
c:=mas[i];
mas[i]:=mas[i+1];
mas[i+1]:=c;
end;
end;
for i:=1 to kol_s do writeln( i ,'-j sportsmen, s rezultatom ',mas[i],' msek).
Нахрена для целочисленных переменных указывать количество знаков перед запятой - тоже не вкурил... на всякий пожарный поясню: с - просто ниочёмная переменная вводимая в прогу для буфера значений.
В принципе сказал всё то же самое, что и Криг, только в более развёрнутом варианте.
P.S. прошу всех собравшихся считать, что это не я забыл перелогиниться, а моя жена такая умная
[/quote]
Мда, немножко не то: спортсмены не сортируються по результату, а выводятся в том порядке, в котором есть в массиве.
не вкурил в чём именно проблема. Ели тебе нужно, чтобы переменная time[j] могла быть больше 9999 - пропиши её, как longint вместо integer. Но если я правильно понял смысл задачи, то time[j] константой тебе в принципе никуда не упёрлась. Тупо используй метод пузырька и ни колбась москъ

Собственно пример:
Writeln('The best was:');
for j:=1 to kol_s do
begin
for i:=1 to kol_s do if mas[i]>mas[i+1] then
begin
c:=mas[i];
mas[i]:=mas[i+1];
mas[i+1]:=c;
end;
end;
for i:=1 to kol_s do writeln( i ,'-j sportsmen, s rezultatom ',mas[i],' msek).
Нахрена для целочисленных переменных указывать количество знаков перед запятой - тоже не вкурил... на всякий пожарный поясню: с - просто ниочёмная переменная вводимая в прогу для буфера значений.
В принципе сказал всё то же самое, что и Криг, только в более развёрнутом варианте.
P.S. прошу всех собравшихся считать, что это не я забыл перелогиниться, а моя жена такая умная
[/quote]
Мда, немножко не то: спортсмены не сортируються по результату, а выводятся в том порядке, в котором есть в массиве.
RE: Трабл по паскалю
Может быть это потому, что в результате выполнения приведнной проги место спортсменов в массиве меняется в зависимости от их результата? или тебе надо, чтобы место спортсмена в массиве оставалсь неизменным? Или нет? Или что?
Короче, я так понял, что топикстартер весьма смутно представляет себе, что я тут несу, поэтому дабы не разводить бессмысленный флуд поясняю: берётся исходный массив, путём лихих манипуляций элементы массива с наименьшим значением всплывают наверх по индексу, в результате весь массив выстраивается ровнячком по значениям: элемент с индексом 1 - самый маленький по значению, 2 - больше чем первый, но меньше либо равен всем остальным, 3 - больше чем второй, но меньше либо равен всем остальным и так до упора. Это делается, чтобы без гемора сразу вывести и призовое место спортсмена и его результат. Что не понятно?
Короче, я так понял, что топикстартер весьма смутно представляет себе, что я тут несу, поэтому дабы не разводить бессмысленный флуд поясняю: берётся исходный массив, путём лихих манипуляций элементы массива с наименьшим значением всплывают наверх по индексу, в результате весь массив выстраивается ровнячком по значениям: элемент с индексом 1 - самый маленький по значению, 2 - больше чем первый, но меньше либо равен всем остальным, 3 - больше чем второй, но меньше либо равен всем остальным и так до упора. Это делается, чтобы без гемора сразу вывести и призовое место спортсмена и его результат. Что не понятно?
Сообщений: 11
• Страница 1 из 2 • 1, 2
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2