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

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

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

 
 Ответить  Открыть новую тему 
> Обработка массива.
сообщение
Сообщение #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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

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

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


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


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

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

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


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

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


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


Новичок
*

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

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


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


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

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

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


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

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


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


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

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

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


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

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


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

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

 



- Текстовая версия 17.04.2025 19:13
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name