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

 

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