Свободен |
14-03-2008 - 21:46 Если напишите небольшую програмку на ТурбоПаскале (она буквально на страничку), буду очень благодарен и одарю сексо! Вот задачка, надо по не прогу написать. Определение номера элемента, с которого начинается самая длинная последовательность четных чисел, расположенных в массиве подряд! Длина массива вводится с клавиатуры. Печатать элементы массива по 6 штук, по формату :6 Тип данных: целые Это сообщение отредактировал vano-m - 14-03-2008 - 21:48 |
||||||
-=Велла=- Свободна |
14-03-2008 - 23:19 КОгда надо? |
||||||
Свободен |
15-03-2008 - 16:39
впринципе не срочно... неделя где-то. |
||||||
-=Велла=- Свободна |
15-03-2008 - 18:24 ок... я попробую... если до четверга не успею, то напишу... |
||||||
Свободен |
15-03-2008 - 20:48
огромнейшее спсибо! |
||||||
do-do Свободен |
16-03-2008 - 09:19 Мож все ж сам сделаешь? Оно полезнее.. только помнить, что X mod 2 = 0 если число четное... остальное в несколько строк делается |
||||||
do-do Свободен |
16-03-2008 - 17:39 Дело было вечером...да и делать было нечего Вот решил порукоблудить по поводу Турбо Паскаль года 4 в руках не держал, но нашел на компе free pascal - думаю палка одна (если стандарта придерживаться) вот (вывод красивый ужо уж сам лепи) program example; Type box=^y; (*Создаем список элементов*) y=record data: integer; next:box; end; var N:integer; (*Число элементов*) Start:box; (*Указатель на начало массива*) X,X1:box; (*вспомогательная ячейка*) A:box; (*начало наибольшего массива*) Nmax:integer;(*максимальное число четных элементов идущих подряд*) I,J:integer; (*индексы*) XX:integer; (*вспомогательная переменная*) begin (*Инициализация*) Start:=Nil;A:=nil;Nmax:=0;j:=0; (*Задаем массив - ни каких проверок. Минимальная длинна 2 элемента*) writeln;write('Total=');readln(N); read(XX);New(X);x^.next:=nil;x^.data: =XX;start:=x; for i:=2 to N do (*Фишка в том, что на 1ый элемент мы ссылаемся в Start*) begin read(XX);new(x^.next);x:=x^.next;x^.next:=nil;x^.data: =XX; end; writeln; x:=Start; (*начинаем обработку*) for i:=1 to N do begin if (x^.data <> 0) and (x^.data mod 2=0) then if j=0 then (*четно*) begin x1:=x;Inc(j);end else Inc(j) else (*не четно*) if (j > 0) then if Nmax < j then begin Nmax:=j;A:=x1;j:=0;end; x:=x^.next; end; writeln('Total-',Nmax); for i:=1 to Nmax do begin write(A^.data: 8);A:=A^.next;end; end. |
||||||
-=Велла=- Свободна |
16-03-2008 - 19:34 do-do, не прокатит. тема лабораторной - массивы, а не записи. |
||||||
do-do Свободен |
16-03-2008 - 20:14 А где это написано ? что массивы :) Слово Элемент массива я воспринимаю просто как индекс в памяти :) Впрочем - Суть алгоритма от этого не изменяется :) Даже меньше писать. Впрочем - ТОТ же массив - это тот же список :) Определив 2-3 процедуры работы с индексом, (скрыв детали) имеем массив Впрочем :) я не собираюсь дорогу переБегать :) Ваяй. Так - размялся, алгоритм вообщем то очевиден. Это сообщение отредактировал do-do - 16-03-2008 - 20:15 |
||||||
-=Велла=- Свободна |
16-03-2008 - 20:55
да он мне просто методичку дал посмотреть :) Да я то чо, я ничо )))) ПРосто мне самой заняться нечем.. сижу дома ж.. тупею.. а так хоть зарядка для мозгов будет )))) |
||||||
do-do Свободен |
16-03-2008 - 21:17 Студенты :) в методичке все обычно пишут ...а они не читают |
||||||
mvf23 Свободен |
18-03-2008 - 16:12
напоминает известную шутку про то как пишут программу "Hello World" люди с разным уровнем образования :) См. http://www.gnu.org/fun/jokes/helloworld.html Студент первого курса, на котором обычно дают подобные задания должен решить его примерно так:
PS. кстати задача проверки четности числа эффективнее решается с помощью вот такой конструкции (a[i] and 1 = 0). Т.к. побитовое "и" всегда выполняется быстрее чем деление с остатком. Это сообщение отредактировал mvf23 - 18-03-2008 - 16:22 |
||||||
do-do Свободен |
18-03-2008 - 16:58
Гм...если учесть ручной ввод :) То большой выигрыш будет :)? mod - нагляднее (в учебных целях наверное нормально) Хотя думаю если студент объяснит X and 1 = 0 четное - то зачет надо ставить сразу :) Это сообщение отредактировал do-do - 18-03-2008 - 17:36 |
||||||
mvf23 Свободен |
18-03-2008 - 17:42
вообще разница на два порядка :) примерно 3-4 такта процессора (в случае AND) против 150 (в случае MOD). Но это в такой программе никак ощущаться не будет, конечно если размер массива ограничен какими-то небольшими цифрами. Однако студент, затрудняющийся написать такую лабу, вряд ли сможет веско объяснить преподавателю почему лучше использовать AND (да и не факт что преподаватель это знает :D). Да и ты прав - так оно нагляднее. Поэтому я и употребил в самой программе mod, про and написав в PS. |
||||||
Свободен |
18-03-2008 - 23:12
Наверно я не(не хочу употреблять выражение туповат) не имею склонностей к изучению программирования. Прошустрил всю методичку. Три лабы зделал, на четвертой споткнулся. Эдакий у мну камень преткновения-массивы))) |
||||||
Свободен |
18-03-2008 - 23:19
а описание переменных и массива-енто куда? точнее как? там же вроде все variables описать нада. Я ничего не понимаю! *БЬЕТ СЕБЯ ГОЛОВОЙ ОБ СТОЛ! |
||||||
-=Велла=- Свободна |
18-03-2008 - 23:42 vano-m.. говори спасибо mvf23. Я написала ввод-вывод (правла не в файл, а не экран)... Вот, держи...
|
||||||
do-do Свободен |
19-03-2008 - 08:41 Что напрягает...что массивы предопределены :) (их размер) с указателями универсальнее - 9хотя конечно, опять же все в одном сегменте только) |
||||||
Свободен |
19-03-2008 - 14:22 А я... А я... А я паскаль не знаю! Напесал на си... :)
|
||||||
-=Велла=- Свободна |
19-03-2008 - 17:09 А кто нить на Прологе может напишет заодно |
||||||
mvf23 Свободен |
19-03-2008 - 19:03
какой-то у тебя си не кашерный, ну т.е. круто конечно что в четыре строки, но совершенно не читабельно... :) Ты б ещё на каком-нибудь брэйнфаке написал или на другом эзотерическом :) Короче - ходи туды: http://esco.sourceforge.net/?page=elang Там и компилятор на все случаи жизни и ссылки правильные :) Будешь потом только на них программить : Типо приходит чел и говорит "мне надо на паскале хеллоу ворлд написать", а ты ему "ну паскаля я не знаю, но вот тебе хеллоу ворлд на езыке OOK"
А поскольку этот самый Ook - является закосом под крики орангутанов то можно ещё попытаться эту программу озвучить и выложить в качестве мп3 Это сообщение отредактировал mvf23 - 19-03-2008 - 21:06 |
||||||
Свободен |
19-03-2008 - 19:04 Всем огромнейшее спасибо! Попробую в пятницу сдать Это чудо! |
||||||
Свободен |
19-03-2008 - 19:07
а что это такое кста? |
||||||
do-do Свободен |
19-03-2008 - 19:29
Надеюсь на Турбо :)? Crt - стандартная библиотека (Турбо Паскаля) Помогает в быстром выводе например на монитор (там много всего) clrscr - процедура из этой библиотеки - просто стирает экран от символов |
||||||
mvf23 Свободен |
19-03-2008 - 19:38
можно убрать, если сомневаешься или если боишься чуть-чуть "повыпендриваться". Будет работать и без этого. Нужно просто, чтоб экран очистить. |
||||||
Свободен |
19-03-2008 - 19:46
всмысле при каждом новом запуске? |
||||||
mvf23 Свободен |
19-03-2008 - 20:35
ну видишь - команда clrcsr написана в самом начале программы. Значит перед тем как делать что-либо ещё программа будет очищать экран. Т.е. при каждом запуске. |
||||||
Свободен |
19-03-2008 - 22:47 аа. понятно. спс. впятницу отпишшусь о том, как прошло... |
||||||
do-do Свободен |
20-03-2008 - 09:20 Я бы на твоем месте ПОПРОСИЛ АЛГОРИТМ разъяснить :) пох.. на не важные процедуры :) Понял КАК ? Если понял - то иди сдавайся преподу, а ежли нет....то все ж спроси чего не понятно |
||||||
Свободен |
20-03-2008 - 22:09
единственный нюанс, это наскока я понял вывод результатов должен осуществляться в .txt файл вроде. |
||||||
-=Велла=- Свободна |
20-03-2008 - 23:57 vano-m, я ж тебя спрашивала об этом... щас сделаю.... ВОт
Это сообщение отредактировал -=Велла=- - 21-03-2008 - 00:09 |
||||||
mvf23 Свободен |
21-03-2008 - 03:47 -=Велла=-, чуть-чуть недосмотрела: вместо
нужно
А вообще молодец. Я бы поленился :) vano-m, будешь с Веллой расплачиваться ещё год :) |
||||||
-=Велла=- Свободна |
21-03-2008 - 10:21 mvf23, аа ... точно))))) недосмотрела... |
||||||
Свободен |
21-03-2008 - 23:04 Огромное спасибо. Лабу я таки сегодня сдал. Правда один нюанс. Когда я ее на паскале написал и запустил все работало и выводилось в файл как надо, только ответ всегда был 1. Непонятна почему. Хотя мне очень повезло. Другой препод был, который не посмотрел текст, просто проверил. Я подстроил элементы так чтоб ответ был 4. и написал writeln 4. ГЫ. Вам всем огромное спасибо, ибо я всетаки посмотрев на готовый текст программы понял как решать подобные лабораторные. Хотя со следующей темой мрак... ВСЕМ ОГРОМНЕЙШЕЕ СПАСИБО! |
||||||
Свободен |
22-03-2008 - 00:33 Зачет. Надо взять метод на вооружение. |