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

DELETED
4/4/2008, 12:05:18 AM
Кнута не читать??? Богохульники!
mvf23
4/4/2008, 1:12:04 AM
(mvf23 @ 03.04.2008 - время: 16:43) Городить тут классы, процедуры и т.п. имхо только код удлинять :)
Кстати в подтверждение этих слов - если убрать комменты и форматирование, то мой вариант программы (без процедур, функций, и повторного использования кода) получился даже чуть-чуть покороче :) Байт на 40... :)

А если тут объектов расплодить "в лучших традициях" - то код вырастет ещё процентов на 20-25. А если ещё и динамические массивы устроить - то и того больше... Результат: почти в два раза больше кода, а результат - такой же...

Вывод: чтобы не создавать себе лишней работы - нужно соразмерять сложность задачи и сложность способов её решения.
-=Велла=-
4/4/2008, 2:01:39 AM
vano-m должен mvf23 уже вагон пива! )))))
do-do
4/4/2008, 4:14:49 AM
(mvf23 @ 03.04.2008 - время: 21:12)
Кстати в подтверждение этих слов -
Я хоть первую страницу методички прочел :) Там черным по белому - в программе ДОЛЖНЫ быть проверки на возможные ошибки :)
А ежли файл D:\LAB1\DATI.TXT потерли ? А мож в DATI.TXT ошибки в формате данных :)?
DELETED
4/4/2008, 4:46:11 AM
Методичку не четал, бо на жопорезе. Но в данном случае do-do немножко прав. Алгоритмизация и красота кода на первом этапе не важна. Впрочем, она не важна и в дальнейшем, если не умеешь реагировать "на дурака" и думать про то, что может сделать дурак.

mvf23, знаешь, чем в своей основной массе русский софт отличается от западного? Наш сделан программистами для красоты, а там для людей. У меня банальнейший (правда без MFC) визард на четыре степа (суммарно на шесть) занимает не меньше трех дней. А нарисовать GINA proxy 6 часов.

.... wink.gif
mvf23
4/4/2008, 9:45:12 AM
(do-do @ 04.04.2008 - время: 00:14) Там черным по белому - в программе ДОЛЖНЫ быть проверки на возможные ошибки :)
А ежли файл D:\LAB1\DATI.TXT потерли ? А мож в DATI.TXT ошибки в формате данных :)?
Угу-угу :) Согласен и с тобой и с JeyLo в этом отношении.

В случае с описанной задачей и проверками корректности ввода-вывода предложенными do-do - все это конечно здорово, но не входит в стандартные средства Паскаля (определенные Н.Виртом и позже в ISO 7185)... А использовать какие-то компилятор-зависимые возможности - конечно неплохо, но нет никаких гарантий, что в ВУЗе vano-m не используют какой-нибудь GNU Pascal в режиме ANSI ISO...

В частности, поэтому и не учат обычно таким вещам... Вообще же проблема не только в этом. На практике - многим студентам не математических специальностей даже что такое матрица, и что есть пузырек понять сложно, поэтому не до подобных тонкостей, лишь бы хоть что-то усвоили... Вы сначала попробуйте пообщаться с реальными студентами не математических специальностей, а потом поговорим... wink.gif

К слову, даже говоря о потенциальных ошибках, которые могут возникнуть при использовании Turbo Pascal - все равно do-do обработал не все ошибки :) Например Range Checking... Например вывод на печать длинных чисел. И т.п. Высматривать влом.

2 JeyLo: переварил твой код с трудом :) Я последнее время только на скриптовых языках пишу - или кроссплатформенное или под веб. Поэтому такие нэйтив-вин-апи штуки перевариваю со скрипом... Долго думал зачем тебе вагина-прокси ('gina - это слэнговое vagina). Пришлось погуглить, зато теперь я знаю что это не только вагина, но и "Graphical identification and authentication"... :) Короче - глядя на подобный код радуюсь, что не пишу под винду :) Самое ужасное в этом то, что выйдет какая-нить Vienna, чуть-чуть изменится API, и превед... И такая аккуратно написанная обработка всяких интересных событий вроде блокировки рабочей станции - станет работать через зад...

Впрочем речь не об этом. С самой мыслью о том, что нужно предусматривать все грабли - согласен. Но требовать этого от студентов нематематических специальностей - имхо, в меру бессмысленно...Особенно с учетом того, что все грабли даже очень опытный программист предусмотреть может не всегда :/

(JeyLo @ 04.04.2008 - время: 00:46) Алгоритмизация и красота кода на первом этапе не важна. Впрочем, она не важна и в дальнейшем, если не умеешь реагировать "на дурака" и думать про то, что может сделать дурак.
При обучении в первую очередь важна алгоритмизация. Ведь обработка ошибок по сути тоже представляет собой некий алгоритм. Не понимая что есть алгоритм, и как работают банальные вещи, вряд ли возможно обрабатывать ошибки.

ИМХО, ребенок СНАЧАЛА должен научиться ходить, а уже потом научиться НЕ запинаться за мелкие препятствия... Боюсь если начать с того, что объяснить, что есть препятствия, за которые не надо запинаться - то ребенок с перепугу не пойдет вообще... Зато ему достаточно запнуться один раз и упасть больно на коленку чтобы научиться смотреть под ноги.

В общем do-do, JeyLo я с вами согласен, что эти вещи нужны и важны, но вы рассуждаете как "матерые программисты", думаю вам действительно стоит пообщаться с живыми студентами (не программистами) изучающими информатику, чтобы стать чуточку "ближе к народу"... :)
do-do
4/4/2008, 2:34:45 PM
(mvf23 @ 04.04.2008 - время: 05:45) А использовать какие-то компилятор-зависимые возможности - конечно неплохо, но нет никаких гарантий, что в ВУЗе vano-m не используют какой-нибудь GNU Pascal в режиме ANSI ISO...




Я конечно не Вирт, а так просто do-do, но даж я прочел :) Курс называется у человека программирование на TURBO PASCAL(e), конечно там может и 3я версия рулит :) НО IMHO все ж по умолчанию 7ка :)
И зная традиции, историю и наблюдая компы в учебных классах скажу - там нету даже free pascal(я) (котрый кстати имеет режим совместимости с турбиной) какие нах.. GNU :) чего препод лет 20 взад научился то и говорит

все равно do-do обработал не все ошибки :) Например Range Checking... Например вывод на печать длинных чисел. И т.п. Высматривать влом.
Угу, а откуда длинные целые вылезут ? Проверка идет на соответствие INTEGER - при загрузке массива. Или ДА или Нет. Хотя возможно восав число long...(забыл как оно в паскале дальше) он просто отбросив лишние байты присвоит нечто.... Гм...проверил - прога отследила ЭТУ ошибку (все ж паскаль более строг к соответствию типов :) чем С)

В частности, поэтому и не учат обычно таким вещам... Вообще же проблема не только в этом. На практике - многим студентам не математических специальностей даже что такое матрица, и что есть пузырек понять сложно, поэтому не до подобных тонкостей, лишь бы хоть что-то усвоили... Вы сначала попробуйте пообщаться с реальными студентами не математических специальностей, а потом поговорим... wink.gif

Сам преподаю...общаюсь..да и местный зачинатель топика то ж студент :)
DELETED
4/4/2008, 3:32:04 PM
(-=Велла=- @ 03.04.2008 - время: 22:01) vano-m должен mvf23 уже вагон пива! )))))
Действительно! mvf23 огромное спасибо! Выручаете бедного студента как можете!

Во вторник попробую сдаться.

ЗЫ "студент гр. sxn.io" это мощно)))
mvf23
4/4/2008, 5:46:40 PM
(do-do @ 04.04.2008 - время: 10:34)Гм...проверил - прога отследила ЭТУ ошибку (все ж паскаль более строг к соответствию типов :) чем С)
ну наверное не прога отследила, а дебаггер в IDE.... :) А прога runtime error с каким-нибудь мутным номером наверное выдала... Кстати, ровно точно также она поступает, если оставить не обработанными ошибки ввода-вывода...

(do-do @ 04.04.2008 - время: 10:34)Сам преподаю...общаюсь..да и местный зачинатель топика то ж студент :)
ну вот давай и спросим у него, что он думает по поводу объектного программирования, динамических массивов и обработки ошибок ввода-вывода... :)

(do-do @ 04.04.2008 - время: 10:34)Курс называется у человека программирование на TURBO PASCAL(e)
Гм... Не видел. Где это написано?

(do-do @ 04.04.2008 - время: 10:34)чего препод лет 20 взад научился то и говорит
в том-то и бонус... Когда учишь стандарту языка - можешь быть уверен в том, что и 20 лет назад программа компилировалась, и что через 20 лет она будет нормально компилироваться. А конкретные компиляторы могут рождаться и умирать, принося и унося новые багофичи...

(vano-m @ 04.04.2008 - время: 11:32)Действительно! mvf23 огромное спасибо! Выручаете бедного студента как можете!

Во вторник попробую сдаться.

ЗЫ "студент гр. sxn.io" это мощно)))
Угу-угу... Кстати - попробуй всё же разобраться как оно работает, чтоб тебе польза была не только для зачетки, но и для общего развития... :)

Будут вопросы - задавай, не стесняйся, а то тут "матерые программисты" вместо того, чтоб объяснять по-человечески, какие-то эзотерические споры ведут от безделья :)
do-do
4/4/2008, 9:28:33 PM
(mvf23 @ 04.04.2008 - время: 13:46)
ну наверное не прога отследила, а дебаггер в IDE.... :) А прога runtime error с каким-нибудь мутным номером наверное выдала...
Неа ...
IDE не пользуюсь :) Far+компилятор командной строки. Обработчик ошибок (мой) штатно сработал - указал строчку в которой ошибка :)

DELETED
4/6/2008, 2:41:58 AM
(mvf23 @ 04.04.2008 - время: 13:46)
Угу-угу... Кстати - попробуй всё же разобраться как оно работает, чтоб тебе польза была не только для зачетки, но и для общего развития... :)

Будут вопросы - задавай, не стесняйся, а то тут "матерые программисты" вместо того, чтоб объяснять по-человечески, какие-то эзотерические споры ведут от безделья :)
спасибо. да я впринципе с 1 по 4 лабу как текст увидел, так сразу и суть и алгоритм понял. пятую еще пока пытаюсь понять, до перестановок уже все въехал. до конца семестра остались две лабы... потом экзамен. ээх. уже начал готовится...
DELETED
4/9/2008, 11:57:29 PM
Уррра! пятая лаба здана! осталось написать подпрограммы.

ВСЕМ огромное спасибо!
DELETED
4/25/2008, 10:38:10 PM
Народ. Понимаю, конечно, что достал тут уже всех. Но мну застопорился на последней лабе. Из зп чего не дают написать курсовую. Помогите в последний разок , а?
do-do
4/26/2008, 12:00:40 AM
Но мну застопорился на последней лабе
Ты как царь горы понимаешь шо написал, для тех кто в танке разжуй Ху из Что

P.S. Кого достал, те не ответят - так шо брось, чай не институтка. Сермягу излагай
DELETED
4/26/2008, 9:57:46 PM
Вобщем тут такое дело...

Прочитать в одномерный массив строк (длинной по 74 символа) первые 73 символа каждой строк файла DATF.TXT (файл на серваке в универе). Используя функцию, заполнить выходной одномерный массив (элементы - строки, длинной восемь символов) числами.

Процедуры
1) Составить строковую функцию, выбирающую из строки первое число - первую подстроку между пробелами, заменяя при выборе в исходной строке выбранные символы пробелами.
2) Аечать выходного массива по пять чисел в строке выполнить с помощю процедуры.

M<=10 М- кол-во строк
do-do
4/26/2008, 11:21:56 PM
Ну так в чем затык то ?

Ты ведь можешь сравнивать в IF значение букв и если символ больше 9 или меньше 0 то это не число...дальше находишь первую позицию числа и в цикле ищешь пробел (или букву?)
DELETED
4/27/2008, 1:36:59 AM
(do-do @ 26.04.2008 - время: 19:21) Ну так в чем затык то ?

Ты ведь можешь сравнивать в IF значение букв и если символ больше 9 или меньше 0 то это не число...дальше находишь первую позицию числа и в цикле ищешь пробел (или букву?)
я ваще не знаю как это написать!.... :'((((((((
DELETED
5/1/2008, 2:21:02 AM
походу попу рвать придеца на этой инфе... тока как бы это так побезболезненей зделсть...
do-do
5/1/2008, 9:47:45 PM
Вот очередная мастурбация моего разума

CODE
(***************************[sxn.io]*******************************)
(*                                                                     *)
(*  File   : Number-str.pas                                            *)
(*  Created: 01/05/2008                                                *)
(*  Reason : работа со строковыми массивами                            *)
(*  Product: нахождение числа в подстроке                              *)
(*  Author : do-do                                                     *)
(*  Purpose: Прочитать в одномерный массив строк длинной по 74 символа *)
(*           первые 73 символа каждой строк файла DATF.TXT .           *)
(*           Используя функцию, заполнить выходной одномерный массив   *)
(*           (элементы - строки, длинной восемь символов) числами.     *)
(*           Процедуры/Функции                                         *)
(*   All_Str - функция, выбирает из строки первое число -              *)
(*           первую подстроку между пробелами, заменяя при выборе в    *)
(*           исходной строке выбранные символы пробелами.              *)
(*   prn_str- процедура печати выходного массива по пять чисел в строке*)
(*            Проверки на ошибки ввода/вывода не производится          *)
(*                                                                     *)
(*            Все числа считаются ЦЕЛЫМИ не ОТРИЦАТЕЛЬНЫМИ!!!          *)
(***************************[sxn.io]*******************************)
program number_str;

const
M=10; (* максимальный размер массива *)
MyFileName='datF.txt'; (* файл с тестовым массивом *)


Type
string74=string[74];
string8 =string[8];
Num74=0..74;
element=record
        st:string74;
        pos1,pos2:Num74;
        num:integer;
        Len:Num74;  
        end;

Var
N:1..M; (* Число строк которые нужно считать *)
s: array [1..M] of element;
s1: array [1..M] of string8;
f:text;

procedure init; (* инициализация программы *)
Var i:1..M;
begin
(* обнуление рабочего массива *)
For i:=1 to M DO begin
s[i].st:=''; s[i].pos1:=0; s[i].pos2:=0; s[i].num:=0;s[i].len:=0;s1[i]:='';
                end;
writeln;
write('N=');readln(N);  (* вводим число считываемых строк *)
Assign(f,MyFileName);
Reset(f);
For i:=1 to N do BEGIN
Readln(f,s[i].st);
s[i].len:=length(s[i].st); (*длина текущей строки *)
                END;
Close(f);
end; (* end init *)

function This_num(q:string74):boolean; (*True если цифра*)
begin
This_num:= (q >= '0') AND (q <= '9');

end;

procedure All_Str; (* основная процедура *)
var i:1..M;
   j,l:Num74;
   stop:boolean;
   Code: integer;
function Num_pos(j:Num74;var y:element):boolean;
(*True - если в позиции строки y.str c j число. Тогда в y.pos1 и y.pos2 заносим *)
(* начальную и конечную позицию этого числа *)
(* y.len - уже находится размер строки y.str *)
Var                                                
  Flag,quit:boolean;
  i:Num74;
 

begin
   Flag:=False;
   i:=j;
   IF j > 1 then
            begin IF y.st[j-1] = ' ' then  Flag:=True end Else Flag:=True;
                                 (*начало строки, там то же может быть число*)
   IF Flag then
begin
quit:=True;          
while (j < y.len) and quit DO  begin
Inc(j);
IF Not This_num(y.st[j]) then begin IF y.st[j] =' 'then begin Flag:=True;
quit:=False; y.pos1:=i; y.pos2:=j-1;
  end;    end;          
                        end;
IF quit and (j=y.len) then begin Flag:=True;y.pos1:=i;y.pos2:=j; end;
end;


   Num_pos:=Flag;

end; (*end Num_pos *)

begin (* start All_Str *)

for i:=1 TO N DO begin
   j:=0; stop:=False;
   while (j <= s[i].len) AND Not stop DO

begin  
INC(j);
IF This_num(s[i].st[j]) then stop:=Num_pos(j,s[i]);

end;
IF stop then begin  

s1[i]:=Copy(s[i].st,s[i].pos1,s[i].pos2-s[i].pos1+1);
Val(s1[i],s[i].num,Code);
IF Code <> 0 Then begin Writeln('Ошибка преобразования',i);halt(128) end;
For l:=s[i].pos1 to s[i].pos2 do s[i].st[l]:=' '; (*пробелы*)
            end;
               end;


end; (* end All_Str *)

procedure prn_str;
var
i:1..M;
begin

Writeln('Number printing');
   For i:=1 to N DO IF s1[i] <> '' then Write(s1[i]:16);
WriteLn;
Writeln('END');
(*На стандартной консоли (шириной 80 символов) будет 5 чисел в колонке*)
Writeln;
Writeln('String!!!!');
   For i:=1 to N do writeln(s[i].st);
end;


BEGIN (* main programm *)
Init;
All_Str;
prn_str;

END.  (* main programm *)
DELETED
5/4/2008, 2:06:47 AM
Ну додо, ну дружище! НУ ВЫРУЧИЛ! ОГРОМНОЕ СПАСИБО!

попробую сдаться отпишусь как прошло.

ведь не перевелись же еще добрые люди)))))))))))