Взрослая социальная сеть
Текстовая версия форума
Знакомства для секса Регистрация


Народ, Помогите, (ЗА СЕКСО)

Текстовая версия форума: Архив компьютерного форума



Полная версия топика:
Народ, Помогите, (ЗА СЕКСО) -> Архив компьютерного форума


Страницы: [1]23

vano-m
Если напишите небольшую програмку на ТурбоПаскале (она буквально на страничку), буду очень благодарен и одарю сексо!

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

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

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

Это сообщение отредактировал vano-m - 14-03-2008 - 21:48
-=Велла=-
КОгда надо?
vano-m
QUOTE (-=Велла=- @ 14.03.2008 - время: 22:19)
КОгда надо?

впринципе не срочно... неделя где-то.
-=Велла=-
ок... я попробую... если до четверга не успею, то напишу...
vano-m
QUOTE (-=Велла=- @ 15.03.2008 - время: 17:24)
ок... я попробую... если до четверга не успею, то напишу...

огромнейшее спсибо!
do-do
Мож все ж сам сделаешь? Оно полезнее..
только помнить, что
X mod 2 = 0 если число четное... остальное в несколько строк делается
do-do
Дело было вечером...да и делать было нечего
Вот решил порукоблудить по поводу
Турбо Паскаль года 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.
-=Велла=-
do-do, не прокатит.
тема лабораторной - массивы, а не записи.
do-do
А где это написано ? что массивы :)
Слово Элемент массива я воспринимаю просто как индекс в памяти :)

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

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

Это сообщение отредактировал do-do - 16-03-2008 - 20:15
-=Велла=-
QUOTE
А где это написано ? что массивы :)

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

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



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

Наверно я не(не хочу употреблять выражение туповат) не имею склонностей к изучению программирования. Прошустрил всю методичку. Три лабы зделал, на четвертой споткнулся. Эдакий у мну камень преткновения-массивы)))
vano-m
QUOTE (mvf23 @ 18.03.2008 - время: 15:12)
Студент первого курса, на котором обычно дают подобные задания должен решить его примерно так:

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


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

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

*БЬЕТ СЕБЯ ГОЛОВОЙ ОБ СТОЛ!
-=Велла=-
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
Что напрягает...что массивы предопределены :) (их размер) с указателями универсальнее - 9хотя конечно, опять же все в одном сегменте только)
JeyLo
А я... А я... А я паскаль не знаю! Напесал на си... :)

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;
}
-=Велла=-
А кто нить на Прологе может напишет заодно lol.gif
mvf23
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
vano-m
Всем огромнейшее спасибо! Попробую в пятницу сдать Это чудо!
vano-m
QUOTE (-=Велла=- @ 18.03.2008 - время: 22:42)

uses crt;

clrscr;

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

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



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

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

uses crt;

clrscr;

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

можно убрать, если сомневаешься или если боишься чуть-чуть "повыпендриваться". Будет работать и без этого. Нужно просто, чтоб экран очистить.
vano-m
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
QUOTE (vano-m @ 19.03.2008 - время: 18:46)
QUOTE (mvf23 @ 19.03.2008 - время: 18:38)
Будет работать и без этого. Нужно просто, чтоб экран очистить.

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

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

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

Понял КАК ? Если понял - то иди сдавайся преподу, а ежли нет....то все ж спроси чего не понятно
vano-m
QUOTE (do-do @ 20.03.2008 - время: 08:20)
Я бы на твоем месте ПОПРОСИЛ АЛГОРИТМ разъяснить :) пох.. на не важные процедуры :)

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

единственный нюанс, это наскока я понял вывод результатов должен осуществляться в .txt файл вроде.
-=Велла=-
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
-=Велла=-, чуть-чуть недосмотрела: вместо
CODE
if i mod 9=0 then writeln;
нужно
CODE
if i mod 9=0 then writeln(f);


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

vano-m, будешь с Веллой расплачиваться ещё год :)
-=Велла=-
mvf23, аа ... точно))))) недосмотрела...
vano-m
Огромное спасибо. Лабу я таки сегодня сдал. Правда один нюанс. Когда я ее на паскале написал и запустил все работало и выводилось в файл как надо, только ответ всегда был 1. Непонятна почему. Хотя мне очень повезло. Другой препод был, который не посмотрел текст, просто проверил. Я подстроил элементы так чтоб ответ был 4. и написал writeln 4. ГЫ.

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

ВСЕМ ОГРОМНЕЙШЕЕ СПАСИБО!
JeyLo
Зачет.
Надо взять метод на вооружение.

Страницы: [1]23

Архив компьютерного форума -> Народ, Помогите, (ЗА СЕКСО)





Проститутки Киева | индивидуалки Москвы | Эротический массаж в Москве | Проститутки-индивидуалки Москва