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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.03.2009, 11:35   #1
JiLiYa
Пользователь
 
Регистрация: 23.09.2008
Сообщений: 16
Восклицание Задачи на матрицу ... Подскажите,где ошибки

Добрый день! Помогите пожалуйста с задачкой!В чем тут ошибка?

1) В каждой строке (столбце) матрицы сменить знак максимального по модулю элемента на противоположный.Вывести результат в строку.

Код:
      #include <iostream.h>
#include <stdlib.h>
void main ()



{
randomize();
const int N=5,
M=5;
int a[N][M];
int b[N];
int s=0;
for (int i=0;i<N;i++)
{for (int j=0;j<M;j++)
{a[i][j]=random(10);
b[i]=a[i][1];
cout<<a[i][j]<<",";}
cout<<"\n"<<endl;}




for (int j=1;j<M;j++)
{
if (abs(a[i][j])>abs(b[i]));
b[i]=-a[i][j];
cout<<b[i]<<",";}
cout<<"\n"<<endl;

cin>>s;}
2) Вставить первую строку после строки, в которой находится первый встреченный максимальный элемент.

Код:
#include <iostream.h>
#include <stdlib.h>
void main ()
{
randomize();
const int M=5,
N=5;
int x[M][N];
int rplsArray[M];
int s=0;
for (int i=1;i<M;i++)
{for (int j=1;j<N;j++)
{x[i][j]=random(10);
//rplsArray[M]=a[i][j];//
cout<<x[i][j]<<"  ";}
cout<<"\n"<<endl;}
int max,p,nmrStroki;

for (int j=2;j<N;j++)
{max=x[1][1];
  if (x[1][j]>max) max=x[1][j];}
p=0;
for ( i=2;i<M;i++)
{for (j=1;j<N;j++)
{if (x[i][j]>max)&(p=0);
p=1;
nmrStroki=i;}}

for (i=1;i<N;i++)  {rplsArray[i]=x[1][i];}
for (i=1;i<nmrStroki;i++)
{for (j=1;j< N;j++) {x[i][j]=x[i+1][j];}
for (i=1;i<N;i++) {x[nmrStroki][i]=rplsArray[i];}}

for (i=1;i<M;i++)
{for (int j=1;j<N;j++)
cout<<x[i][j]<<"  ";
cout<<"\n"<<endl;}

cin>>s;
}

Подскажите,где ошибки,пожалуйста?
JiLiYa вне форума Ответить с цитированием
Старый 10.03.2009, 11:51   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
1)
Тут нужно по хорошему два цикла по одному вложению.
Цикл для строк
Цикл для их элементов

Цикл для Колонок
Цикл для их элементов

А у тебя один, и сбором максимума ту не пахнет
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.03.2009, 11:54   #3
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

По первой:
Видимо, забыли про цикл по i. Также вы меняете знак далеко не только у максимального элемента.
И второй массив не нужен.

Код:
#include <iostream.h>
#include <stdlib.h>
#include <time.h>
int main ()
{
srand(time(NULL));
const int N=5, M=5;
int a[N][M];
int i,j,s;

for(i=0;i<N;i++)
 {
  for(j=0;j<M;j++)
   {
    a[i][j] = rand()%10;
    cout.width(4);
    cout<<a[i][j];
   }
  cout<<endl;
 }
cout<<"----------\n";
//-----
for(i=0;i<N;i++)
 {
  s = 0;
  for(j=1;j<M;j++)
   if(abs(a[i][j])>abs(a[i][s]))
    s = j;
  a[i][s] = -a[i][s];
 }
//-----
for(i=0;i<N;i++)
 {
  for(j=0;j<M;j++)
   {
    cout.width(4);
    cout<<a[i][j];
   }
 cout<<endl;
 }

cin.get();
return 0;
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 10.03.2009, 12:09   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

По второй:
Вы объявляете i и j внутри цикла, а используете их и после него.
Насколько я понимаю, вам нужно именно вставить строку, а не заменить ей какую-то другую..
В общем, проще было переписать..

Код:
#include <iostream.h>
#include <stdlib.h>
#include <time.h>
int main ()
{
srand(time(NULL));
const int M=5,N=5;
int x[M][N];
int i,j,max,imax;

for(i=0;i<M;i++)
 {
  for(j=0;j<N;j++)
   {
    x[i][j] = rand()%100;
    cout.width(4);
    cout<<x[i][j];
   }
  cout<<endl;  
 }
cout<<"----------\n";
//------------
max=x[0][0];
imax=0;
for(i=0;i<M;i++)
 for(j=0;j<N;j++)
  if(x[i][j]>max)
   {
    max = x[i][j];
    imax = i;   //запоминаем номер строки
   } 
//--------   
for(i=M;i>imax+1;i--)
 for(j=0;j<N;j++)
   x[i][j] = x[i-1][j];
// вставляем строку
for(j=0;j<N;j++)
 x[imax+1][j] = x[0][j];
 
// выводим
for(i=0;i<M+1;i++)
 {
  for(j=0;j<N;j++)
   {
    cout.width(4);
    cout<<x[i][j];
   }
 cout<<endl;  
 }    


cin.get();
return 0;
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверьте плиз где то ошибки ТРОЯН=) Помощь студентам 2 06.02.2009 15:10
2 задачи - на массив и на матрицу... вызывает затруднение способ их решения. liker_47 Паскаль, Turbo Pascal, PascalABC.NET 5 23.12.2008 14:00
2 задачи на Массив и матрицу посмотрите пжл) Jereme Паскаль, Turbo Pascal, PascalABC.NET 2 17.12.2008 23:56
Помогите решить задачи(есть ошибки в решинии) denisok Помощь студентам 2 30.11.2008 20:12
Подскажите где ошибки? Не работает программа на Паскале ЯншинаВера Помощь студентам 1 21.05.2008 19:47