Список форумов Шадринский форум -> Программирование -> Delphi, Pascal, C, C# -> TPascal.....задачки
Начать новую тему   Ответить на тему   вывод темы на печать

TPascal.....задачки

Автор
Сообщение
Андрю}{А
Писатель


Пол: Пол:Муж.
Зарегистрирован: 16.01.2008
Сообщения: 333


Статус: Offline
СообщениеДобавлено: 2008.04.22 20:07.44
Ответить с цитатой
Помогите, очень надо.... решить задачку на паскале???

"В одномерном массиве, состоящем из n вещественных элементов, вычислить:
сумму положительных элементов, и произведение элементов массива, расположенных между max по модулю и min по модулю элементами" плиззззз....
Посмотреть профиль Отправить личное сообщение
Serёга
Писатель


Пол: Пол:Муж.
Зарегистрирован: 09.11.2006
Сообщения: 748


Статус: Offline
СообщениеДобавлено: 2008.04.22 21:17.13
Ответить с цитатой
http://forum.pascal.net.ru
Посмотреть профиль Отправить личное сообщение
Андрю}{А
Писатель


Пол: Пол:Муж.
Зарегистрирован: 16.01.2008
Сообщения: 333


Статус: Offline
СообщениеДобавлено: 2008.04.23 11:32.30
Ответить с цитатой
проверьте, плизззз, так не так...

uses crt;
var
a:array[1..100] of integer;
n, max, min, i, Pmx, Pmn,P1,P2:Integer;
sum,proz:Longint;
begin
Clrscr;
Write('Введите размерность массива: ');
Readln(n);
Randomize;
For i:=1 to n do
begin
a[i]:=random(20)-10;
Write(a[i]:4);
end;
writeln;

max:=abs(a[1]);
min:=abs(a[1]);
For i:=1 to n do //Находим минимум и максимум, и их позиции в массиве
begin

if max<abs(a[i]) then
begin
max:=abs(a[i]);
Pmx:=i;
end;
if min>abs(a[i]) then
begin
min:=abs(a[i]);
Pmn:=i;
end;
End;

sum:=0;
Proz:=1;
if pmx>pmn then //чтобы цикл for правильно работал(от меньшего к большему)
begin
p1:=pmn;
p2:=pmx;
end
Else
Begin
p2:=pmn;
p1:=pmx;
end;

For i:=P1 to P2 do //Находим сумму положительных и произведение
begin
if a[i]>0 then sum:=sum+a[i];
Proz:=Proz*a[i];
End;

Writeln('Минимальный элемент по модулю: ',a[pmn],' позиция: ',Pmn);
Writeln('Максимальный элемент по модулю: ',a[pmx],' позиция: ',Pmx);
Writeln('Сумма: ',sum);
Writeln('Произведение: ',Proz);
readkey;
end.
_________________
не мы такие - жизнь такая
Посмотреть профиль Отправить личное сообщение
neil
Писатель


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 674
Откуда: Shadrinsk

Статус: Offline
СообщениеДобавлено: 2008.04.23 11:39.42
Ответить с цитатой
Андрю}{А
кажется ты неверно понял условие задачи что
Андрю}{А писал(а):
расположенных между max по модулю и min по модулю элементами

надо искать сумму и произвдение числе которые abs(min)<n<abs(max)

а так на первый взгляд код верный
Посмотреть профиль Отправить личное сообщение ICQ Number
[DD]
Освоившийся


Пол: Пол:Муж.
Зарегистрирован: 21.09.2007
Сообщения: 99
Откуда: From Hell

Статус: Offline
СообщениеДобавлено: 2008.04.23 14:30.59
Ответить с цитатой
Андрю}{А писал(а):
"В одномерном массиве, состоящем из n вещественных элементов, вычислить:

Андрю}{А писал(а):
a:array[1..100] of integer;

чет мне кажется или integer малость не вещественный тип???

Добавлено спустя 3 минуты 27 секунд:

neil
эт ты малость условия не понял по моему...
на запятые посмотри повнимательнее
сумму всех положительных
а произведение только между abs(min) и abs(max)

Добавлено спустя 12 минут 20 секунд:

попробуем следующее:


uses crt
const max=500;
var a:array[1..10] of real;
var iMax,iMin,i:integer;
mult,summ,tMax,tMin:real;
begin
clrscr;
mult:=1;
summ:=0;
tMax:=0;
tMin:=max;
randomize;
for i:=1 to 10 do begin
 a[i]=random(max)-250;
 if(abs(a[i])>tMax)then begin 
  tMax:=abs(a[i]);
  iMax:=i;
 end;
 if(abs(a[i])<tMin)then begin
  tMin:=abs(a[i]);
  iMin:=i;
 end;
summ:=summ+a[i];
end;

if(iMax>iMin)then for i:=iMin to iMax do mult:=mult*a[i];
if(iMax<iMin)then for i:=iMax to iMin do mult:=mult*a[i];

writeln('сумма элементов массива = ',summ);
writeln('произведение элементов массива находящихся между макс по модулю и мин по модулю = ',mult);
end.

_________________
Мы рождены чтоб сказку сделать кодом...
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
neil
Писатель


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 674
Откуда: Shadrinsk

Статус: Offline
СообщениеДобавлено: 2008.04.23 16:19.25
Ответить с цитатой
[DD]
ой какие глупые ошибки в коде. в паре случаев из 10000 может и выдаст верный ответ


Последний раз редактировалось: neil (2008.04.23 16:26.08), всего редактировалось 1 раз
Посмотреть профиль Отправить личное сообщение ICQ Number
andy ice
Militärmagazinkatze


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 23385


Статус: Offline
СообщениеДобавлено: 2008.04.23 16:20.37
Ответить с цитатой
вы, прежде чем писать код, алгоритм на русском языке напишите. а потом оно само на выбраный язык всё ляжет Wink
_________________
Ин дер гросен фамилие нихт клювен клац-клац Neutral
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
[DD]
Освоившийся


Пол: Пол:Муж.
Зарегистрирован: 21.09.2007
Сообщения: 99
Откуда: From Hell

Статус: Offline
СообщениеДобавлено: 2008.04.24 10:48.59
Ответить с цитатой
neil
согласен... одно условие я не написал... при просчете суммы необходимо написать
if(a[i]>0)then summ:=summ+a[i];

больше ошибок я не нашел(ну может гденить ещё написал "=" вместо " := " )
andy ice
алгоритм прост...
забиваем начальные значения для переменных tMax(максимальный по модулю элемент префикс t показывает что он нам нужен временно) =0(надеюсь понятно почему), tMin(аналогично tMax)=max(так как больше чем константа max быть не может), summ=0(тоже на мой взгляд понятно), mult=1(аналогично);
затем забиваем массив случайными числами одновременно с этим ищем индексы мин и макс по модулю элементов, а так же сумму положительных(эт как раз где я условие забыл написать);
затем идет проверка что раньше макс или мин элемент и в зависимости от этого запускаем цикл прощета произведения от +1 до -1 от соответствующих индексов(так как по условию сказано что нам нужны элементы только м/у ними) и все... выводим найденные значения

P.S. neil ошибки возможно и действительно глупые... но я этот код просто в браузер написал без тестов а потом с добавленным условием дома проверил... конечно 10000 раз я этого не делал но вот раз 20 точно... результат всегда верный...
_________________
Мы рождены чтоб сказку сделать кодом...
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
andy ice
Militärmagazinkatze


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 23385


Статус: Offline
СообщениеДобавлено: 2008.04.24 10:53.31
Ответить с цитатой
[DD]
алгортим пишется построчно, а не кашей как ты написал. пока мыслишь кашей - так и будешь кашей писать (и забывать IF)

Добавлено спустя 1 минуту 2 секунды:

а лучше блок-схемой Smile

и заполнение массива - выносится как отдельная задача (лучше вообще через функцию), ибо в задачках данные обычно через файл дают.
_________________
Ин дер гросен фамилие нихт клювен клац-клац Neutral
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
[DD]
Освоившийся


Пол: Пол:Муж.
Зарегистрирован: 21.09.2007
Сообщения: 99
Откуда: From Hell

Статус: Offline
СообщениеДобавлено: 2008.04.24 11:04.41
Ответить с цитатой
andy ice
как алгоритм писать я в курсе... тока в падлу
про if я полностью согласен ошибка полного ламера...
забивать код отдельными проходами по массиву тож чет не охота... к томуж ни кто не мешает считывать из файла в этом же цикле(если зарание известно что элементов именно 10) если не нравится то пожалуйста
while(not(eof(input))) do begin
{
 все тоже самое тока не рандом а read(a[i]);
}
inc(i);
end; 

_________________
Мы рождены чтоб сказку сделать кодом...
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
andy ice
Militärmagazinkatze


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 23385


Статус: Offline
СообщениеДобавлено: 2008.04.24 11:19.08
Ответить с цитатой
вот он вред олимпиадных задач - делать всё и сразу, чтоп быстрее работало. потом приходится переучивать
_________________
Ин дер гросен фамилие нихт клювен клац-клац Neutral
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
[DD]
Освоившийся


Пол: Пол:Муж.
Зарегистрирован: 21.09.2007
Сообщения: 99
Откуда: From Hell

Статус: Offline
СообщениеДобавлено: 2008.04.24 11:33.13
Ответить с цитатой
согласен что навыки олимпиадников не сильно-то помогут для работы в команде(это сугубо мое мнение)...
но если им использоват хотябы часть правил хорошего тона в программировании то думаю получится очень даже не плохо
_________________
Мы рождены чтоб сказку сделать кодом...
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
vanish
Заслуженный писатель



Зарегистрирован: 23.05.2007
Сообщения: 849


Статус: Offline
СообщениеДобавлено: 2008.04.24 15:22.47
Ответить с цитатой
[DD] писал(а):
больше ошибок я не нашел


ищи..
_________________
Посмотреть профиль Отправить личное сообщение
Страница 1 из 1
Начать новую тему   Ответить на тему   вывод темы на печать
Показать сообщения:   
Список форумов Шадринский форум -> Программирование -> Delphi, Pascal, C, C# -> TPascal.....задачки

 
Перейти: 
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы можете скачивать файлы