Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.11.2011, 02:00   #1
ovaaal
Пользователь
 
Регистрация: 07.11.2011
Сообщений: 13
Злость Задачи на обработку массивов и матриц (Паскаль)

всеми любимый паскаль. п0мощь в решении задач

1.Разработайте программу для вычисления произведения всех элементов одномерного вещественного массива размерностю 10, введенного с клавиатуры пользователем.

2.Разработайте программу для вычисления произведения положительных чисел. Десять вещественных чисел вводятся с клавиатуры пользователем.

3.Разработайте программу для вычисления суммы диагональных элементов матрицы 4х4. Вещественные числа вводятся с клавиатуры пользователем.

4. Разработайте программу для вычисления суммы всех элементов матрицы 3х3. Вещественные числа вводятся с клавиатуры пользователем.

5. Разработайте программу для вычисления суммы всех положительных элементов массива 5х5. Вещественные числа вводятся с клавиатуры пользователем.



помогите чем можете
нужно срочно



_________
Название темы должно адекватно отражать суть решаемой задачи/проблемы.
На первый раз я исправил.
В дальнейшем темы с подобным названием будут закрываться/удаляться.

Модератор.

Последний раз редактировалось Serge_Bliznykov; 07.11.2011 в 09:27.
ovaaal вне форума Ответить с цитированием
Старый 07.11.2011, 09:30   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

чем же помочь то? Написать решения за Вас?
Задачи ОЧЕНЬ простые. "Азбука" программирования, так сказать...

Ну неужели у Вас нет даже ПОПЫТОК решить данные задачи?!
Если есть - выкладывайте свои наработки/проблемы, что получается, что не получается...


p.s. я уже молчу о том, что все эти задачи на форуме неоднократно решались... Но, действительно, искать чужие решения в данном случае может потребовать больше времени и сил, чем сесть и написать решения самостоятельно!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.11.2011, 10:42   #3
ovaaal
Пользователь
 
Регистрация: 07.11.2011
Сообщений: 13
По умолчанию

да я и сам пытаюсь все это решить, просто неприятная ситуация сложилась:
через пару дней все это нужно решить, а я нахожусь не у своего компа и к инету доступ имею крайне редко, теории у меня нет, а уж тем более турбопаскаля.

конечно я понимаю, что вряд ли кто поможет, т.к. считают, что пришел очередной любитель халявы и думает, что за него все тут всё решат, но тут немного другое сам-то я пытаюсь решить, но очень тяжело вспоминать все "наугад".

впрочем, прошу помочь хотя бы с 1-ым:
Код:
uses crt;
type mass=array[1..10] of real {или все же integer нужен?}
var a:mass;
i,s,n:integer; {integer  or real ? :( }

begin
clrscr;
writeln ('razmer massiva');
readln(n);
s:=0;
for i:=1 to n do

begin
writeln('i-elementov massiva =');
readln(a[i]);
if a[i]>0 then
s:=s*a[i];
end;
writeln('summa elementov ravna = ',s);
readkey;
end.
с типами чего-то не совсем уверен
оу, я немного не то сделал в задании написано 10элементов нужно, а я сделал, чтобы их количество вводилось с клавиатуры , ну да ладно



___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 07.11.2011 в 11:15.
ovaaal вне форума Ответить с цитированием
Старый 07.11.2011, 11:25   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

хм.. вот теперь вижу, что Вы хотя бы пытаетесь решить задачу (и, кстати, вполне не безуспешно!)

теперь конкретно.

Цитата:
впрочем, прошу помочь хотя бы с 1-ым:
это с каким первым? У Вас же в первом задании нужно найти ПРОИЗВЕДЕНИЕ..
А вы что пишите? Кроме того, если Вы изначально S присвоите ноль, то на что бы Вы потом не умножали, ноль и останется...

Цитата:
1.Разработайте программу для вычисления произведения всех элементов одномерного вещественного массива размерностю 10, введенного с клавиатуры пользователем.
Код:
uses crt;
const n = 10;
type mass=array[1..n] of real;

var a:mass;
   i :integer;
   Proiz : real;

begin
  clrscr;
  WriteLn('vvedite ',n,' elementov maasiva ');
  for i:=1 to n do begin
    Write(' a[',i,'] : ');
    Readln(a[i]);
  end;

  {вычисление произведения}
  Proiz := 1;
  for i:=1 to n do 
    Proiz := Proiz * a[i];

  WriteLn('prozivedenie vseh elemtov = ',Proiz:1:4);
  Readln
end.
p.s. в остальных задачах всё то же самое.
пробуйте сами. давайте свой код, а мы, если что сообща его поправим.. (кстати, у меня TurboPascal под рукой - я смогу прямо в Паскале ваш код прогнать, если надо...)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.11.2011, 11:51   #5
ovaaal
Пользователь
 
Регистрация: 07.11.2011
Сообщений: 13
По умолчанию

Спасибо знаю, что написал много ненужного бреда в первой программе, но без самого паскаля мне сложно что-либо решать (а трафик на скачку нельзя тратить ) благо, что нашел этот форум.

вот вторая программа по-легче (хотя куда уже легче-то )
прошу исправить, если что не правильно, ну и указать на ошибки и недочеты
2.
Код:
uses crt;
 var b,c,n:integer;
 a,p:real;
 begin
 clrscr;
 p:=1;
 for c:=1 to 10 do
 begin
 writeln('vvedite' , c , 'chislo');
 readln(a);
 if a>=0 then
 p:=p*a;
 end;
 writeln(p);
 readkey;
 end.
ovaaal вне форума Ответить с цитированием
Старый 07.11.2011, 13:14   #6
ovaaal
Пользователь
 
Регистрация: 07.11.2011
Сообщений: 13
По умолчанию

ну приступлю к матрицам (по ним совершенно ничего не знаю, поэтому всё что буду писать, буду писать с пометками, а ежели они будут неправильны, то прошу поправить)
3.
попытаюсь, но решить вряд ли смогу:
Код:
uses crt;
const
nn = 4; {строки}
mm = 4; {столбцы}
type
matrix=array[1..nn,1..mm] of Real;
var
  a: matrix;
  i,j: integer;
  s:real;
begin
clrscr;
Writeln('vvod matrici');
 for i := 1 to nn do
 for j := 1 to mm do
  begin
Writeln('Matrix[', i, ',', j,'] : '); 
Readln(Mat1[i, j]);                      {ну здесь я вроде как ввел матрицу}
end;
 for i := 1 to nn do {проверяю/cчитаю нижние элементы строк}
  for j := 1 to mm do {проверяю/cчитаю элементы строк идущих в правую сторону} {только не уверен нужно ли это делать}
begin
s:=0;
for i:=1 to nn do s:=s+a[i];
for j:=1 to mm do s:=s+a[j]; {правильно ли это?} {ну это вроде все, что я смог надумать по этой задаче :(}
ovaaal вне форума Ответить с цитированием
Старый 07.11.2011, 13:52   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
вот вторая программа по-легче (хотя куда уже легче-то )
угу. нормальное решение. возможно, я бы лишил ноль гордого имени "положительного числа" (тем более, что если встретится хоть один ноль, то всё Ваше произведение вырождается в ноль. Однако, насколько мне не изменяет память, ноль всё же относится к положительным числам. Поэтому, формально Вы абсолютно правы. решение корректное.

3-я задача. есть ряд опечаток (посмотрите, в какую переменную Вы вводите матрицу), так и ошибок (если речь идёт о матрице, то к одному элементу нельзя обратиться по одному индексу, нельзя использовать a[i] или a[j] - нужно обязательно указывать сразу оба индекса!
ну и при решении задач, связанных с диагоналями квадратных матриц есть ещё один нюансик. Надо внимательно посмотреть на две диагонали (главную и побочную), и обратить внимание, как взаимосвязаны индекс по горизонтали и по вертикали.
для главной диагонали - это совсем просто/очевидно: номер строки I равен номеру столбца J, т.е. элемент получаетcя A[i,i]
а вот для побочной приходится ещё и размер матрицы подключать:
I = N + 1 - J; т.е. элемент получаетcя A[i,N+1-i]


получаем такое решение задачи 3:
Цитата:
3.Разработайте программу для вычисления суммы диагональных элементов матрицы 4х4. Вещественные числа вводятся с клавиатуры пользователем.
Код:
uses crt;
const
  nn = 4; {и строки и столбцы 0- т.к. матрица квадратная}
type
  matrix=array[1..nn,1..nn] of Real;
var
  a: matrix;
  i,j: integer;
  s:real;
begin
 clrscr;
 Writeln('vvod matrici');
 for i := 1 to nn do
 for j := 1 to nn do
  begin
    Write('Matrix[', i, ',', j,'] : '); 
    Readln(a[i, j]);                      {ну здесь я вроде как ввел матрицу}
  end;

 s := 0;
 for i := 1 to nn do begin
   s := s + a[i,i]; {прибавим элемент главной диагонали}
   s := s + a[i, nn+1-i]; {прибавим элемент побочной диагонали}
 end;

 WriteLn('summa diagonalhyh elementov = ', s:1:4);
 Readln
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.11.2011, 14:31   #8
ovaaal
Пользователь
 
Регистрация: 07.11.2011
Сообщений: 13
Хорошо

Огромное спасибо Вам, что расставили все по полочкам, теперь даже смешно становится с того, как я хотел вывести главную диагональную матрицу :
Цитата:
for i:=1 to nn do s:=s+a[i];
for j:=1 to mm do s:=s+a[j];
после "разжевывания" думаю решить следующую задачку не составит труда.
ovaaal вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задачи на обработку массивов (Delphi) Vladimir Ryabov Помощь студентам 11 30.10.2011 18:10
задачи на обработку массивов bighunter Паскаль, Turbo Pascal, PascalABC.NET 2 09.10.2011 19:58
3 задачи: на простые числа, на матрицу и на обработку строки. Дорешать. Паскаль gena1128 Помощь студентам 6 02.06.2011 18:21
Задачи на обработку матриц! davka Помощь студентам 1 24.05.2011 07:40
задачи: на двумерные массивы,обработку строк,обработку текстовых файлов. (Паскаль) Yaro Помощь студентам 2 12.11.2009 12:55