Closed TopicStart new topicStart Poll

Страницы: (4) 1 2 3 4 
дата: [ i ]
  • Unregistered
  • Статус:
  • Свободен
Если напишите небольшую програмку на ТурбоПаскале (она буквально на страничку), буду очень благодарен и одарю сексо!

Вот задачка, надо по не прогу написать.

Определение номера элемента, с которого начинается самая длинная последовательность четных чисел, расположенных в массиве подряд! Длина массива вводится с клавиатуры.

Печатать элементы массива по 6 штук, по формату :6
Тип данных: целые

Это сообщение отредактировал vano-m - 14-03-2008 - 21:48
-=Велла=-
дата: [ i ]
  • Group Icon
  • Акула пера
  • Репутация: 2775
  • Статус: Паникёрша и скандалистка )))
  • Member OfflineЖенщинаСвободна
КОгда надо?
дата: [ i ]
  • Unregistered
  • Статус:
  • Свободен
QUOTE (-=Велла=- @ 14.03.2008 - время: 22:19)
КОгда надо?

впринципе не срочно... неделя где-то.
-=Велла=-
дата: [ i ]
  • Group Icon
  • Акула пера
  • Репутация: 2775
  • Статус: Паникёрша и скандалистка )))
  • Member OfflineЖенщинаСвободна
ок... я попробую... если до четверга не успею, то напишу...
дата: [ i ]
  • Unregistered
  • Статус:
  • Свободен
QUOTE (-=Велла=- @ 15.03.2008 - время: 17:24)
ок... я попробую... если до четверга не успею, то напишу...

огромнейшее спсибо!
do-do
дата: [ i ]
  • Group Icon
  • Мастер
  • Репутация: 349
  • Статус: Поболтаем?
  • Member OfflineМужчинаСвободен
Мож все ж сам сделаешь? Оно полезнее..
только помнить, что
X mod 2 = 0 если число четное... остальное в несколько строк делается
do-do
дата: [ i ]
  • Group Icon
  • Мастер
  • Репутация: 349
  • Статус: Поболтаем?
  • Member OfflineМужчинаСвободен
Дело было вечером...да и делать было нечего
Вот решил порукоблудить по поводу
Турбо Паскаль года 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.

-=Велла=-
дата: [ i ]
  • Group Icon
  • Акула пера
  • Репутация: 2775
  • Статус: Паникёрша и скандалистка )))
  • Member OfflineЖенщинаСвободна
do-do, не прокатит.
тема лабораторной - массивы, а не записи.
do-do
дата: [ i ]
  • Group Icon
  • Мастер
  • Репутация: 349
  • Статус: Поболтаем?
  • Member OfflineМужчинаСвободен
А где это написано ? что массивы :)
Слово Элемент массива я воспринимаю просто как индекс в памяти :)

Впрочем - Суть алгоритма от этого не изменяется :) Даже меньше писать. Впрочем - ТОТ же массив - это тот же список :) Определив 2-3 процедуры работы с индексом, (скрыв детали) имеем массив

Впрочем :) я не собираюсь дорогу переБегать :) Ваяй. Так - размялся, алгоритм вообщем то очевиден.

Это сообщение отредактировал do-do - 16-03-2008 - 20:15
-=Велла=-
дата: [ i ]
  • Group Icon
  • Акула пера
  • Репутация: 2775
  • Статус: Паникёрша и скандалистка )))
  • Member OfflineЖенщинаСвободна
QUOTE
А где это написано ? что массивы :)

да он мне просто методичку дал посмотреть :)

Да я то чо, я ничо )))) ПРосто мне самой заняться нечем.. сижу дома ж.. тупею.. а так хоть зарядка для мозгов будет ))))

do-do
дата: [ i ]
  • Group Icon
  • Мастер
  • Репутация: 349
  • Статус: Поболтаем?
  • Member OfflineМужчинаСвободен
Студенты :) в методичке все обычно пишут ...а они не читают
mvf23
дата: [ i ]
  • *
  • Специалист
  • Репутация: 62
  • Статус: Давай пообщаемся!
  • Member OfflineМужчинаСвободен
QUOTE (do-do @ 16.03.2008 - время: 16:39)
Дело было вечером...да и делать было нечего

напоминает известную шутку про то как пишут программу "Hello World" люди с разным уровнем образования :) См. http://www.gnu.org/fun/jokes/helloworld.html

Студент первого курса, на котором обычно дают подобные задания должен решить его примерно так:

CODE

a- массив [1..n]

max_start := 0; {начальный элемент самой длинной последовательности}
max_len := 0;   {длина самой длинной последовательности}
cur_start := 0;   {начальный элемент текущей последовательности}

{ввод данных, сами пишите, влом}

for i:=1 to n do {перебираем}
begin
if (a[i] mod 2 = 0) then {если четный}
 begin
  if cur_start = 0 then {если первый в последовательности}
    begin
     cur_start := i;
     cur_len := 1;
    end
  else cur_len := cur_len + 1; {если не первый в последовательности}
 end
else {если нечетный, значит последовательность четных закончилась}
begin
 if cur_len>max_len then {сравниваем длину с максимальной, если длиннее то}
  begin
   max_start := cur_start; {устанавливаем новую максимальную}
   max_len := cur_len;
  end;
 cur_start := 0; {сбрасываем текущую}
 cur_len := 0;
end;
end;

{вывод данных, сами пишите, влом}


PS. кстати задача проверки четности числа эффективнее решается с помощью вот такой конструкции (a[i] and 1 = 0). Т.к. побитовое "и" всегда выполняется быстрее чем деление с остатком.



Это сообщение отредактировал mvf23 - 18-03-2008 - 16:22
do-do
дата: [ i ]
  • Group Icon
  • Мастер
  • Репутация: 349
  • Статус: Поболтаем?
  • Member OfflineМужчинаСвободен
QUOTE (mvf23 @ 18.03.2008 - время: 15:12)


PS. кстати задача проверки четности числа эффективнее решается с помощью вот такой конструкции (a[i] and 1 = 0). Т.к. побитовое "и" всегда выполняется быстрее чем деление с остатком.

Гм...если учесть ручной ввод :) То большой выигрыш будет :)?

mod - нагляднее (в учебных целях наверное нормально) Хотя думаю если студент объяснит X and 1 = 0 четное - то зачет надо ставить сразу :)

Это сообщение отредактировал do-do - 18-03-2008 - 17:36
mvf23
дата: [ i ]
  • *
  • Специалист
  • Репутация: 62
  • Статус: Давай пообщаемся!
  • Member OfflineМужчинаСвободен
QUOTE (do-do @ 18.03.2008 - время: 15:58)
QUOTE (mvf23 @ 18.03.2008 - время: 15:12)


PS. кстати задача проверки четности числа эффективнее решается с помощью вот такой конструкции (a[i] and 1 = 0). Т.к. побитовое "и" всегда выполняется быстрее чем деление с остатком.

Гм...если учесть ручной ввод :) То большой выигрыш будет :)?

mod - нагляднее (в учебных целях наверное нормально)

вообще разница на два порядка :) примерно 3-4 такта процессора (в случае AND) против 150 (в случае MOD). Но это в такой программе никак ощущаться не будет, конечно если размер массива ограничен какими-то небольшими цифрами.

Однако студент, затрудняющийся написать такую лабу, вряд ли сможет веско объяснить преподавателю почему лучше использовать AND (да и не факт что преподаватель это знает :D). Да и ты прав - так оно нагляднее. Поэтому я и употребил в самой программе mod, про and написав в PS.




дата: [ i ]
  • Unregistered
  • Статус:
  • Свободен
QUOTE (do-do @ 16.03.2008 - время: 20:17)
Студенты :) в методичке все обычно пишут ...а они не читают

Наверно я не(не хочу употреблять выражение туповат) не имею склонностей к изучению программирования. Прошустрил всю методичку. Три лабы зделал, на четвертой споткнулся. Эдакий у мну камень преткновения-массивы)))

дата: [ i ]
  • Unregistered
  • Статус:
  • Свободен
QUOTE (mvf23 @ 18.03.2008 - время: 15:12)
Студент первого курса, на котором обычно дают подобные задания должен решить его примерно так:

[CODE]
a- массив [1..n]


а описание переменных и массива-енто куда? точнее как? там же вроде все variables описать нада.

Я ничего не понимаю!

*БЬЕТ СЕБЯ ГОЛОВОЙ ОБ СТОЛ!
-=Велла=-
дата: [ i ]
  • Group Icon
  • Акула пера
  • Репутация: 2775
  • Статус: Паникёрша и скандалистка )))
  • Member OfflineЖенщинаСвободна
vano-m.. говори спасибо mvf23. Я написала ввод-вывод (правла не в файл, а не экран)... Вот, держи...
CODE
program var29;
uses crt;
var
a: array [1..100] of integer;
max_start,max_len,cur_start,cur_len:integer;
i:integer;
n:integer;
begin
clrscr;
max_start := 0; {начальный элемент самой длинной последовательности}
max_len := 0;   {длина самой длинной последовательности}
cur_start := 0;   {начальный элемент текущей последовательности}

{ввод данных}
writeln('Введите кол-во элементов массива');
readln (n);
writeln('Введите элементы массива');
for i:=1 to n do
readln(a[i]);

for i:=1 to n do {перебираем}
begin
if (a[i] mod 2 = 0) then {если четный}
begin
 if cur_start = 0 then {если первый в последовательности}
   begin
    cur_start := i;
    cur_len := 1;
   end
 else cur_len := cur_len + 1; {если не первый в последовательности}
end
else {если нечетный, значит последовательность четных закончилась}
begin
if cur_len>max_len then {сравниваем длину с максимальной, если длиннее то}
 begin
  max_start := cur_start; {устанавливаем новую максимальную}
  max_len := cur_len;
 end;
cur_start := 0; {сбрасываем текущую}
cur_len := 0;
end;
end;
{вывод результата по 9 элементов массива в строке}
for i:=1 to n do
begin
write (a[i]:6);
if i mod 9=0 then writeln;
end;
writeln;
writeln('Номер элемента, с которого начинается максимальная после-то четных чисел:',max_start);
readln;
end.

do-do
дата: [ i ]
  • Group Icon
  • Мастер
  • Репутация: 349
  • Статус: Поболтаем?
  • Member OfflineМужчинаСвободен
Что напрягает...что массивы предопределены :) (их размер) с указателями универсальнее - 9хотя конечно, опять же все в одном сегменте только)
дата: [ i ]
  • Unregistered
  • Статус:
  • Свободен
А я... А я... А я паскаль не знаю! Напесал на си... :)

CODE
int f ( int* pp, int n ) {
int* p = pp + n - 1;
int a = 0, b = 0, c = -1;
do { a = ((*p--) & 1) ? ( 0, b < a ? c = n, b = a : 0 ) : a + 1; } while ( n-- );
return a > b ? 0 : c;
}

-=Велла=-
дата: [ i ]
  • Group Icon
  • Акула пера
  • Репутация: 2775
  • Статус: Паникёрша и скандалистка )))
  • Member OfflineЖенщинаСвободна
А кто нить на Прологе может напишет заодно lol.gif
mvf23
дата: [ i ]
  • *
  • Специалист
  • Репутация: 62
  • Статус: Давай пообщаемся!
  • Member OfflineМужчинаСвободен
QUOTE (JeyLo @ 19.03.2008 - время: 13:22)
А я... А я... А я паскаль не знаю! Напесал на си... :)

CODE
int f ( int* pp, int n ) {
int* p = pp + n - 1;
int a = 0, b = 0, c = -1;
do { a = ((*p--) & 1) ? ( 0, b < a ? c = n, b = a : 0 ) : a + 1; } while ( n-- );
return a > b ? 0 : c;
}

wacko.gif какой-то у тебя си не кашерный, ну т.е. круто конечно что в четыре строки, но совершенно не читабельно... :) Ты б ещё на каком-нибудь брэйнфаке написал или на другом эзотерическом :) Короче - ходи туды: http://esco.sourceforge.net/?page=elang Там и компилятор на все случаи жизни и ссылки правильные :) Будешь потом только на них программить :

Типо приходит чел и говорит "мне надо на паскале хеллоу ворлд написать", а ты ему "ну паскаля я не знаю, но вот тебе хеллоу ворлд на езыке OOK"

CODE

Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook.
Ook! Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook?
Ook! Ook! Ook? Ook! Ook? Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook.
Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook.
Ook? Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook.
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook. Ook! Ook.

А поскольку этот самый Ook - является закосом под крики орангутанов то можно ещё попытаться эту программу озвучить и выложить в качестве мп3 biggrin.gif

Это сообщение отредактировал mvf23 - 19-03-2008 - 21:06
дата: [ i ]
  • Unregistered
  • Статус:
  • Свободен
Всем огромнейшее спасибо! Попробую в пятницу сдать Это чудо!
дата: [ i ]
  • Unregistered
  • Статус:
  • Свободен
QUOTE (-=Велла=- @ 18.03.2008 - время: 22:42)

uses crt;

clrscr;

а что это такое кста?
do-do
дата: [ i ]
  • Group Icon
  • Мастер
  • Репутация: 349
  • Статус: Поболтаем?
  • Member OfflineМужчинаСвободен
QUOTE (-=Велла=- @ 19.03.2008 - время: 16:09)
А кто нить на Прологе может напишет заодно lol.gif

Надеюсь на Турбо :)?



Crt - стандартная библиотека (Турбо Паскаля) Помогает в быстром выводе например на монитор (там много всего)

clrscr - процедура из этой библиотеки - просто стирает экран от символов

mvf23
дата: [ i ]
  • *
  • Специалист
  • Репутация: 62
  • Статус: Давай пообщаемся!
  • Member OfflineМужчинаСвободен
QUOTE (vano-m @ 19.03.2008 - время: 18:07)
QUOTE (-=Велла=- @ 18.03.2008 - время: 22:42)

uses crt;

clrscr;

а что это такое кста?

можно убрать, если сомневаешься или если боишься чуть-чуть "повыпендриваться". Будет работать и без этого. Нужно просто, чтоб экран очистить.
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)

Страницы: (4) 1 2 3 4

Closed TopicStart new topicStart Poll0


Рекомендуем почитать также топики:

Качество цветопередачи и разрешение самое низкое

Центр обновления Windows

Скайп, флешплейер

комп иногда сильно гудит.

Не показываются фото на форуме



>