Форум - Решение ваших проблем...
Форум

Форум (http://barca.ru/forum/index.php)
-   Кулес (http://barca.ru/forum/forumdisplay.php?f=33)
-   -   Решение ваших проблем... (http://barca.ru/forum/showthread.php?t=1707)

К@t@LoNeЦ 06.11.2010 13:41

Сейчас решаю задачки С2 по информатике.Написал две программы,но репетитор сказал,что их надо решать рационально.Вот я бы и хотел себя проверить,рационально ли я их решил.

Задачи то легкие:
1)Дан целочислительный массив из 30 элементов.Они могут принимать значения от 0 до 100 - баллы,полученные на Егэ учениками.Нужно написать программу,которая подсчитывает и выводит средний балл учащихся,сдавших экзамен(более 29 баллов набравшие).Гарантируется,что хотя бы один ученик сдал экзамен.

Вот программа:

Const N=30;
Var A: array [1..N] of Integer;
i,x,y:Integer;
s:real;
Begin
for i:=1 to N do
readln(A[i]);

For i:=1 to N do
If (A[i]<0) or (A[i]>100) then Writeln('Takogo balla net' , '(',A[i],')');

x:=0; {SUMMA}
y:=0; {kolichestvo}
i:=1;

for i:=1 to N do

if (A[i]>20) and (A[i]<=100) then begin
X:=X+A[i];
y:=y+1;
end;

S:=X/Y; {sredniy ball}

Writeln('x=',x);readln;
writeln('y=',y);readln;
Writeln('S=',S :2:2);
Readln;
End.


2)Дан целочислительный массив из 30 элементов.Они могут принимать значения от 160 до 200 - рост учащихся выпускного класса.Нужно написать программу,которая подсчитывает и выводит минимальный рост игрока баскетбольной команды.Гарантируется,что хотя бы один ученик играет в команде.

Программа:

Const N=30;
Var A: array [1..N] of Integer;
i,x,y:Integer;
s:real;
Begin
for i:=1 to N do
readln(A[i]);

For i:=1 to N do
If (A[i]<160) or (A[i]>200) then Writeln('S takim rostom uchenika ne vozmut v komandu');
If (A[i]<70) or (A[i]>220) then Writeln('Nakogo rosta ne mozhet bit u vipusknika');
If (A[i]<0) then Writeln('Takogo rosta ne bivaet');

x:=200; {min}

for i:=1 to N do

if (A[i]>=160) and (A[i]<=200) then
if A[i]
Writeln('x=',x);
readln;
End.

Foxara 06.11.2010 14:28

К@t@LoNeЦ, В первой задачке у тебя в условии 29 написано, а в программе 20.

Во второй вообще хрен знает что ты написал - во-первых зачем выделенное?:
Цитата:

Сообщение от К@t@LoNeЦ
for i:=1 to N do
readln(A[i]);
For i:=1 to N do
If (A[i]<160) or (A[i]>200) then Writeln('S takim rostom uchenika ne vozmut v komandu');
If (A[i]<70) or (A[i]>220)
then Writeln('Nakogo rosta ne mozhet bit u vipusknika');
If (A[i]<0) then Writeln('Takogo rosta ne bivaet');


Должно быть:
for i:=1 to N do
begin
readln(A[i]);
If (A[i]<160) or (A[i]>200) then Writeln('S takim rostom uchenika ne vozmut v komandu');
If (A[i]<70) or (A[i]>220) then Writeln('Nakogo rosta ne mozhet bit u vipusknika');
If (A[i]<0) then Writeln('Takogo rosta ne bivaet');
If (A[i]>160) or (A[i]<200) then i:=i+1;
end;
(Ежели я чего не путаю, уже с пару лет ТП не открывал...)
Во вторых здесь вообще бред какой-то:
Цитата:

Сообщение от К@t@LoNeЦ
for i:=1 to N do
if (A[i]>=160) and (A[i]<=200)
then
if A[i] ???
Writeln('x=',x);


Jericho 06.11.2010 14:30

Цитата:

Сообщение от -Barca94
как можно качать видео с ютуб?

Самый простой способ, в адресной строке(на странице c нужным роликом) после www. поставить две s, вот так - ww.ssyoutube.., и перейти по получившейся ссылке. Откроется страничка где предложат скачать это видео в нескольких форматах. Способ удобен тем, что не надо ничего дополнительно скачивать и устанавливать.

К@t@LoNeЦ 06.11.2010 14:44

Цитата:

Сообщение от Foxara
if A[i] ???

это не надо, по ошибке скопировал


Цитата:

Сообщение от Foxara
В первой задачке у тебя в условии 29 написано, а в программе 20.

опять же моя ошибка в тектсе,надо ,правильно,20.

Цитата:

Сообщение от Foxara
If (A[i]>160) or (A[i]<200) then i:=i+1;

зачем это?я же ищю минимальное значение из поступивщих в команду


Цитата:

Сообщение от Foxara
Должно быть:
for i:=1 to N do
begin
readln(A[i]);
If (A[i]<160) or (A[i]>200) then Writeln('S takim rostom uchenika ne vozmut v komandu');
If (A[i]<70) or (A[i]>220) then Writeln('Nakogo rosta ne mozhet bit u vipusknika');
If (A[i]<0) then Writeln('Takogo rosta ne bivaet');
If (A[i]>160) or (A[i]<200) then i:=i+1;
end;


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


х - это и есть минимальное значение(рост).просто в задании нельзя менять переменные.Весь Var - это все из дано

Foxara 06.11.2010 15:13

Цитата:

Сообщение от К@t@LoNeЦ
х - это и есть минимальное значение(рост).просто в задании нельзя менять переменные.Весь Var - это все из дано


Цитата:

Сообщение от К@t@LoNeЦ
зачем это?я же ищю минимальное значение из поступивщих в команду

По тексту твоей программы ты вначале задаешь ввод значений от 1-го до N-го. Затем в случае несоответствия каких либо значений нормам просто выдаешь на экран текст об этом без указания какие именно из введенных заранее значений были неверны. Затем ты присваиваешь переменной х значение 200. Затем проверяешь является ли каждое из значений массива в пределах 160-200 и выводишь на экран переменную х, значение которой ты заранее задал 200.
Т.е. получишь на экране цифру 200 столько раз, сколько у тебя в массиве будет значений соответствующих пределам 160-200. Насколько я понимаю это не соответствует условию задачи и не знаю как ты там её тестировал...
Цитата:

Сообщение от К@t@LoNeЦ
Что значит наименее отличающиеся друг от друга???

Это значит, что надо найти такие два элемента массива i и j, для которых некая переменная z=|A[i]-A[j]| является минимальной из всех возможных, как я понимаю. Делается вроде как достаточно легко...

К@t@LoNeЦ 06.11.2010 15:22

Foxara, а все пардон,а не "по ошибке скопировал",а не докопировал:finest:

вот что должно быть:

for i:=1 to N do

if (A[i]>=160) and (A[i]<=200) then
если A[i]>х тогда х присуждай значение A[i] ;

Writeln('x=',x);
readln;
End.



эээ че за хрень пишу тескт,а остается только это
он не пишет текст после if A[i]

короче у меня там : если A[i] меньше х тогда x:=A[i];

Foxara 06.11.2010 15:26

Цитата:

Сообщение от К@t@LoNeЦ
эээ че за хрень пишу тескт,а остается только это

Видимо форум не все воспринимает. Блокнот, принтскрин, пэйнтбраш, радикал....
ЗЫ: Все, нашел в исходном коде, все норм.

К@t@LoNeЦ 06.11.2010 15:32

вот еще одна задача,только я ее вапсче не могу понять:

Также дан массив из 30 элементов.Нужно найти и вывести номера двух элементов,наименее отличающихся друг от друга.
Что значит наименее отличающиеся друг от друга???:st:

Foxara 06.11.2010 15:34

Цитата:

Сообщение от К@t@LoNeЦ
Что значит наименее отличающиеся друг от друга?

Цитата:

Сообщение от Foxara
Это значит, что надо найти такие два элемента массива i и j, для которых некая переменная z=|A[i]-A[j]| является минимальной из всех возможных, как я понимаю.

;)

DotsFam_10 11.11.2010 21:57

Подключили вай фай через мой модем, сижу только я, но инет тормозит. Вырубается часто, аська буквально каждые 10 минут перезагружается, качать тоже ничего невозможно, хотя скорость 4 мегабита. В чем может быть проблема?


03 августа 2025 года. Воскресенье - 08:26 (Часовой пояс GMT +4).

Русский vBulletin v3.5.2, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Перевод сделал zCarot