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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2009, 23:11   #1
anna_
Пользователь
 
Регистрация: 07.12.2009
Сообщений: 20
Вопрос Исправте ошибку в коде. Паскаль. Двумерные массивы.

Задание:
Найти максимальный из неповторяющихся (встречающихся только один раз) элементов двухмерного массива.

Код:
program  task;
uses crt;
var A:array[1..10,1..10] of integer;
k,f,s,p,g,N,M,i,j:integer;
max:real;
begin
clrscr;
writeln('razmernost massiva:');
write('N = ');
readln(N);
write('M = ');
readln(M);
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-1 do
for j:=1 to M-1 do
begin
for f:=i+1 to n do
for g:=j+1 to n do
begin
if a[i,j]<>a[f,g] then
begin
max:=A[1,1];
s:=1;
p:=1;
for i:=1 to N do
for j:=1 to M do
if A[i,j]>max then begin
max:=A[i,j];
s:=i;
p:=j;
end;
end;
end;
end;
writeln('max iz nepovtor. A[',s,',',p,'] = ',A[s,p]);
readln;
end.
Пожалуйста проверьте, подскажите что не так. Ведь максимальный элемент он находит, вот только не видит что он повторяющийся
anna_ вне форума Ответить с цитированием
Старый 17.12.2009, 23:24   #2
Kopwyh
НашКодинг
 
Регистрация: 21.05.2009
Сообщений: 9
По умолчанию

Ну, я вижу одну ошибку.
Внутри цикла по i и j запускаешь другой цикл по этим же переменным.
Чего делать строго воспрещается.
Kopwyh вне форума Ответить с цитированием
Старый 17.12.2009, 23:50   #3
anna_
Пользователь
 
Регистрация: 07.12.2009
Сообщений: 20
По умолчанию

тогда подскажите как заставить программу убедится что в массиве нет повторяющихся элементов
anna_ вне форума Ответить с цитированием
Старый 18.12.2009, 00:08   #4
anna_
Пользователь
 
Регистрация: 07.12.2009
Сообщений: 20
По умолчанию

Вот еще пожалуйста проверьте

Задание:
Решить задачу: удалить из строки гласные русские буквы, подсчитав количество удалений.

Код:
program task;
uses crt;
var s:string;
t,i:integer;
begin
clrscr;
writeln('Vvedite stroku: ');
readln(s);
i:=1;
t:=0;
while i<=length(s) do
begin
if ((s[i]='a') or (s[i]='e') or (s[i]='i') or (s[i]='o') or (s[i]='u') or (s[i]='y'))
or ((s[i]='A') or (s[i]='E') or (s[i]='I') or (s[i]='O') or (s[i]='U') or (s[i]='Y'))
then begin delete(s,i,1);
t:=t+1;
end;
i:=i+1;
end;
writeln('poluchennaya stroka:');
writeln(s);
writeln('kol-vo udaleniy: ',t);
readln;
end.
Программа почти работает как надо, (вводим abcde получаем bcd), но если ввести рядом 2 гласные буквы, то удалится только одна. Как исправить?
anna_ вне форума Ответить с цитированием
Старый 18.12.2009, 00:47   #5
Alex_FF
Удален
Форумчанин
 
Регистрация: 02.12.2009
Сообщений: 309
По умолчанию

вот правильное решение:
Код:
const
  A = ['A', 'U', 'O', 'I', 'E'];
var
  S: String;
  I, N, Len: Integer;
begin
  ReadLn(S);
  I := 1;
  N := 0;
  Len := Length(S);
  while I <= Len do
  begin
    if Upcase(S[I]) in A then
    begin
      Delete(S, I, 1);
      Inc(N);
      Dec(Len);
      Continue;
    end;
    Inc(I);
  end;
  WriteLn(S);
  WriteLn(N);
  ReadLn;
  ReadLn;
end.
Alex_FF вне форума Ответить с цитированием
Старый 18.12.2009, 10:51   #6
anna_
Пользователь
 
Регистрация: 07.12.2009
Сообщений: 20
По умолчанию

спасибо! а с первым можно что нить сделать??
anna_ вне форума Ответить с цитированием
Старый 18.12.2009, 12:30   #7
Alex_FF
Удален
Форумчанин
 
Регистрация: 02.12.2009
Сообщений: 309
По умолчанию

1)
Код:
const
  Len = 100;
var
  a: Array[1..Len, 1..Len] of Integer;
  N, M, I, J, K, L, Max, X, Y: Integer;
  F, F2: Boolean;
begin
  Write('Введите N, M');
  ReadLn(N, M);
  WriteLn('Введите массив');
  for I := 1 to N do
    for J := 1 to M do
      Read(a[I, J]);
  F2 := False;
  Max := Low(Max);
  for I := 1 to N do
    for J := 1 to M do
    begin
      F := False;
      for K := 1 to N do
        for L := 1 to M do
          if (a[I, J] = a[K, L]) and ((I <> K) or (J <> L)) then
            F := True;
      if (Max < a[I, J]) and (not F) then
      begin
        Max := a[I, J];
        X := I;
        Y := J;
        F2 := True;
      end;
    end;
  if not F2 then
    WriteLn('Все элементы повторяются')
  else
    WriteLn('Max = a[', X, ', ', Y, '] = ', Max);
  ReadLn;
  ReadLn;
end.

Последний раз редактировалось Alex_FF; 18.12.2009 в 12:33.
Alex_FF вне форума Ответить с цитированием
Старый 18.12.2009, 14:09   #8
anna_
Пользователь
 
Регистрация: 07.12.2009
Сообщений: 20
По умолчанию

спасибо огромное!))
anna_ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двумерные массивы.Паскаль **star** Помощь студентам 2 01.11.2009 23:30
Найти ошибку в коде. (С, массивы) pomoshnic Помощь студентам 2 08.07.2009 03:48
Задача на двумерные массивы (Паскаль) Proffy69 Помощь студентам 2 17.05.2009 19:01
Двумерные массивы. Паскаль deceiver Помощь студентам 4 11.03.2009 18:28