Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - [решено] Помогите плииз с программой для Turbo Pascal

Ответить
Настройки темы
Разное - [решено] Помогите плииз с программой для Turbo Pascal

Новый участник


Сообщения: 40
Благодарности: 2

Профиль | Отправить PM | Цитировать


Помогите пожалуйста с программкой для вычисления бесконечной нормы вектора х размерностью n

Отправлено: 17:57, 19-09-2010

 

Аватара для lxa85

Необычный


Contributor


Сообщения: 4462
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


dasha131, обрамляй код тегом [code] [/code] - #
Цитата dasha131:
Код: Выделить весь код
program norma;
var
  n:integer;
  max:real;
  i:integer;
  a: Array [1..10] of real;
begin
  read (n); // я бы поставил readln это позволит безболезненно использовать Ентер как завершение ввода переменной
// Так же обрати внимание, что теоретически n может быть больше 10, и в заданный массив это не влезет. Верней влезет, //но будет произведена запись в неположенную ячейку памяти и повредить другую переменную. 
//Проще сказать - это плохо.  
Ты можешь оставить как есть, ограничив диапазон вводимой переменной n
  for i:=1 to n do
  begin
    read (a[i]);
  end;
// я бы тебе на самом деле предложил бы объединить эти два цикла. И в процессе ввода массива отслеживать число по максимальному модулю. 
// Ведь у тебя в обеих случаях используется цикл for i= 1 to x
 
  begin // эта операторная скобка лишняя
     for i:=1 to n do
     begin
// А вот тут у тебя может возникнуть ошибка, причем серьезная. 
//Переменная max у тебя на момент начала выполнения цикла может содержать все что угодно. 
//Тебе необходимо ее инициализировать, т.е. присвоить ей некое начальное значение. 
//Обрати внимание, что ты работаешь с модулем числа. Это подскажет тебе выбор правильного значения :)   
       if (ABS(a[i])>max) then max:=a[i];
     end;
   write(max:4:2);
   end; // хвост от лишней операторной скобки
end.
»
Хорошо. Осталось тебе переписать код на цикл while, для обеспечения работы с бесконечным вектором.
Отказаться от явного задания n. Прокомментировать код.

Операторная скобка позволяет несколько операторов интерпретировать как один. Это необходимо в ряде конструкций, где предусмотрено выполнение оного оператора, а необходимо выполнить несколько. Например конструкция условия, цикла while.

Цитата dasha131:
a: Array [1..10] of real;
незнала как обозначить в блоке описания переменных элемент "а", потом нашла в примерах такое её обозначение, звучит как "Переменная а - массив действительных чисел из 10 элементов" а что это означает? что бы поменялось если я поставила там другие значения? »
Обращаясь к переменной a ты обращаешься к массиву чисел. Т.к. ты указала тип real - это вещественные числа. Т.е. положительные, отрицательные, дробные. Т.е. все числа на числовой прямой, исключая мнимые (те, что с i)

Числа внутри скобок обозначают начальное и конечное значение индекса элемента (в последний момент я засомневался, но вроде так, другого тут быть не может)
Так же ты можешь задать двух, трех и так далее мерный массив. ЕМНИП они перечисляются через запятую [a1..a2, b1..b2, и т.д.]
Можно задать массив массивов, массив объектов и т.п.
Ну это чуть позже вы все пройдете и не в этом посте мне обо всем рассказывать

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:49, 23-09-2010 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 40
Благодарности: 2

Профиль | Отправить PM | Цитировать


Спасибо большое что помогаете!
Вот я исправила замечания, завтра еще почитаю про "вайл" и попробую переделать под него
program norma;
var
n:integer;
max:real;
i:integer;
a: Array [1..500] of real;
begin
readln (n);
for i:=1 to n do
begin
read (a[i]);
end;
for i:=1 to n do
begin
max:= ABS(a[1]);
if (ABS(a[i])>max) then max:=a[i];
end;
write(max:4:2);
end.

Отправлено: 17:36, 23-09-2010 | #12


Аватара для lxa85

Необычный


Contributor


Сообщения: 4462
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


dasha131, опять напутала, что ж такое то.
Код: Выделить весь код
program norma;
var
  n:integer;
  max:real;
  i:integer;
  a: Array [1..500] of real;
begin
  readln (n);
  max=0;
  for i:=1 to n do
  begin
    read (a[i]);
    if (ABS(a[i])>max) then max:=a[i];
  end;

  write(max:4:2);
end.
Теперь переписывай в while, для бесконечного числа вводимых величин.
Естественно цикл должен как-то заканчиваться. Либо вводом определенного числа, либо через ентер. Т.е. продумай этот момент.

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 17:44, 23-09-2010 | #13


Новый участник


Сообщения: 40
Благодарности: 2

Профиль | Отправить PM | Цитировать


Что то с while возникли проблемы( даже нето чтобы проблемы, немогу представить как им воспользоваться в данной задаче.

Отправлено: 10:42, 26-09-2010 | #14


Новый участник


Сообщения: 40
Благодарности: 2

Профиль | Отправить PM | Цитировать


Как можно выбрать максимальное значение из бесконечности???

Отправлено: 09:37, 28-09-2010 | #15


Аватара для lxa85

Необычный


Contributor


Сообщения: 4462
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


Вроде бы так. Проверь.
Код: Выделить весь код
var 
a:char; // для организации посимвольного ввода
b:integer; //
flag:boolean;
max:integer;

begin
//инициализация переменных;
b:=0; 
max:=0;
znak:=+1;
flag:=false;

repeat
//Вот тут у меня возникли сложности. Тебе надо будет найти, как организовать считывание символа из буффера клавиатуры. Примеры что мне попались в интернете, мне не понравились. Однако если сложные конструкции допустимы, то можно и позаимствовать. 
 read (a); // КОМАНДА НЕ ВЕРНА!!! Ее надо заменить! Здесь стоит для обозначения действия. 
  
  if ord(a) >= ord(0) and ord(a) >= ord(9) then begin //проверяем, что ввели цифру
    b:=b*10+znak*a; //"набираем" число
  end;

  if a="-" then znak:=-1; //если попался минус, то число должно быть отрицательным

  if a=" " then begin //символ разделителя чисел в ряде например  12 144 17 
    if (ABS(b)>max) then max:=b; //Сравниваем с макисмальным
    znak:=+1; //готовим переменные к новому циклу
    b:=0;
  end; //if

  if ord(a)=13 //Enter ЕМНИП //выставляем флаг для окончания цикла
    then flag:=true;
until flag;  

end.
Можно конечно и на while переписать поменяв условие.
Так же желательно переписать использую конструкцию case <name> of
это даст более гибкие возможности для сравнения переменной с чем-либо.
ord - возвращает порядковый номер перечисляемого типа.
В качестве конечного символа можно использовать например букву, или иной отличный от знака числа и знака разделителя(лей) символ.

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 11:41, 28-09-2010 | #16


Новый участник


Сообщения: 40
Благодарности: 2

Профиль | Отправить PM | Цитировать


Вобщем вот окончательный вариант программы по моей задачи, большое спасибо за помощь )
program norma;
var
n:integer;
max:real;
i:integer;
x:real;
begin
max:=0;
read (n);
for i:=1 to n do
begin
read (a);
if (ABS(a)>max) then max:=ABS(a);
end;

write(max:4:2);
end.

Отправлено: 13:25, 01-10-2010 | #17


Новый участник


Сообщения: 1
Благодарности: 0

Профиль | Отправить PM | Цитировать


Подскажите пожалуйста как решить задачу в Паскале.
Составить програму для нахождения значений компонентов вектора S={S1,..S6} где каждая расчитывается по формуле: Si=(Aj+Aj+1)/2, j=1,2..12, Aj может быть положительные и отрицательные значения

Отправлено: 14:06, 04-12-2010 | #18



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - [решено] Помогите плииз с программой для Turbo Pascal

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - Всё о TURBO PASCAL (обсуждение, помощь в написание программ, ошибки, Pascal ABC) Loading Программирование и базы данных 41 20-05-2015 15:28
Прочие - Turbo Pascal 7 Sniper Программное обеспечение Windows 30 01-12-2008 16:04
Turbo Pascal, Помогите написать пару программ kirillsp Программирование и базы данных 11 20-11-2006 23:34
программка в среде turbo pascal gh6 Программирование и базы данных 3 14-11-2006 12:16
Borland Turbo Pascal 7.0 Guest Программирование и базы данных 4 21-09-2004 18:44




 
Переход