1). Даны массивы целых чисел состоящий из 20 элементов. Заполните его с клавиатуры. Найдите сумму элементов имеющих нечетные индексы.
2). Найти номер первого отрицательного элемента делящегося на 5 с остатком 2.
Задачи с массивами.
Snusmumrik 01:22 19.04.2008
бугага. в первый класс.
Ekaterina-vrn 10:16 19.04.2008
var a: Array[1..20] of real;
i,ost:integer;
summ:real;
begin
summ:=0;
ost:=0;
for i:=1 to 20 do
begin
readln(a[i]) ;
if i mod 2 =1 then summ:=summ+a[i];
if (a[i]<0) and (a[i] mod 5=2) and (ost=0) then ost:=i
end;
writeln('сумма нечетных элементов =',summ);
writeln('номер первого отрицательного числа, которое при деление дает в остатке 2=', ost);
end.
я вообще забыла Паскаль! стыд и позор! исправьте, где ошиблась!
стыдно! стыдно! стыдно!
Snusmumrik 11:33 19.04.2008
Ekaterina-vrn, ужас. ты злая. как теперь ты сможешь спокойно жить, ты лишила человека возможности стать программистом и вообще думающим человеком. позор.
Max 2008 23:14 19.04.2008
Спасибо огромное за решение задачи. Есть одна ошибка (var a: Array[1..20] of real; ) вместо real надо integer.
mexx 18:35 20.04.2008
Max 2008, не обязательно, тип real шире и потому включает в себя и интежер, поэтому и его можно юзать
Akad 12:06 21.04.2008
mexx, Я могу ошибаться, но в конструкции a[i] mod 5, a[i] - должно быть целое.
vasia3 23:28 21.04.2008
Здраствуйте,у меня траблы с программированием а задачу нужно решить срочно...
Условие:
Дана последовательность до 30 слов,в каждом из которых от 1 до 5 символов,между словами-пробел или запятая.В конце последовательности-точка.Напечатать все слова по возрастанию их длинны.
Буду оч. благодарен..!
mexx 11:39 22.04.2008
Akad, возможно и я не прав =) vasia3, для начала извлекаешь все слова в массив, слово - буквы между точками или запятыми, сортируешь массив и вуаля. И потереби поиск, тут где-то была тема от юзера SuHaR, у него там конечно посложнее задачки, но похожая тема есть..
Akad 12:12 22.04.2008
Сообщение от vasia3:
Дана последовательность до 30 слов
А потом люди, научившиеся в школе/вузе решать подобные задачи идут писать в крупные фирмы серьезные программы, которые будут глючить у людей всего мира. Жуть! Я понимаю, что паскаль – это недоязык, на котором без изврата ничего не напишешь, но зачем ставить задачу и кастрировать ее до степени, когда ее можно реализовать на конкретном языке?
dn2k4 19:04 22.04.2008
Сообщение от Akad:
когда ее можно реализовать на конкретном языке?
Потому что это будет не обучение, а начало выяснения "какой язык конкретнее"
Snusmumrik 19:08 22.04.2008
Сообщение от mexx:
vasia3, для начала извлекаешь все слова в массив, слово - буквы между точками или запятыми, сортируешь массив и вуаля.
нифигасебе.... а если дан текстовый файл размером 30 мегабайт, со словами, и дальше по условию, тоже в массив пихать прикажете?)))))
HepB 19:13 22.04.2008
Сообщение от Ekaterina-vrn:
исправьте, где ошиблась!
Сообщение от Max 2008:
2). Найти номер первого отрицательного элемента делящегося на 5 с остатком 2.
Сообщение от Ekaterina-vrn:
for i:=1 to 20 do
begin
readln(a[i]) ;
if i mod 2 =1 then summ:=summ+a[i];
if (a[i]<0) and (a[i] mod 5=2) and (ost=0) then ost:=i
end;
тут помойму в результате цикла ты найдёшш последний...
dn2k4 19:19 22.04.2008
Сообщение от HepB:
and (ost=0)
Внимание обрати =)
mexx 19:23 22.04.2008
Snusmumrik, в школе таких файлов точно не дадут))
Akad 01:39 23.04.2008
dn2k4, нет. Это будет именно ОБУЧЕНИЕ. Не бывает хороших и плохих языков. Бывают задачи, которые решать проще на данных языках. Если задача не решается (я не говорю про извраты) на данном языке программирования, то тут 2 варианта:
1. Не давать эту задачу детям.
2. Обучить детей языку программирования на котором она решается.
Но не как не пытаться искусственно ограничить ее. В жизни таких ограничений быть не может. А люди привыкают так писать и или выделают 50-70% памяти под статические массивы, которую вообще не используют, или наоборот объявляют массив из 10 объектов, а у юзера их оказывается 11. Короче препа, давшего эту задачу в школу на переучивание.
Snusmumrik 01:53 23.04.2008
Сообщение от mexx:
Snusmumrik, в школе таких файлов точно не дадут))
почему же? всего-то надо пройти 2 темы: циклы и файлы. задача решится очень просто. и даже не придется все 30 метров символов грузить в память).
Посмотрите, что я выделил и подумайте, почему там не написано массивы)
Snusmumrik 01:59 23.04.2008
Сообщение от Akad:
Жуть! Я понимаю, что паскаль – это недоязык, на котором без изврата ничего не напишешь, но зачем ставить задачу и кастрировать ее до степени, когда ее можно реализовать на конкретном языке?
Сообщение от Akad:
Это будет именно ОБУЧЕНИЕ. Не бывает хороших и плохих языков. Бывают задачи, которые решать проще на данных языках. Если задача не решается (я не говорю про извраты) на данном языке программирования, то тут 2 варианта:
1. Не давать эту задачу детям.
2. Обучить детей языку программирования на котором она решается.
Но не как не пытаться искусственно ограничить ее. В жизни таких ограничений быть не может. А люди привыкают так писать и или выделают 50-70% памяти под статические массивы, которую вообще не используют, или наоборот объявляют массив из 10 объектов, а у юзера их оказывается 11. Короче препа, давшего эту задачу в школу на переучивание.
если у вас какието траблы с конкретным языком-сочувствую. паскаль-достаточно гибкий инструмент. Некоторым танцорам правда все время чтото мешается.. причину надо искать не в этом.
Теперь про преподов... к сожалению, препы в школах дают не то, что им бог на душу положит, а то, что написано в учебнике, рекомендованном к изучению в данном классе данного уровня школы, итд, итп. Про любые другие задачи-сказано просто "не допускается хранение в кабинете книг, кроме допущенных мин. образования рф.". Если мне, допустим, нравятся задачи Иванова И.И. в учебнике "Паскаль", но мин.образования, к сожалению, не включило его в учебный план, любоваться этим учебником я могу лишь дома)) For private uses).
dn2k4 09:25 23.04.2008
Сообщение от Akad:
Если задача не решается (я не говорю про извраты) на данном языке программирования, то тут 2 варианта:
1. Не давать эту задачу детям.
2. Обучить детей языку программирования на котором она решается.
Но не как не пытаться искусственно ограничить ее.
1) Не развивать моторику у маленьких детей кубиками и пирамидками
2) Обучать маленьких сразу вождению автомобиля
А то вырастают вот такие и попадают в аварии
Akad 13:48 23.04.2008
Сообщение от Snusmumrik:
если у вас какието траблы с конкретным языком-сочувствую.
У меня нет траблов ни с каким языком. Свободно владею 5-6 + кучей диалектов.
Сообщение от Snusmumrik:
паскаль-достаточно гибкий инструмент.
Ну и сколько времени у Вас, уйдет на решение этой задачи на паскале? Только по нормальному. Слов может быть хоть миллион и любой длинны. А теперь на с++ (с stl) или на java. А теперь применить sql. Все можно написать на любом языке. Вопрос в трудозатратах.
Сообщение от Snusmumrik:
Теперь про преподов... к сожалению, препы в школах дают не то, что им бог на душу положит, а то, что написано в учебнике, рекомендованном к изучению в данном классе данного уровня школы, итд, итп. Про любые другие задачи-сказано просто "не допускается хранение в кабинете книг, кроме допущенных мин. образования рф.". Если мне, допустим, нравятся задачи Иванова И.И. в учебнике "Паскаль", но мин.образования, к сожалению, не включило его в учебный план, любоваться этим учебником я могу лишь дома)) For private uses).
Ну когда я учился в школе, у нас учебников по информатики не было, хотя изучали с 3-го класса. Пару лет назад, когда брат заканчивал - тоже. Все отдавалось на откуп препу. Сейчас что-то поменялось?
Pengvin 17:29 23.04.2008
Сообщение от vasia3:
Дана последовательность до 30 слов,в каждом из которых от 1 до 5 символов,между словами-пробел или запятая.В конце последовательности-точка.Напечатать все слова по возрастанию их длинны.
А задачка то непростая. последовательность до 30 слов это array[1..30] of word . В слове от 1 до 5 символов, значит имеем 7 буквенный алфавит, а символ с кодом 000 будет считаться отсуствием символа. Один бит у нас еще остается для контроля. Хм только вот никак не пойму зачем слова разделять ',' ' ', наверное в том случае если мы можем слова принимать побитно и возможно не с начала. Нехилая задачка для школы.
Я так думаю, иначе зафига вобще на форуме спрашивать о решении такой бредово легкой задачи, что ее не могут однокласники за бутылку кока-колы решить? Если никто не может, то видимо правда учителя надо на курсы повышения квалификации отправлять.
Snusmumrik 18:25 23.04.2008
Сообщение от Akad:
Все отдавалось на откуп препу. Сейчас что-то поменялось?
работал бы ты преподом, тыб знал, что вне зависимости от того, что рассказываешь в журнале должно быть написаны тема и страницы учебника именно по планированию, а не от балды. а там хоть ms paint проходи в 10-м классе.
vasia3 23:58 23.04.2008
кароче,одна бессоная ночь и вуаля....
program n1;
uses crt;
var
l1,l2,l3,l4,l5,n,p:string;
t,i,k:integer;
begin
clrscr;
read(p);
k:=0;
t:=1;
for i:=1 to length(p) do
begin
if (p[i]=' ') or (p[i]='.') or (p[i]=(',')) then
begin
n:=copy(p,1,i-1);
delete(n,1,k);
k:=i;
n:=n+' ';
end;
if ((p[i]=' ') or (p[i]='.') or (p[i]=(','))) and (length(n)=2) then
begin
insert(n,l1,t);
t:=t+2;
end;
if ((p[i]=' ') or (p[i]='.') or (p[i]=(','))) and (length(n)=3) then
begin
insert(n,l2,t);
t:=t+3;
end;
if ((p[i]=' ') or (p[i]='.') or (p[i]=(','))) and (length(n)=4) then
begin
insert(n,l3,t);
t:=t+4;
end;
if ((p[i]=' ') or (p[i]='.') or (p[i]=(','))) and (length(n)=5) then
begin
insert(n,l4,t);
t:=t+5;
end;
if ((p[i]=' ') or (p[i]='.') or (p[i]=(','))) and (length(n)=6) then
begin
insert(n,l5,t);
t:=t+6;
end;
end;
write(l1);
write(l2);
write(l3);
write(l4);
write(l5);
end.
вообщем-то получается что кол-во слов,введенных с клавы,файла,... не играет тут большой роли...
Тока вот думаю,достаточно-ли рационально такое решение??
Snusmumrik 00:09 24.04.2008
Сообщение от vasia3:
write(l1);
write(l2);
write(l3);
write(l4);
write(l5);
)).
Не оптимально, но работать будет, наверное.. не запускал.
vasia3 00:21 24.04.2008
это все да,но я недопираю до другого...можно-ли как-то избавится от бесконечных повторений вот этой части кода:if ((p[i]=' ') or (p[i]='.') or (p[i]=(','))) and ???
а косметическую хирургию приберегу на десерт...=)
Snusmumrik 00:44 24.04.2008
Сообщение от vasia3:
то все да,но я недопираю до другого...можно-ли как-то избавится от бесконечных повторений вот этой части кода:if ((p[i]=' ') or (p[i]='.') or (p[i]=(','))) and ???
а косметическую хирургию приберегу на десерт...=)
если хочешь использовать именно такую структуру-заведи еще одну переменную, кот. вначале будет равна двум, а потом, по мере прочитывания всей строки будет увеличиваться на 1. до 6.
Snusmumrik 00:45 24.04.2008
Сообщение от vasia3:
if ((p[i]=' ') or (p[i]='.') or (p[i]=(','))) and (length(n)=5)
(length(n)=z) и далее по тексту.
vasia3 01:19 24.04.2008
Snusmumrik,если я правильно понял ты предлагаешь примерно такой вариант:
for length(n):=2 to 6 do
begin
if ((p[i]=' ') or (p[i]='.') or (p[i]=(','))) then
begin
insert(n,l1,t);
t:=t+2;
end;
...
...
...
{и.т.д}
...
...
...
begin
insert(n,l5,t);
t:=t+6;
end;
end;
-----------------------------
но так тут очевидно не получится т.к слова состоящие из определенного кол-ва букв тогда будут вставлятся не только в ''cвою строку'' ,но и во все остальные, и к тому же не на те позиции в строке,которые предназначенны для соответствующих длин слов...
-----------------------------
Вообщем,честно говоря, я не понимаю как тут можно осуществить подобную идею...
Snusmumrik 02:46 24.04.2008
рассказываю по-русски. читаешь строку. перемещаешь из нее все слова длиной 2 символа. читаешь снова, перемещаешь длиной 3 символа, и так до 6.
Ты же их удаляешь из исходной? если тебе нужно то, что ввел пользователь-скопируй вначале введенную во временную, и ее и режь как тебе надо...
Не исключаю, что в 3:46 чтото написал неверно, но имха, пойдет..