Как за 2 месяца стать АССОМ в Pacla'e???
| |
vicu2010 | Дата: Вторник, 28 Февраля 2012, 20:49 | Сообщение # 1 |
Сейчас нет на сайте
| Короче я не особый мастер в pascal'e. Изучаю его около недели, но уже выиграл областную олимпиаду... Но вот взглянул на Республиканскую(по стране) и ужаснулся... Вот сколько надо учится чтобы сделать такую программу?
Program Multimicroprocesor; var r12, r13, r23, d12, d13, d23, a, b, c, Lmin : longint; procedure Reading; var Intrare : text; begin assign(Intrare, 'MULTI.IN'); reset(Intrare); readln(Intrare, r12, r13, r23); readln(Intrare, d12, d13, d23); close(Intrare); end; procedure Writing; var Iesire : text; begin assign(Iesire, 'MULTI.OUT'); rewrite(Iesire); writeln(Iesire, a, ' ', b, ' ', c); writeln(Iesire, Lmin); close(Iesire); end; procedure Searching; var L : longint; begin Lmin:=1000000000; L:=r12*d12+r13*d13+r23*d23; if L<=Lmin then begin a:=1; b:=2; c:=3; Lmin:=L; end; L:=r12*d13+r13*d12+r23*d23; if L<=Lmin then begin a:=1; b:=3; c:=2; Lmin:=L; end; L:=r12*d12+r13*d23+r23*d13; 8 if L<=Lmin then begin a:=2; b:=1; c:=3; Lmin:=L; end; L:=r12*d23+r13*d12+r23*d13; if L<=Lmin then begin a:=2; b:=3; c:=1; Lmin:=L; end; L:=r12*d13+r13*d23+r23*d12; if L<=Lmin then begin a:=3; b:=1; c:=2; Lmin:=L; end; L:=r12*d23+r13*d13+r23*d12; if L<=Lmin then begin a:=3; b:=2; c:=1; Lmin:=L; end; end; begin Reading; Writing; Searching; end.
Мои знания не заходят дальше простых циклов типа repeat until и работы с if then.
Программист Ruby on Rails / COBOL | Веб-дизайнер(Bootstrap, HTML5, JS) | Викверс на Construct 2 / Classic
|
|
| |
LunarPixel | Дата: Вторник, 28 Февраля 2012, 20:53 | Сообщение # 2 |
старожил
Сейчас нет на сайте
| Quote (vicu2010) Вот сколько надо учится чтобы сделать такую программу? Да в приведенной тобой программе нет абсолютна ничего особенного... ещё недельку поучить и вполне можно такое написать.
|
|
| |
Морриарте | Дата: Вторник, 28 Февраля 2012, 21:10 | Сообщение # 3 |
LINUX ФАНАТ
Сейчас нет на сайте
| Главное это развитая логика чтобы придумать структуру, а написать то можно.
|
|
| | | |
LunarPixel | Дата: Вторник, 28 Февраля 2012, 21:19 | Сообщение # 6 |
старожил
Сейчас нет на сайте
| vicu2010, в интернете. На самом деле на данном уровне подойдет практически любая литература. Можно просто вбить в гугл "Массивы паскаль" и первые три ссылки изучить. Так же изучи процедуры и функции. Работу со строками и внешними файлами.
|
|
| | |
anton-gar | Дата: Вторник, 28 Февраля 2012, 21:27 | Сообщение # 8 |
WEBmaster
Сейчас нет на сайте
| Сейчас поищу у себя в полках - где-то чудная книжечка была. Добавлено (28.02.2012, 21:26) --------------------------------------------- Вот эта неплохая. - сам по ней готовился. Добавлено (28.02.2012, 21:27) --------------------------------------------- Тык
|
|
| |
vicu2010 | Дата: Вторник, 06 Марта 2012, 16:43 | Сообщение # 9 |
Сейчас нет на сайте
| Спасиб) Добавлено (06.03.2012, 16:43) --------------------------------------------- Я нашёл два учебника по паскалю, однако не в них, не в гугле я не нашёл как работать с файлами. Вот например у меня есть файл input.txt с вводными данными и output.txt с выходными. Как сделать чтобы паскаль считывал слово с входного, потом выводил её в выходную? И где по всему этому инфу найти(чтобы потом уже выводить решение формулы)??
Программист Ruby on Rails / COBOL | Веб-дизайнер(Bootstrap, HTML5, JS) | Викверс на Construct 2 / Classic
|
|
| | | |
Lord_F | Дата: Вторник, 06 Марта 2012, 17:00 | Сообщение # 12 |
Любопытный Игродел
Сейчас нет на сайте
| Юзай FPC (Free Pascal) По-моему на всех олимпиадах при тестировании используется именно он.
[quote]Ничто не истина, всё дозволено[/quote]
|
|
| |
vicu2010 | Дата: Вторник, 06 Марта 2012, 18:58 | Сообщение # 13 |
Сейчас нет на сайте
| Quote (Lord_F) Юзай FPC (Free Pascal) По-моему на всех олимпиадах при тестировании используется именно он. Он не так удобен как турбо. В турбо если допустил ошибку то курсор смешяется в место ошибки, в турбо цвета приятнее...Добавлено (06.03.2012, 18:58) --------------------------------------------- Прикольно) Я уже научился писать в txt файл Всё работает, но появляется такая ошибка: Ошибка выполнения 103 по адресу 0000:0038. В следующей программе: Code Program TF1; var filin: text; begin assign(filin, 'output.txt'); rewrite(filin); write(filin,'Ahahah'); close(filin); end. В файл всё нормально записывается.
Программист Ruby on Rails / COBOL | Веб-дизайнер(Bootstrap, HTML5, JS) | Викверс на Construct 2 / Classic
|
|
| |
TimKruz | Дата: Вторник, 06 Марта 2012, 19:15 | Сообщение # 14 |
старожил
Сейчас нет на сайте
| Quote (vicu2010) Я нашёл два учебника по паскалю, однако не в них, не в гугле я не нашёл как работать с файлами. Вот например у меня есть файл input.txt с вводными данными и output.txt с выходными. Как сделать чтобы паскаль считывал слово с входного, потом выводил её в выходную? И где по всему этому инфу найти(чтобы потом уже выводить решение формулы)?? Разве так сложно написать "pascal файлы" или "pascal работа с файлами"? Там ведь почти все ссылки - статьи на эту тему. Вот хорошая книга, (давно как-то купил за полцены) в ней всё подробно описано на уровне, в принципе достаточном для участия в олимпиадах, и даже чуть больше. Правда, там не описано использование объектов и ассемблерных вставок в TP... Рекомендую читать встроенную справку TurboPascal. Там много полезного можно почерпнуть, если хоть немного разбираться в техническом английском. Можешь поставить курсор на слово в редакторе кода, нажать ctrl+f1 и получить справку об этом элементе - удобно, когда забываешь, как что-то правильно использовать. Quote (Lord_F) Юзай FPC (Free Pascal)По-моему на всех олимпиадах при тестировании используется именно он. Обычно на олимпиадах предоставляют вообще все популярные среды. На некоторых предлагают FPC, на некоторых - TP, но разницы нет, потому что на олимпиадах особенности языков практически не проявляются. Quote (vicu2010) Но вот взглянул на Республиканскую(по стране) и ужаснулся... А чего ужасаться? Отформатировать код, чтобы было приятно читать, и всё понятно станет. Там используются только понятия работы процедур-функций, файлов и конструкций если. А уж накрутить код несложно, если представлять в уме, как он должен выглядеть, видеть примерный план программы. Quote (vicu2010) Вот сколько надо учится чтобы сделать такую программу? Кому-то часа два максимум, кому-то - месяц минимум. Зависит от обучаемости пациента. Если иметь хорошую книгу или хорошего учителя и, главное, желание - можно всё быстро изучить и понять...
Quote (vicu2010) в турбо цвета приятнее... Веский аргумент... У TurboPascal в настройках вся раскраска настраивается...
*** Quote (vicu2010) Ошибка выполнения 103 по адресу 0000:0038. В следующей программе: Код правильный, у меня без ошибки выполняется. Ошибка 103 - файл не открыт. Может быть, у тебя этот файл заблокирован другой программой?
Сообщение отредактировал TimKruz - Вторник, 06 Марта 2012, 19:20 |
|
| |
vicu2010 | Дата: Вторник, 06 Марта 2012, 19:24 | Сообщение # 15 |
Сейчас нет на сайте
| TimKruz, ожидал ответа от тебя ещё когда тему создавал))))
Quote (TimKruz) А чего ужасаться? Отформатировать код, чтобы было приятно читать, и всё понятно станет. Там используются только понятия работы процедур-функций, файлов и конструкций если. А уж накрутить код несложно, если представлять в уме, как он должен выглядеть, видеть примерный план программы. Я привёл самую простую прогу с олимаиды)) А с тех пор когда писал тему она стала мне намного понятней))
Поможешь с ошибками 103 и 104 при использовании вывода? И кстате, известно что char при вводе берёт только первую букву, а как сделать чтобы копировать в ОДНУ переменную всё слово?Добавлено (06.03.2012, 19:24) ---------------------------------------------
Quote (TimKruz) Код правильный, у меня без ошибки выполняется. Ошибка 103 - файл не открыт. Может быть, у тебя этот файл заблокирован другой программой? Нет, вроде ничем не заблокиравано, тем более что ошибка выскакивает, но программа полюбому выполняется.
Программист Ruby on Rails / COBOL | Веб-дизайнер(Bootstrap, HTML5, JS) | Викверс на Construct 2 / Classic
Сообщение отредактировал vicu2010 - Вторник, 06 Марта 2012, 19:23 |
|
| |
anton-gar | Дата: Вторник, 06 Марта 2012, 19:35 | Сообщение # 16 |
WEBmaster
Сейчас нет на сайте
| Quote (vicu2010) И кстате, известно что char при вводе берёт только первую букву, а как сделать чтобы копировать в ОДНУ переменную всё слово?
string.
|
|
| |
TimKruz | Дата: Вторник, 06 Марта 2012, 19:40 | Сообщение # 17 |
старожил
Сейчас нет на сайте
| Можешь попробовать так: Code Program TF1; var filin:text; error:byte; begin assign(filin, 'output.txt'); {$i-} {отключает слежение системы за ошибками ввода-вывода} rewrite(filin); error:=ioresult; //ioresult возвращает код последней ошибки и сбрасывается if error<>0 then begin writeln('Ошибка открытия файла! Код ошибки: ',error); halt(error); end; write(filin,'Ahahah'); close(filin); end. Ошибки это не исправит, но будет завершать программу, если возникает ошибка. Quote (vicu2010) И кстате, известно что char при вводе берёт только первую букву, а как сделать чтобы копировать в ОДНУ переменную всё слово? Для текстовых файлов числовые переменные считывают число между пробелами (если корректно записано), символьная переменная считывает один символ, строковая переменная считывает одну строку либо столько символов, сколько может в себя вместить (если ограничена, не более 255 символов). Стандартных функций чтения "слов" нет. Можешь сделать свою процедуру, типа такой: Code procedure readword(var f:text; var str:string); var ch:char; begin str:=''; read(f,ch); while (ch<>#32) and not eof(f) do begin str:=str+ch; read(f,ch); end; end; И работаешь с ней также, как с read, то есть передаёшь указатель на файл и строку, в которую нужно записать "слово" (буквы между пробелами).
|
|
| | |
|