Новые сообщения · Правила  
Страница 1 из 11
Модератор форума: Berestovskiy 
Форум ПРОГРАММИСТОВ » ПРОГРАММИРОВАНИЕ » Паскаль » Написание программы (Помогите пожалуста. Лаба горит, а тему пропустил.)
Написание программы
---------------------------------------------
Посчитать количество столбцов в матрице А, размерностью KxL, которые вмещают в себе только положительные элементы.
Вывести результат подсчета и входящую матрицу на экран.

- язык Паскаль
program matrica;
const eps=1E-10;
var g,kol,i,k,l,j:integer;
a:array[1..100,1..100] of integer;
begin
write('количество строк=');readln(k);
write('количество столбцов=');readln(l);
kol:=0;
for i:=1 to k do
begin
for j:=1 to l do
begin
write('введите элемент ',i,'й строки и ',j,'-го столбца:');
readln(a[i,j]); if a[i,j]>Eps then
kol:=kol+1;
end;
end;
writeln('количество столбцов с только положортельными эелементами=',kol:5);
begin
writeln('начальная матрица :');
for i:=1 to k do begin
for j:=1 to l do
write(a[i,j]:6);
writeln;
end;
end;
end.

ошибка где-то здесь
begin
write('введите элемент ',i,'й строки и ',j,'-го столбца:');
readln(a[i,j]); if a[i,j]>Eps then
kol:=kol+1;
end;

1 | Автор: president_ml | 2010-12-06, 15:45 | Изменено: president_ml - Пн, 2010-12-06, 17:31   |  Репутация: [ + 0 ]
Вы считаете кол-во элементов которые больше Eps.

вот примерный код, кстати рекомендую пользоваться тегом code и использовать автоматическое заполнение матрицы:

Code

program matrica;
  const k=5,l=5;//задаём размеры матрицы
  var i,j,kol: byte; a: array[1..k,1..l] of integer; check: boolean;
begin
//заполняем матрицу
  for i=1 to k do
   for j:=1 to l do
    a[i,j]:=(random(100)-50); //случайное число от -50 до 50
   
  //считаем кол-во столбцов
check:=true;
kol:=0;
  for j:=1 to l do
   begin
    for i:=1 to k do
     check:=check and (a[i,j]>0); //проверяем все ли элементы столбца больше нуля
    if check then kol:=kol+1; //если проверка успешна то увеличиваем значение kol
   end;

//выводим результаты   
  writeln('количество столбцов с только положортельными эелементами=',kol:5);  

  writeln('начальная матрица :');  
   for i:=1 to k do  
    begin  
     for j:=1 to l do  
      write(a[i,j]:6);  
     writeln;  
    end;   
end.

Возможно правда, что будет считать не столбцы, а строки (я их всегда путаю), тогда в том блоке где считаем столбцы нужно поменять местами "for j:=1 to l do" и "for i:=1 to k do".
Еще возможно я забыл объявить какую-нибудь переменную или поставить точку с запятой, тут уже сами разберётесь.

2 | Автор: Fireleo | 2010-12-07, 02:23   |  Репутация: [ + 30 ]
спасибо огромное, Вы меня очень выручили
3 | Автор: president_ml | 2010-12-07, 13:30   |  Репутация: [ + 0 ]
Форум ПРОГРАММИСТОВ » ПРОГРАММИРОВАНИЕ » Паскаль » Написание программы (Помогите пожалуста. Лаба горит, а тему пропустил.)
Страница 1 из 11
Поиск: