Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Fiona Гость
|
Добавлено: Сб Ноя 16 2002 12:19 Заголовок сообщения: помогите написать программу |
|
|
Люди, кто-нибудь! помогите мне написаь программу по информатике, я уже не знаю что делать, программа то простенькая, но я ни фига не фурычу, всё тоскаюсь уже полгода с этой задолжностью:
На языке ПАСКАЛЬ!!!!!
Дан массив А размерности 100х200. Нужно вычислить в пятой строке сумму: S=a(здесь индексы - 51) - ((a(52))*2)/(2x3) + ((a(53))*2)/(4x4) - ((a(54))*2)/(8x5) + ((a(55)*2)/(16x6) - ...
Пожалуйста, УМОЛЯЮ !!!!! |
|
Вернуться к началу |
|
|
Паладин Гость
|
Добавлено: Вс Ноя 17 2002 09:44 Заголовок сообщения: Re: помогите написать программу |
|
|
Суть задачи чё-то не понятна. Поясни конкретней, где здесь индексы (массив двухмерный), где числа и что делать с суммой. Напиши индексы в квадратных скобках. |
|
Вернуться к началу |
|
|
Паладин Гость
|
Добавлено: Вс Ноя 17 2002 10:19 Заголовок сообщения: Re: помогите написать программу |
|
|
Всё, разобрался, переписывай, но я её не прогонял А вот интересно, кто будет вводить такой массив?
uses crt; var a: array[1..100, 1..200] of integer; n, x, i: integer; s: real; begin clrscr; for x:=1 to 100 do for i:=1 to 200 do raed(a[x,i]); s:=A[5,1]; n:=2; for x:=2 to 100 do begin if x mod 2=0 then s:=s-(a[5,x]*2)/((n)(x+1)) else s:=s+(a[5,x]*2/((n)(x+1)); n:=n*2; end; write(s:5:5); repeat until keypressed; end. |
|
Вернуться к началу |
|
|
batja Гость
|
Добавлено: Пн Ноя 18 2002 15:24 Заголовок сообщения: Re: помогите написать программу |
|
|
Здесь то почти всё правильно, есть только одна зацепка ведь массив можно сгенерить случайным образом, так как вводить его руками захочет разве что полный идиот. Тогда прога примет приблизительно такой вид: uses crt; var a: array[1..100, 1..200] of integer; n, x, i, Mnu: integer; s: real; begin Repeat clrscr; Writeln('1. Ввести массив вручную'); Writeln('2. Сгенерировать массив случайным образом'); Writeln('3. Выход'); Write('Ваш выбор -->'); Readln(Mnu); Case Mnu of 1: Begin for x:=1 to 100 do for i:=1 to 200 do Begin Write('Введите елемент массива [',x,',',i,'] = '); readln(a[x,i]); end; End; 2: Begin Randomize; for x:=1 to 100 do for i:=1 to 200 do a[x,i] := Random(1000); End; 3: Exit; end; s := a[5,1]; n := 2; for x := 2 to 100 do begin if x mod 2 = then s := s - (a[5,x]*2)/((n)*(x+1)) else s := s + (a[5,x]*2/((n)*(x+1))); n := n*2; End; writeln('Результат s = ',s:5:5); writeln('Для продолжени нажмите любую клавишу, для выхода нажмите Esc '); Until Readkey=#27; end.
Прогу я проверил но так как не очень то понял суть задачи, то ничего не трогал в формулах s := s - (a[5,x]*2)/((n)*(x+1)) и s := s + (a[5,x]*2/((n)*(x+1))) а там всплывает деление на 0. Так, что формулы надо пересмотреть и исправить, а за остальое я ручаюсь. |
|
Вернуться к началу |
|
|
Паладин Гость
|
Добавлено: Пн Ноя 18 2002 16:44 Заголовок сообщения: Re: помогите написать программу |
|
|
Ну вообще если вводить случайным образом, то тогда как проверишь, что прога выдаёт правильный результат. Там сказано, что массив дан - значит если информатики захотят проверить, то пусть сами вводят)).
А деления на ноль там быть не может: изначально x=2 и растёт, n=2 и растёт в двойном эквиваленте, при их перемножении ноля тоже получиться тоже не может. К сожалению паскаля у меня сейчас нет, проверить я не могу. Может ты разберёшься в задаче и найдёшь ошибку, мне аж самому интересно стало. s:=s-(a[5,x]*2)/(n*(x+1)) s:=s+(a[5,x]*2)/(n*(x+1)) |
|
Вернуться к началу |
|
|
Chea Гость
|
Добавлено: Пн Ноя 18 2002 20:09 Заголовок сообщения: Уточнения |
|
|
Кажется проблема в том что мы 100 раз n удваиваем и к окончанию работы цикла имеем что то вроде 1.26 E+30 после этого умножая на 100 получаем E+32 а переменная n всего лишь типа int (65535) |
|
Вернуться к началу |
|
|
|