Взрослая социальная сеть
Поиск секса поблизости, а также
тематические знакомства и виртуальное общение

ВХОД РЕГИСТРАЦИЯ
Все о сексе Секс чат Блоги Группы

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

Свободен
14-03-2008 - 21:46
Если напишите небольшую програмку на ТурбоПаскале (она буквально на страничку), буду очень благодарен и одарю сексо!

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

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

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

Это сообщение отредактировал vano-m - 14-03-2008 - 21:48
Женщина -=Велла=-
Свободна
14-03-2008 - 23:19
КОгда надо?

Свободен
15-03-2008 - 16:39
QUOTE (-=Велла=- @ 14.03.2008 - время: 22:19)
КОгда надо?

впринципе не срочно... неделя где-то.
Женщина -=Велла=-
Свободна
15-03-2008 - 18:24
ок... я попробую... если до четверга не успею, то напишу...

Свободен
15-03-2008 - 20:48
QUOTE (-=Велла=- @ 15.03.2008 - время: 17:24)
ок... я попробую... если до четверга не успею, то напишу...

огромнейшее спсибо!
Мужчина 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
QUOTE
А где это написано ? что массивы :)

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

Да я то чо, я ничо )))) ПРосто мне самой заняться нечем.. сижу дома ж.. тупею.. а так хоть зарядка для мозгов будет ))))
Мужчина do-do
Свободен
16-03-2008 - 21:17
Студенты :) в методичке все обычно пишут ...а они не читают
Мужчина mvf23
Свободен
18-03-2008 - 16:12
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
Свободен
18-03-2008 - 16:58
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
Свободен
18-03-2008 - 17:42
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.




Свободен
18-03-2008 - 23:12
QUOTE (do-do @ 16.03.2008 - время: 20:17)
Студенты :) в методичке все обычно пишут ...а они не читают

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

Свободен
18-03-2008 - 23:19
QUOTE (mvf23 @ 18.03.2008 - время: 15:12)
Студент первого курса, на котором обычно дают подобные задания должен решить его примерно так:

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


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

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

*БЬЕТ СЕБЯ ГОЛОВОЙ ОБ СТОЛ!
Женщина -=Велла=-
Свободна
18-03-2008 - 23:42
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
Свободен
19-03-2008 - 08:41
Что напрягает...что массивы предопределены :) (их размер) с указателями универсальнее - 9хотя конечно, опять же все в одном сегменте только)

Свободен
19-03-2008 - 14: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;
}
Женщина -=Велла=-
Свободна
19-03-2008 - 17:09
А кто нить на Прологе может напишет заодно lol.gif
Мужчина mvf23
Свободен
19-03-2008 - 19:03
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

Свободен
19-03-2008 - 19:04
Всем огромнейшее спасибо! Попробую в пятницу сдать Это чудо!

Свободен
19-03-2008 - 19:07
QUOTE (-=Велла=- @ 18.03.2008 - время: 22:42)

uses crt;

clrscr;

а что это такое кста?
Мужчина do-do
Свободен
19-03-2008 - 19:29
QUOTE (-=Велла=- @ 19.03.2008 - время: 16:09)
А кто нить на Прологе может напишет заодно lol.gif

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



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

clrscr - процедура из этой библиотеки - просто стирает экран от символов
Мужчина mvf23
Свободен
19-03-2008 - 19:38
QUOTE (vano-m @ 19.03.2008 - время: 18:07)
QUOTE (-=Велла=- @ 18.03.2008 - время: 22:42)

uses crt;

clrscr;

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

можно убрать, если сомневаешься или если боишься чуть-чуть "повыпендриваться". Будет работать и без этого. Нужно просто, чтоб экран очистить.

Свободен
19-03-2008 - 19:46
QUOTE (mvf23 @ 19.03.2008 - время: 18:38)
QUOTE (vano-m @ 19.03.2008 - время: 18:07)
QUOTE (-=Велла=- @ 18.03.2008 - время: 22:42)

uses crt;

clrscr;

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

можно убрать, если сомневаешься или если боишься чуть-чуть "повыпендриваться". Будет работать и без этого. Нужно просто, чтоб экран очистить.

всмысле при каждом новом запуске?
Мужчина mvf23
Свободен
19-03-2008 - 20:35
QUOTE (vano-m @ 19.03.2008 - время: 18:46)
QUOTE (mvf23 @ 19.03.2008 - время: 18:38)
Будет работать и без этого. Нужно просто, чтоб экран очистить.

всмысле при каждом новом запуске?

ну видишь - команда clrcsr написана в самом начале программы. Значит перед тем как делать что-либо ещё программа будет очищать экран. Т.е. при каждом запуске.

Свободен
19-03-2008 - 22:47
аа. понятно. спс.

впятницу отпишшусь о том, как прошло...
Мужчина do-do
Свободен
20-03-2008 - 09:20
Я бы на твоем месте ПОПРОСИЛ АЛГОРИТМ разъяснить :) пох.. на не важные процедуры :)

Понял КАК ? Если понял - то иди сдавайся преподу, а ежли нет....то все ж спроси чего не понятно

Свободен
20-03-2008 - 22:09
QUOTE (do-do @ 20.03.2008 - время: 08:20)
Я бы на твоем месте ПОПРОСИЛ АЛГОРИТМ разъяснить :) пох.. на не важные процедуры :)

Понял КАК ? Если понял - то иди сдавайся преподу, а ежли нет....то все ж спроси чего не понятно

единственный нюанс, это наскока я понял вывод результатов должен осуществляться в .txt файл вроде.
Женщина -=Велла=-
Свободна
20-03-2008 - 23:57
vano-m, я ж тебя спрашивала об этом... щас сделаю....
ВОт

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;
f:text; {текстовый файл}
begin
clrscr;
assign (f,'res.txt'); {связали файл f с файлом на диске res.txt}
rewrite(f); {открыть файл для записи}
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 (f, a[i]:6);
if i mod 9=0 then writeln;
end;
writeln;
writeln(f,'Номер элемента, с которого начинается максимальная после-то четных чисел:',max_start);
readln;
close(f); {закрыть файл}
end.


Это сообщение отредактировал -=Велла=- - 21-03-2008 - 00:09
Мужчина mvf23
Свободен
21-03-2008 - 03:47
-=Велла=-, чуть-чуть недосмотрела: вместо
CODE
if i mod 9=0 then writeln;
нужно
CODE
if i mod 9=0 then writeln(f);


А вообще молодец. Я бы поленился :)

vano-m, будешь с Веллой расплачиваться ещё год :)
Женщина -=Велла=-
Свободна
21-03-2008 - 10:21
mvf23, аа ... точно))))) недосмотрела...

Свободен
21-03-2008 - 23:04
Огромное спасибо. Лабу я таки сегодня сдал. Правда один нюанс. Когда я ее на паскале написал и запустил все работало и выводилось в файл как надо, только ответ всегда был 1. Непонятна почему. Хотя мне очень повезло. Другой препод был, который не посмотрел текст, просто проверил. Я подстроил элементы так чтоб ответ был 4. и написал writeln 4. ГЫ.

Вам всем огромное спасибо, ибо я всетаки посмотрев на готовый текст программы понял как решать подобные лабораторные.
Хотя со следующей темой мрак...

ВСЕМ ОГРОМНЕЙШЕЕ СПАСИБО!

Свободен
22-03-2008 - 00:33
Зачет.
Надо взять метод на вооружение.
0 Пользователей читают эту тему

Страницы: (3) 1 2 3 ...
  Наверх