![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Richard |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 22 Пол: Мужской Репутация: ![]() ![]() ![]() |
Прошу помощи в решение простой задачи. Раньше вообще не имел дел с матрицами и масивами.
Задача: Задана матрица S(25,8). Вывести исходные данные в первые 24 строки и первые 7 столбцов. Вычислить среднее арифметческое значение элементов каждой строки и записать его в 8-ой столбец, а также среднее среденее арифметическое каждого столбца и записать его в 25-ю строку. |
Артемий |
![]()
Сообщение
#2
|
![]() Помощник капитана ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 601 Пол: Мужской Реальное имя: Артем Репутация: ![]() ![]() ![]() |
Показывай код, который пробовал..
-------------------- Dum spiro spero!
|
Richard |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 22 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вот у меня есть та часть программы которая отвечает за вывод исходных данных в первые 24 строки и первые 7 столбцов.
program pr_5;
uses crt;
const n=25; m=8;
var s:array [1..n,1..m] of integer;
i,j,k:integer;
begin
clrscr;
randomize;
for i:=1 to 24 do
for j:=1 to 7 do
s[i,j]:=random (100);
for i:=1 to 24 do
begin
for j:=1 to 7 do
write (s[i,j]:5);
writeln;
end;
writeln;
readln;
end.
Во первых проблема в том что выводится только 23 строки, а не 24. Во вторых не знаю я как вывести эти средние значения. |
samec |
![]()
Сообщение
#4
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 180 Пол: Мужской Реальное имя: Юра Репутация: ![]() ![]() ![]() |
нужно сначала заполнить матрицу этими самыми средними арифметичискими, а потом уже и выводить.
Заполнить можно вот так:
for i:=1 to 24 do
begin
s[i,m]:=0;
for j:=1 to 7 do
s[i,m]:=s[i,m]+s[i,j];
s[i,m]:=s[i,m] div 7;
end;
for i:=1 to 7 do
begin
s[n,i]:=0;
for j:=1 to 24 do
s[n,i]:=s[n,i]+s[j,i];
s[n,i]:=s[n,i] div 24;
end;
вот только это не совсем среднее арифметическое будет получаться, в твоём примере я думаю нужно использовать матрицу вещественного типа, тогда всё будт ок. Если использовать матрицу вещественного типа, то нужно div заменить на / вот и всё ;) |
Richard |
![]()
Сообщение
#5
|
Новичок ![]() Группа: Пользователи Сообщений: 22 Пол: Мужской Репутация: ![]() ![]() ![]() |
Правильно ли я понимаю что если не использовать вещественный тип то средний арифметический будет усреднятся до целого, а то при вещественном такие ужасные цифры получаются.
Еще вопрос как их вывести, а то у меня ничего не выводится, да и с самой 24 строчкой тоже проблема выводится максимум только 23. |
мисс_граффити |
![]()
Сообщение
#6
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
Цитата то при вещественном такие ужасные цифры получаются. просто пользуйся форматным выводом. например: writeln(a:0:2) выведет а с двумя знаками после запятой. -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Richard |
![]()
Сообщение
#7
|
Новичок ![]() Группа: Пользователи Сообщений: 22 Пол: Мужской Репутация: ![]() ![]() ![]() |
Остается проблема как вывести средние арифмктические и почему не выводится рандомом заданые 24 строчки, а выводится только 23 я уж и не говорю про 25
|
Richard |
![]()
Сообщение
#8
|
Новичок ![]() Группа: Пользователи Сообщений: 22 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вот полная версия задачи, но что то она неработает и не могу понять в чем дело.
program pr_5;
uses crt;
const n=25; m=8;
var s:array [1..n,1..m] of integer;
i,j,k:integer;
begin
clrscr;
randomize;
for i:=1 to 24 do
for j:=1 to 7 do
s[i,j]:=random (100);
for i:=1 to 24 do
begin
for j:=1 to 7 do
write (s[i,j]:5);
writeln;
end;
for i:=1 to 24 do
begin
s[i,m]:=0;
for j:=1 to 7 do
s[i,m]:=s[i,m]+s[i,j];
write(s[i,m] div 7:5);
end;
for i:=1 to 7 do
begin
s[n,i]:=0;
for j:=1 to 24 do
s[n,i]:=s[n,i]+s[j,i];
write(s[n,i] div 24:5);
end;
writeln;
readln;
end.
|
мисс_граффити |
![]()
Сообщение
#9
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
1. Сделал бы по-человечески:
1) Заполняешь ВСЮ матрицу (часть - случайными числами, часть рассчитываешь) 2) ВСЮ выводишь а не кусками... сам же в своих write и writeln запутался. Столбец выводится не столбцом, а строчкой. 2. Возможно, строки просто не помещаются. Посмотри настройки окна... -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Richard |
![]()
Сообщение
#10
|
Новичок ![]() Группа: Пользователи Сообщений: 22 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вот новая версия программы
program proga1;
uses
crt;
var
i,k: integer;
sum: real;
mas: array[1..25,1..8] of real;
begin
clrscr;
sum := 0;
randomize;
for k := 1 to 7 do
begin
for i := 1 to 24 do
begin
mas[i,k] := random(10);
sum := sum + mas[i,k];
end;
mas[25,k] := sum/24;
sum := 0;
end;
sum := 0;
for i := 1 to 24 do
begin
for k := 1 to 7 do
begin
sum := sum + mas[i,k];
end;
mas[i,8] := sum/7;
sum := 0;
end;
for k := 1 to 8 do
begin
writeln;
for i := 1 to 25 do
write(mas[i,k]
1);
end;
readln;
end.
Осталось только поменять стобцы со строками, но у меня никак не получается. |
samec |
![]()
Сообщение
#11
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 180 Пол: Мужской Реальное имя: Юра Репутация: ![]() ![]() ![]() |
вот это (в самом конце)
for k := 1 to 8 do
begin
writeln;
for i := 1 to 25 do
write(mas[i,k]
1);
меняешь на следующее:
for i := 1 to 25 do
begin
writeln;
for k := 1 to 8 do
write(mas[i,k]:5:2);
end;
и всё. |
![]() ![]() |
![]() |
Текстовая версия | 15.04.2025 21:19 |