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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.03.2014, 09:52   #1
Marisha89
Пользователь
 
Регистрация: 26.03.2014
Сообщений: 16
По умолчанию Найти номер столбика, все елементы которого положительные (Turbo Pascal)

Добрый день.
Подскажите, пожалуйста, где в програме ошибка. Задание: найти номер столбика, в котором все елементы положительные.
Если в первом рядке положительные елемент, во втором отрицательный - програма работает, правильно пишет что нет таких столбиков, если же в первом рядке расположить отрицательные, а во втором положительные - пишет что все столбики полность положительные:
Код:
program zadacha_10;
uses crt;
const n=2; m=4;
var
a: array[1..n,1..m] of real;
i,j: integer;
begin
clrscr;
for i:=1 to n do
for j:=1 to m do
begin
write('a[',i,',',j,']= ');
readln(a[i,j]);
end;
for j:=1 to m do
begin
if a[i,j]>0 then
begin
writeln ('номер столбца, в котором все элементы положительные= ', j);
readln;
end
else
begin
writeln ('в столбце ',j,' нет положительных или не все положительные элементы ');
end;
end;
readln;
end.
Вот результаты где все вроде правильно:
Безымянный.jpg
Вот здесь видно ошибку:
Безымянный1.jpg

Заранее спасибо за помощь!
Marisha89 вне форума Ответить с цитированием
Старый 26.03.2014, 09:56   #2
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Так вы столбец не смотрите совсем, берете только 1 элемент.
Нужно как-то так:
Код:
for i:=1 to n do
begin
  err:=0;
  for j:=1 to m do
    if (a1[i,j]<0) then 
      begin
        err := 1;
        break;
      end;
   if (err=0) then writeln('All ok');
end;
Код накидан в браузере, на синтаксическую правильность не претендует.
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 26.03.2014, 10:05   #3
Marisha89
Пользователь
 
Регистрация: 26.03.2014
Сообщений: 16
По умолчанию

Не вышло(
Может я не туда что-то добавила, посмотрите пожалуйста:
Код:
program zadacha_10;
uses crt;
const n=2; m=4;
var
a: array[1..n,1..m] of real;
i,j,err: integer;
begin
clrscr;
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
begin
err:=0;
for j:=1 to m do
if a[i,j]>0 then
begin
err:=1;
break;
end;
 if (err=0) then
writeln ('все положительные= ', j);
readln;
end;
readln;
end.
Marisha89 вне форума Ответить с цитированием
Старый 26.03.2014, 10:14   #4
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Он у Вас должен сейчас только столбцы с отрицательными элементами печатать.
Код:
if (a1[i,j]<0) then
Код:
if a[i,j]>0 then
Отличие видите?
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 26.03.2014, 10:32   #5
Marisha89
Пользователь
 
Регистрация: 26.03.2014
Сообщений: 16
По умолчанию

Спасибо за ответ)
Отличие то вижу, но как исправить програму совершенно не понимаю(
Marisha89 вне форума Ответить с цитированием
Старый 26.03.2014, 11:39   #6
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Поменять "больше" на "меньше".
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 26.03.2014, 11:55   #7
Marisha89
Пользователь
 
Регистрация: 26.03.2014
Сообщений: 16
По умолчанию

Может ответ кому-то пригодится:
Код:
program zadacha_10;
uses    crt;
const   n=2; m=4;
var
        a        : array[1..n,1..m] of real;
        i,j      : integer;
        s,s1     : boolean;
begin
    repeat
     for i:=1 to n do
      for j:=1 to m do
        begin
          write('a[',i,',',j,']= ');
          readln(a[i,j]);
        end;
     writeln('Исходная матрица:');
     for i:=1 to n do
      begin
       for j:=1 to m do
         begin
           write(a[i,j]:10:4);
         end;writeln;
      end;writeln;
     s:=True;
     write('Номера столбцов со всеми положительными элементами: ');
     for j:=1 to m do
      begin
       s1:=True;
       for i:=1 to n do
         begin
           if a[i,j]<=0 then
            begin
              s1:=False;break;
            end;
         end;
       if s1 then begin write(j:4);s:=False;end
      end;
      if s then writeln('Отсутствуют.')
           else writeln;
     writeln;write('<Esc> - выход, любая другая - повторение...');
     until readkey=#27;
end.

Последний раз редактировалось Marisha89; 26.03.2014 в 13:22.
Marisha89 вне форума Ответить с цитированием
Старый 26.03.2014, 12:10   #8
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

ЭТО - ответ? Правда? Уберите, оно не работает от слова совсем.
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 26.03.2014, 13:03   #9
Marisha89
Пользователь
 
Регистрация: 26.03.2014
Сообщений: 16
По умолчанию

Цитата:
Сообщение от Vanta11a Посмотреть сообщение
ЭТО - ответ? Правда? Уберите, оно не работает от слова совсем.
А Вы проверяли? Я конечно не специалист, но работающую програму от неработающей отличу.

Последний раз редактировалось Marisha89; 26.03.2014 в 13:06.
Marisha89 вне форума Ответить с цитированием
Старый 26.03.2014, 13:12   #10
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Цитата:
А Вы проверяли?
Ага.
Цитата:
Я конечно не специалист, но работающую програму от неработающей отличу.
А, ну ну, верьте в себя дальше.

upd:
Цитата:
a[1,1]= -1
a[1,2]= -1
a[1,3]= -1
a[1,4]= -1
a[2,1]= -1
a[2,2]= -1
a[2,3]= 1
a[2,4]= 1
в столбце 1 нет положительных или не все положительные элементы
в столбце 2 нет положительных или не все положительные элементы
номер столбца, в котором все элементы положительные= 3
4й столбец где? Откуда в 3м столбце все элементы - положительные?
upd2: пардон, 4й появляется после readln`а.
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)

Последний раз редактировалось Vanta11a; 26.03.2014 в 13:16.
Vanta11a вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти наименьший номер члена последовательности, для которого выполняется условие |an-an-1|< ε. Muram4ik C++ Builder 0 01.03.2013 12:04
Сформировать одномерный массив, элементами которого являются все положительные элементы исходного массива... sev48fire Помощь студентам 11 07.06.2012 11:06
Найти наименьший номер члена последовательности, для которого выполняется условие |an-an-1|< ε. Kerragin Visual C++ 7 15.12.2010 21:44
найти наименьший номер элемента последовательности, для которого выполняется условие newgener Помощь студентам 3 24.05.2010 18:44
Есть масив а[i,j] (10х10), все елементы которого равны 0, т.е нулевая матрица, как воплотить в программе? alex2008ean Паскаль, Turbo Pascal, PascalABC.NET 2 10.12.2008 00:08