IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Обработка массива.
Eduard
сообщение 6.05.2011 5:14
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


Надо расставить строки таким образом, чтобы элементы в первом столбце были упорядочены по убыванию. Вычислить среднее арифметическое элементов 1-ого столбца.

Не работает программа, подскажите, что неправильно.

uses crt;
var a:array[1..100,1..100]of integer;
N, M, i, j, e :integer;
begin
write('N, M -> ');
readln(N, M);
write('Input matrix -> ');
for i:=1 to N do for j:=1 to M do
begin
write('A[',i,',',j,'] -> ');
readln(a[i, j]);
for i:=1 to n do
for j:=1 to n-1 do
begin
if a[j]<a[j+1] then
begin
e:=a[j];
a[j]:=a[j+1];
a[j]:=e;
end;
end;
writeln (a[i,j]);
end;
end.


Вычисление среднего арифметического, я не знаю куда поставить.

Еще есть вариант решения задачи, но он не совсем правильно работает и вычисление среднего арифметического, я не знаю куда поставить.

Const t=100; 
Var a: array[1..t,1..t] of integer;
B: array[1..t,1..2] of integer;
N, k, I, j: integer;
Begin
Writeln(‘n=’);
Readln(n);
For i:=1 to n do
For j:=1 to n do read(a[I,j]);
For i:=1 to n do
B[i,1]:=a[i,1];
For i:=1 to n-1 do
For j:=1 to n do
If b[i,1]<b[j,1] then
Begin
k:=b[i,1];
b[i,1]:=b[j,1];
b[j,1]:=k;
End;
For i:=1 to n do
Begin
If a[i,1]<>b[i,1] then
Begin
For j:=1 to n do
If a[j,1]=b[i,1] then b[i,2]:=j;
End
Else b[i,2]:=i;
End;
For i:=1 to n do
Begin
K:=b[i,2];
For j:=1 to n do write(a[k,j]:4);
Writeln;
End;
End.


Сообщение отредактировано: Eduard - 6.05.2011 5:20
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 6.05.2011 8:03
Сообщение #2


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Eduard @ 6.05.2011 6:14) *

Надо расставить строки таким образом, чтобы элементы в первом столбце были упорядочены по убыванию. Вычислить среднее арифметическое элементов 1-ого столбца.

Не работает программа, подскажите, что неправильно.

uses crt;
var a:array[1..100,1..100]of integer;
N, M, i, j, e :integer;
begin
write('N, M -> ');
readln(N, M);
write('Input matrix -> ');
for i:=1 to N do for j:=1 to M do
begin
write('A[',i,',',j,'] -> ');
readln(a[i, j]);
for i:=1 to n do
for j:=1 to n-1 do
begin
if a[j]<a[j+1] then
begin
e:=a[j];
a[j]:=a[j+1];
a[j]:=e;
end;
end;
writeln (a[i,j]);
end;
end.


Вычисление среднего арифметического, я не знаю куда поставить.

Еще есть вариант решения задачи, но он не совсем правильно работает и вычисление среднего арифметического, я не знаю куда поставить.

Const t=100; 
Var a: array[1..t,1..t] of integer;
B: array[1..t,1..2] of integer;
N, k, I, j: integer;
Begin
Writeln(‘n=’);
Readln(n);
For i:=1 to n do
For j:=1 to n do read(a[I,j]);
For i:=1 to n do
B[i,1]:=a[i,1];
For i:=1 to n-1 do
For j:=1 to n do
If b[i,1]<b[j,1] then
Begin
k:=b[i,1];
b[i,1]:=b[j,1];
b[j,1]:=k;
End;
For i:=1 to n do
Begin
If a[i,1]<>b[i,1] then
Begin
For j:=1 to n do
If a[j,1]=b[i,1] then b[i,2]:=j;
End
Else b[i,2]:=i;
End;
For i:=1 to n do
Begin
K:=b[i,2];
For j:=1 to n do write(a[k,j]:4);
Writeln;
End;
End.


У тебя вложенные циклы используют одну переменную. Как это может правильно работать? ))


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 6.05.2011 8:27
Сообщение #3


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Ты забыл закрыть цикл ввода, поэтому получились "вложенные" циклы smile.gif.
Но у тебя там еще куча ошибок...
Путаница с типами. Ты перекладываешь строки целиком (что хорошо), но сравнивать-то надо первые элементы. Но тип e при этом должен быть не целый, а массив.
Перекладывание ты тоже непрравильно делаешь (я исправил).

Короче, примерно вот так:
const
Max= 100;

type
tStroka= array [1..Max] of integer;

var
a: array [1..100] of tStroka;
N, M, i, j:integer;
e: tStroka;

begin
write('N, M -> ');
readln(N, M);
write('Input matrix -> ');
for i:=1 to N do for j:=1 to M do begin
write('A[',i,',',j,'] -> ');
readln(a[i, j]);
end;
for i:=1 to n do
for j:=i-1 downto 1 do begin
if a[j,1]<a[j+1,1] then begin
e:=a[j];
a[j]:=a[j+1];
a[j+1]:=e;
end;
end;
writeln (a[i,j]);
end.

И наконец, ты забываешь вывести результат. Это ты добавь уже сам.. Как и подсчет среднего )). Спрашивай, если что-то неясно.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Eduard
сообщение 6.05.2011 8:51
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


Среднее арифметическое я смог сделать, но вот вывести таблицу с исправленным столбцом что-то не могу.

uses crt;
const
Max= 100;

type
tStroka= array [1..Max] of integer;

var
a: array [1..100] of tStroka;
N, M, i, j :integer;
s:real;
e: tStroka;

begin
write('N, M -> ');
readln(N, M);
write('Input matrix -> ');
for i:=1 to N do
for j:=1 to M do
begin
write('A[',i,',',j,'] -> ');
readln(a[i, j]);
end;
for i:=1 to n do
for j:=i-1 downto 1 do
begin
if a[j,1]<a[j+1,1] then
begin
e:=a[j];
a[j]:=a[j+1];
a[j+1]:=e;
end;
writeln (a[i,j]);
end;
for i:= 1 to n do
begin
s:=0;
for j:= 1 to m do
s:=s+a[i,1];
end;
s:=s/N;
write (s);
end.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 6.05.2011 9:18
Сообщение #5


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Eduard @ 6.05.2011 9:51) *
Среднее арифметическое я смог сделать,
Ага, конечно.. )) Неправильные значения тебя не насторожили?
Зачем тебе там был нужен двойной цикл?? blink.gif
Ладно, разбирайся, короче..

Цитата
но вот вывести таблицу с исправленным столбцом что-то не могу.
И что тебя затруднило?..

const
Max= 100;

type
tStroka= array [1..Max] of integer;

var
a: array [1..Max] of tStroka;
N, M, i, j :integer;
s:real;
e: tStroka;

begin
write('N, M -> ');
readln(N, M);
write('Input matrix -> ');
for i:=1 to N do
for j:=1 to M do
begin
write('A[',i,',',j,'] -> ');
readln(a[i, j]);
end;
for i:=1 to n do
for j:=i-1 downto 1 do
begin
if a[j,1]<a[j+1,1] then
begin
e:=a[j];
a[j]:=a[j+1];
a[j+1]:=e;
end;
writeln (a[i,j]);
end;
s:=0;
for i:=1 to n do s:= s+a[i,1];
s:= s/N;
writeLn ('среднее арифметическое первого столбца = ',s);
for i:=1 to n do begin
for j:=1 to m do Write(a[i,j]:4);
WriteLn
end;
readln
end.

Ответь еще на вопросик, плз. Зачем тебе вот эта строка, а?
uses crt;
Это как галстук, что ли? для красоты? без нее несолидно? lol.gif


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Eduard
сообщение 6.05.2011 9:23
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


У меня без uses crt программа не запускается.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 6.05.2011 9:28
Сообщение #7


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Eduard @ 6.05.2011 10:23) *
У меня без uses crt программа не запускается.

Вот эта программа?..
Какой у тебя компилятор?


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Eduard
сообщение 6.05.2011 9:37
Сообщение #8


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


Вот эта программа. TP 7
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
TarasBer
сообщение 6.05.2011 10:06
Сообщение #9


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


> У меня без uses crt программа не запускается.

В перлы...
На какие только сказки они ни идут, лишь бы оправдать наличие этого модуля.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 6.05.2011 10:06
Сообщение #10


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Eduard @ 6.05.2011 10:37) *
Вот эта программа. TP 7

Брехняяяя... (С)
smile.gif


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 21.06.2025 19:59
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"