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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.05.2011, 10:15   #1
planet 08
 
Регистрация: 08.05.2011
Сообщений: 4
По умолчанию Довести задачу до ума на Borland 5.02 C++

Дана задача:
Даны целочисленные матрицы В(4,4) и С(4,4). Построить матрицу А(4,4), каждый элемент которой вычисляется по формуле:
aij=bij при| bij>cij | и aij=cij при |bij<=cij|

(i=1,…,4; j=1,…,4). В матрице А найти произведение элементов, стоящих выше главной дианонали, а в матрице В – максимальный элемент в третьей строке
Код:
#include<iostream.h>
#include<math.h>
#include<iomanip.h>
void main()
{       
         int a[i][j],
             b[4][4]={{2,  3, 1, 8},
                      {2, -6, 4, 5},
                      {9,  8, 1, 7},
                      {4, -9, 6, 3}},

             c[4][4]={{2, -3,  5, 7,},
                      {5, -7, -3, 8},
                      {2,  1,  5, 9},
                      {7, -8,  2, 1}};

 for(int i=1;i<5;i++)
 for(int j=1;j<5;j++)
 a[i][j]=(abs(b[i][j]))>(abs(c[i][j]))? b[i][j]:c[i][j];
  cout<<"Матрица b:"<<"\n";
 for(i=1;i<5;i++)
 for(j=1;j<5;j++)
 {cout<<" "<<setw(4)<<b[i][j];
  if (j==3)cout<<"\n";
 }
  cout<<"Матрица c:"<<"\n";
 for(i=3;i<4;i++)
 for(j=3;j<4;j++)
 {cout<<" "<<setw(4)<<c[i][j];
  if(j==3)cout<<"\n";
 }
 long p=3;
 for(i=3;i<4;i++)
 for(j=3;j<4;j++)
   p*=a[i][j];
 cout<<"p="<<p<<endl;
 int s=0;
 for(i=3,j=4;i<4;i++)
 if(b[i][j]==3)s++;
 cout<<"s="<<s<<endl;
}
Но вот в чем суть вопроса, не могу запустить вычисление из-за 2 ошибок:
Undefined symbol "i" и Undefined symbol "j", как мне их устранить? Заранее благодарен.
planet 08 вне форума Ответить с цитированием
Старый 08.05.2011, 10:24   #2
malinoff
Форумчанин
 
Аватар для malinoff
 
Регистрация: 08.01.2010
Сообщений: 205
По умолчанию

Код:
 int a[i][j],
Перед этой строкой не объявлены i и j.
Код:
for(int i=1;i<5;i++)
 for(int j=1;j<5;j++)
Тут i и j - локальные переменные, значения возвращаются к исходным после выхода из циклов.
Код:
 for(i=1;i<5;i++)
 for(j=1;j<5;j++)
Тут же i и j - переменные, определенные извне циклов, значит, их значения будут модифицироваться.

Отсчет индекса массива начинается с 0.

Использовать одинаковые имена для размеров матрицы и индексов плохо.
Если помог - кликни на значок весов под аватаром.
malinoff вне форума Ответить с цитированием
Старый 08.05.2011, 10:32   #3
planet 08
 
Регистрация: 08.05.2011
Сообщений: 4
По умолчанию

Пожалуйста, скажи мне,как правильно объявить i и j?
planet 08 вне форума Ответить с цитированием
Старый 08.05.2011, 10:47   #4
malinoff
Форумчанин
 
Аватар для malinoff
 
Регистрация: 08.01.2010
Сообщений: 205
По умолчанию

Так же, как и массивы.
Тип имя
Например, int i,j;

Но их значение не задается, так что программа будет работать неправильно, будет вместо массива 4х4 создавать массив мусор х мусор.
Если помог - кликни на значок весов под аватаром.
malinoff вне форума Ответить с цитированием
Старый 08.05.2011, 11:14   #5
planet 08
 
Регистрация: 08.05.2011
Сообщений: 4
По умолчанию

После объявления(int i,j появляются очередные 2 ошибки Constant expression required, опять что-то неправильно делаю?
planet 08 вне форума Ответить с цитированием
Старый 08.05.2011, 11:42   #6
malinoff
Форумчанин
 
Аватар для malinoff
 
Регистрация: 08.01.2010
Сообщений: 205
По умолчанию

Цитата:
Сообщение от planet 08 Посмотреть сообщение
После объявления(int i,j появляются очередные 2 ошибки Constant expression required, опять что-то неправильно делаю?
Потому что i и j в объявлении int a[i][j] должны быть константами
Напишите вместо int i,j; const int row=4,col=4;
Вместо int a[i][j]; int a[row][col];
И в циклах не забудьте везде объявить локальные i и j
Если помог - кликни на значок весов под аватаром.
malinoff вне форума Ответить с цитированием
Старый 08.05.2011, 12:03   #7
planet 08
 
Регистрация: 08.05.2011
Сообщений: 4
По умолчанию

Спасибо за помощь в решении, решение получил. Вы мне очень помогли.
Тему можно закрывать
planet 08 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Довести до ума БД в delphi Харламов Юрий Помощь студентам 6 28.12.2010 02:34
Циклы. Не могу довести до ума man-utd- Помощь студентам 2 21.12.2010 20:05
Не могу довести до ума задачу в Паскале. Кому неспицца?) Ilotoshka Помощь студентам 2 24.11.2010 05:18
Помогите довести до ума andresan Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 27.11.2009 07:46