Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Pascal

Выпуск № 227
от 17.10.2006, 23:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 210, Экспертов: 58
В номере:Вопросов: 4, Ответов: 7


Вопрос № 58585: Здравствуйте, что здесь неправельно? uses wincrt; Const N=5; M=5; Var A: Array [1..N,1..M] of Integer; X,I,J:Integer; BEGIN Writeln('Ââåäèòå ÷èëî, êî&#...
Вопрос № 58626: Добрый день! Уважаемые эксперты, не подскажете, как на Паскале реализовать алгоритм рисования изолиний (линий уровня) и траектории спуска в точку экстремума для квадратичной функции двух переменных? Вернее, траекторию спуска я себе представляю, к...
Вопрос № 58684: Здравтсвуйте, пожалуйста скажите плз что тут не так? Зарание благодорю! Описание простой дроби: type paprasta = record skaitiklis, vardiklis: 1..100 end; Описание периодической дроби: type periodinė = rec...
Вопрос № 58718: Здравствуйте. Как решить такую задачу: Дано массив чисел А[1..N,1..M]. числа размещены по возрастанию у рядках та столбцах: A[I;1]<A[I;2]<..<A[I;M] A[1;J]<A[2;J]<..<A[N;J]. Найти элемент массиву, равный заданному числу Х и н...

Вопрос № 58.585
Здравствуйте, что здесь неправельно?

uses wincrt;
Const
N=5; M=5;
Var A: Array [1..N,1..M] of Integer;
X,I,J:Integer;
BEGIN
Writeln('Ââåäèòå ÷èëî, êîòîðîå íàäî íàéòè');
Readln(X);
For I:=1 To N Do
For J:=1 To M Do
If (M+N) > A[I,J] Then Begin
Writeln ('ERROR')
Else

If A[I,J] = X Then Writeln ('Îòâåò', A[I,J])
Else Writeln('HI');
End;
End.

Приложение:

Отправлен: 11.10.2006, 22:44
Вопрос задал: ataman (статус: 2-ой класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Andronik
Здравствуйте, ataman!
uses wincrt;
Const
N=5; M=5;
Var A: Array [1..N,1..M] of Integer;
X,I,J:Integer;
BEGIN
Writeln('Ââåäèòå ÷èëî, êîòîðîå íàäî íàéòè');
Readln(X);
For I:=1 To N Do
For J:=1 To M Do
If (M+N) > A[I,J] Then Begin {есть начальный Begin}
Writeln ('ERROR') {но вот тут нет End, поэтому будет выдаваться ошибка на следующей строке}
Else

If A[I,J] = X Then Writeln ('Îòâåò', A[I,J])
Else Writeln('HI');
End; {аналогично, есть конечный End, но нет начального Begin}
End.

{PS - вообще на вижу смысла в установлении здесь операторных скобок. Просветите, зачем вы вообще их поставили?}
---------
Запрограммировать можно все... кроме собственного поведения
Ответ отправил: Andronik (статус: 1-ый класс)
Ответ отправлен: 11.10.2006, 23:04
Оценка за ответ: 5

Отвечает: Verena
Здравствуйте, ataman!
Операторные скобки действительно расставлены неверно. Но я не понимаю, как вы можете сравнивать элемент матрицы А, в который ещё ничего не присваивали, с какими-либо значениями. Ведь сами они в этом случае будут иметь произвольное значение!
---------
Эта история - не для истории, понимаешь?
Ответ отправила: Verena (статус: 1-ый класс)
Ответ отправлен: 11.10.2006, 23:34

Отвечает: Strory
Здравствуйте, ataman!

Тут много чего неправильно. Тут даже синтаксические ошибки.

If (M+N) > A[I,J] Then Begin Writeln ('ERROR') Else ...

Здесь begin открывается, end'ом не закрывается, а сразу идёт else. Нужно:

If (M+N) > A[I,J] Then Begin Writeln ('ERROR') end Else ...

А по большому счёту здесь вообще не нужна конструкция begin...end, ибо в ней содержится всего лишь одна процедура.

Дальше. Что Вы пытаетесь сделать этой конструкцией:

If (M+N) > A[I,J] Then

Это, вообще, что? (M+N) - полупериметр массива. A[i,j] - элемент массива. Если элемент массива больше полупериметра, то что? Что Вы таким образом проверяете?

Дальше. Массив неинициализирован, т.е. имеет неопределённые значения. Что в нём можно искать?

Задачу не сформулировали, тогда сформулирую я и сам попытаюсь её решить :)

Значит, имеем массив случайных целых чисел MxN. Нужно проверить, содержит ли массив X и если содержит, вывести координаты всех элементов содержащих X.

Решение в прилождении

Удачи!
  Strory.

Приложение:

Ответ отправил: Strory (статус: Практикант)
Ответ отправлен: 12.10.2006, 00:23


Вопрос № 58.626
Добрый день!
Уважаемые эксперты, не подскажете, как на Паскале реализовать алгоритм рисования изолиний (линий уровня) и траектории спуска в точку экстремума для квадратичной функции двух переменных? Вернее, траекторию спуска я себе представляю, как нарисовать, а вот с линиями уровня проблема.

Заранее спасибо.
Отправлен: 12.10.2006, 08:30
Вопрос задал: Вахрамеева Оксана (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Verena
Здравствуйте!
Можно сделать так: взять какой-нибудь интервал, находить в нём точки, принадлежащие линиям уровня с маленькой разницей в координатах и рисовать в этих точках окружности маленького радиуса - в масштабе они сольются в линию.

---------
Эта история - не для истории, понимаешь?
Ответ отправила: Verena (статус: 1-ый класс)
Ответ отправлен: 12.10.2006, 16:09


Вопрос № 58.684
Здравтсвуйте, пожалуйста скажите плз что тут не так? Зарание благодорю!

Описание простой дроби:
type paprasta = record
skaitiklis,
vardiklis: 1..100
end;

Описание периодической дроби:
type periodinė = record
sv: 1..100; {целая часть}
nep, {непериодическая часть}
per: integer; {период дроби}
end;

Приложение:

Отправлен: 12.10.2006, 16:28
Вопрос задал: Dr1m (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: sir henry
Здравствуйте, Dr1m!
Вы забыли поставить точку с запятой. :)
Желательно тип-диапазон объявить отдельно, так будет меньше ошибок при выполнении программы. Представьте, что в первой дроби Вы поставили 1..100, а во второй ошиблись и поставили 1..10, хотя должно быть одинаково. И вот задав присвоение этого поля от 1 до 100 в цикле, получите ошибку.
Правильно будет так:
{Описание простой дроби:}
type
int100 = 1..100; {Здесь задан тип-диапазон. Переменные этого типа могут содержать только целые числа от 1 до 100}
paprasta = record
skaitiklis,
vardiklis: int100;
end;

{Описание периодической дроби:}
type
periodinė = record
sv: int100; {целая часть}
nep, {непериодическая часть}
per: integer; {период дроби}
end;
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 13.10.2006, 09:40


Вопрос № 58.718
Здравствуйте. Как решить такую задачу:
Дано массив чисел А[1..N,1..M]. числа размещены по возрастанию у рядках та столбцах: A[I;1]<A[I;2]<..<A[I;M]
A[1;J]<A[2;J]<..<A[N;J]. Найти элемент массиву, равный заданному числу Х и напечатать его индекс [I;J]. Напечатать слова «HI», если такого элемента не найдется. Х – можно сравнивать не больше чем M+N элементами массива.
Отправлен: 12.10.2006, 22:52
Вопрос задал: ataman (статус: 2-ой класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Strory
Здравствуйте, ataman!

Алгоритм: в таком массиве всегда можно найти число X (если оно там имеется) максимум за M+N шагов. Начинаем с элемента 1-1. Проверяем равен ли он X. Если нет выбираем куда дальше идти - вправо или вниз. Если справа элемент меньше или равен X, то идём вправо, иначе идум вниз.

Программа в приложении.

Удачи!
  Strory.

Приложение:

Ответ отправил: Strory (статус: Практикант)
Ответ отправлен: 12.10.2006, 23:43

Отвечает: Monah
Здравствуйте, ataman!
var N:integer;
n:=2;
Возми значение a[1, M div N] сравниваешь его. Если искомое больше, ищешь в
N:=N*2;
Если меньше то N:=N div 2;
И ту же операцию по столбам. Если 1>N>M то число отсутствует
Ответ отправил: Monah (статус: 4-ый класс)
Ответ отправлен: 13.10.2006, 13:35


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.37 от 04.10.2006
Яндекс Rambler's Top100

В избранное