Форум программистов, компьютерный форум CyberForum.ru

Двумерный массив (найти ошибку в коде) - C++

Восстановить пароль Регистрация
 
jenya5455
1 / 1 / 0
Регистрация: 07.11.2012
Сообщений: 53
12.02.2013, 19:25     Двумерный массив (найти ошибку в коде) #1
всё просто заполнил в ручную один массив, а потом всё перепечаталось во второй массив.
Я по образцу сделал что писал для одномерного массива, а ЭТА падла не работает) и не понятно по чему.

Кто знает поправьте :

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
 
{
 const int n=3 ; 
 const int m=3;
 int mas[n][m];
 int mas1[n][m];
 int i,j,l,k;
  
 for(i=0;i<n;i++)
 {cout<<"\n\n";
    for(j=0;j<m;j++)
    {    cin >> mas[i][j];  }
 }
        //mas[i][j]=rand()%10;
    //  cout<<" "<<mas[i][j];
 
   l=0;
   k=0;
  for (int p=0; p<n;p++){
  for (int b=0; b<m;b++){
      mas1[l][k]=mas[p][b];
      l++;
      k++;}}
      for(int r=0;r<l;r++){
          cout <<"\n\n";  
      for(int w=0;w<k;w++){
         cout <<" "<< mas1[r][w];  
            }}
         
system ("pause");
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.02.2013, 19:25     Двумерный массив (найти ошибку в коде)
Посмотрите здесь:

Двумерный массив, найдите ошибку! C++
Отсортировать массив (Найти ошибку в коде) C++
C++ Найти ошибку в коде
Двумерный массив, не могу найти ошибку C++
C++ двумерный массив поиски ошибки в коде
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ya_noob
_
200 / 144 / 9
Регистрация: 08.10.2011
Сообщений: 432
12.02.2013, 19:37     Двумерный массив (найти ошибку в коде) #2
Цитата Сообщение от jenya5455 Посмотреть сообщение
mas1[l][k]=mas[p][b];
зачем тут переменные l и k? если ты копируешь матрицу, так копируй один в один: mas1[p][b]=mas[p][b];

Цитата Сообщение от jenya5455 Посмотреть сообщение
for(int r=0;r<l;r++){
cout <<"\n\n";
for(int w=0;w<k;w++){
cout <<" "<< mas1[r][w];
}}
опять же при чем тут l и k? размеры матрицы ведь заданы как n и m
MrGrig
176 / 159 / 2
Регистрация: 08.10.2012
Сообщений: 422
12.02.2013, 19:37     Двумерный массив (найти ошибку в коде) #3
В будущем, выкладывайте код в таком виде
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
#include <stdlib.h>
using namespace std;
int main(){
    const int n=3 ; 
    const int m=3;
    int mas[n][m];
    int mas1[n][m];
    int i,j,l,k;
 
    for(i=0;i<n;i++){
        cout<<"\n\n";
        for(j=0;j<m;j++){
            cin >> mas[i][j];
        }
    }
//mas[i][j]=rand()%10;
//  cout<<" "<<mas[i][j];
 
    l=0;
    k=0;
    for (int p=0; p<n;p++){
        for (int b=0; b<m;b++){
            mas1[l][k]=mas[p][b];
            l++;
            k++;
         }
    }
    for(int r=0;r<l;r++){
        cout <<"\n\n"; 
        for(int w=0;w<k;w++){
            cout <<" "<< mas1[r][w]; 
        }
    }
system ("pause");
return 0;
}
ошибка здесть
C++
1
2
3
4
5
6
7
for (int p=0; p<n;p++){
    for (int b=0; b<m;b++){
        mas1[l][k]=mas[p][b];
        l++;
        k++;//Вот эта переменная не обнуляется, соответственно пытаетесь мимо записывать
    }
}
Если честно, вы колете орехи на земле паровым молотком с орбиты марса =)
не нужно инициализировать столько много переменных, если вы их используете только в цикле =)
темболее если вы их там переинициализируете. Компилятор создаст их сам а после выполнения цикла удалит. Имя их не имеет значения, хоть везде i и j будут =)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
#include <stdlib.h>
using namespace std;
int main(){
    const int n=3 ; 
    const int m=3;
    int mas[n][m];
    int mas1[n][m];
 
    for(i=0;i<n;i++){
        cout<<"\n\n";
        for(j=0;j<m;j++){
            cin >> mas[i][j];
        }
    }
//mas[i][j]=rand()%10;
//  cout<<" "<<mas[i][j];
 
    for (int p=0; p<n;p++){
        for (int b=0; b<m;b++){
            mas1[p][b]=mas[p][b];
         }
    }
    for(int r=0;r<l;r++){
        cout <<"\n\n"; 
        for(int w=0;w<k;w++){
            cout <<" "<< mas1[r][w]; 
        }
    }
system ("pause");
return 0;
}
Flexx02
25 / 25 / 0
Регистрация: 26.05.2012
Сообщений: 164
Записей в блоге: 1
12.02.2013, 19:46     Двумерный массив (найти ошибку в коде) #4
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
    const int n=2 ;
    const int m=2;
    int mas[n][m];
    int mas1[n][m];
    int i,j,l,k;
 
    for(i=0;i<n;i++){
        cout<<"\n\n";
        for(j=0;j<m;j++){
            cin >> mas[i][j]; 
        }
    }
    //mas[i][j]=rand()%10;
    // cout<<" "<<mas[i][j];
 
    l=0;
    k=0;
    for (i=0; i<n;i++){
        for (j=0; j<m;j++){
            mas1[l][k]=mas[i][j];
            k++;
        }
        k=0;
        l++;
    }
    for(i=0;i<n;i++){
        cout <<"\n\n";
        for(int j=0;j<m;j++){
            cout <<" "<< mas1[i][j];
        }
    }
 
    system ("pause");
    return 0;
}
Добавлено через 1 минуту
Пока прочитал код уже ответили.....
jenya5455
1 / 1 / 0
Регистрация: 07.11.2012
Сообщений: 53
12.02.2013, 19:49  [ТС]     Двумерный массив (найти ошибку в коде) #5
Отлично спс.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
 
{
 const int n=3 ; 
 const int m=3;
 int mas[n][m];
 int mas1[n][m];
 int i,j,l,k;
  
 for(i=0;i<n;i++)
 {cout<<"\n\n";
    for(j=0;j<m;j++)
    {   // cin >> mas[i][j];    }
 
        mas[i][j]=rand()%10;
    cout<<" "<<mas[i][j];
}}
   l=0;
   k=0;
  for (int p=0; p<n;p++){
  for (int b=0; b<m;b++){
      mas1[p][b]=mas[p][b];
      }
      }
      cout<<"\n\n";
      for(int i=0;i<n;i++){
          cout <<"\n\n";  
      for(int j=0;j<m;j++){
         cout <<" "<< mas1[i][j];  
            }
            }         
            cout<<"\n\n";
system ("pause");
return 0;
}
работает)




C++
1
2
3
4
5
6
for(int i=0;i<n;i++){
          cout <<"\n\n";  
      for(int j=0;j<m;j++){
         cout <<" "<< mas1[i][j];  
            }
            }
терь надо элементы mas1[i][j] возвести в sqrt. если есть время подкиньте 2 строк,а по диагонали элементы матрицы 3х3 ост не изменно.

if (mas1[i][j]!=mas1[i][j]){

тогда mas[i][j]=.... - тут у мня тупняк)
}
MrGrig
176 / 159 / 2
Регистрация: 08.10.2012
Сообщений: 422
12.02.2013, 20:01     Двумерный массив (найти ошибку в коде) #6
Цитата Сообщение от jenya5455 Посмотреть сообщение
терь надо элементы mas1[i][j] возвести в sqrt. если есть время подкиньте 2 строк,а по диагонали элементы матрицы 3х3 ост не изменно.
C++
1
2
3
if(i==j)//не будет трогать главную диогональ если нужна еще и другая написать так if((i==j)||(i+j==n+1)) работает коректно только с квадратными матрицами
    continue;
mas1[i][j]=sqrt(mas[i][j]);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.02.2013, 22:30     Двумерный массив (найти ошибку в коде)
Еще ссылки по теме:

Найти ошибку! Двумерный массив, определить кол., столбцов где хоть один элемент <0 C++
C++ Найти ошибку в коде
C++ Динамический массив - найти ошибку в коде

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
jenya5455
1 / 1 / 0
Регистрация: 07.11.2012
Сообщений: 53
12.02.2013, 22:30  [ТС]     Двумерный массив (найти ошибку в коде) #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <iostream>
#include <stdlib.h>
#include <math.h>
using namespace std;
int main()
 
{
 const int n=3 ; 
 const int m=3;
 int mas[n][m];
 int mas1[n][m];
 int i,j,l,k;
  
 for(i=0;i<n;i++)
 {cout<<"\n\n";
    for(j=0;j<m;j++)
    {   // cin >> mas[i][j];    }
 
        mas[i][j]=rand()%10;
    cout<<" "<<mas[i][j];
}}
   l=0;
   k=0;
  for (int p=0; p<n;p++){
  for (int b=0; b<m;b++){
      mas1[p][b]=mas[p][b];
      }
      }
      cout<<"\n\n";
      for(int i=0;i<n;i++){
          cout <<"\n\n";  
      for(int j=0;j<m;j++){     
      if (i==j){
      continue;
      mas1[i][j]=sqrt(mas1[i][j]);     
                 } 
      cout <<" "<< mas1[i][j];        
            }}
      cout<<"\n\n";
system ("pause");
return 0;
}
Не работает, в корень не возводит и там дагональ должна остаться не тронутой , само условие не понятно и вывод cout << не то.

Добавлено через 4 минуты
Цитата Сообщение от jenya5455 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
      for(int i=0;i<n;i++){
          cout <<"\n\n";  
      for(int j=0;j<m;j++){     
      if (i==j){
      continue;
      mas1[i][j]=sqrt(mas1[i][j]);     
                 } 
      cout <<" "<< mas1[i][j];        
            }}
Вот этот кусок

Добавлено через 1 час 48 минут
Cпасибо всем!!! с нуля написал всё получилось, массив так как sqrt - над было int на float поменять и всё окей.
Yandex
Объявления
12.02.2013, 22:30     Двумерный массив (найти ошибку в коде)
Ответ Создать тему
Опции темы

Текущее время: 02:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru