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

Двухмерный массив - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
STRAG 92
0 / 0 / 0
Регистрация: 23.10.2010
Сообщений: 59
06.10.2011, 20:16     Двухмерный массив #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
37
38
39
40
41
42
43
44
45
46
47
48
#include<iostream.h>
const int n=3,m=3;
void InArray (float [n][m]);
void Change (float [n][m]);
void PrintArray (float [n][m]);
void main()
{
float a[n][m];
InArray (a);
Change (a);
PrintArray (a);
}
 void InArray (float [n][m])
 cout<<"Vvedite massiv"<<n<<"*"<<m<<endl;
 for (int i=0;i<n;i++)
 {              
 for (int j=0;j<m;j++)
 cin>> a[i][j];
 cout<<endl;
 }
 }
 void Change (float a[i][j])
 {
 for (int i=0;i<n;i++)
 {
 cout<<endl;
 for (int j=0;j<m;j++)
 }
 }
 void PrintArray  (float a[n][m])
 {
 cout<<"Matrica A \n";
 for (int i=0;i<m;i++)
 {
 for (int j=0;j<n;j++)
 cout<<a[j][i];
 cout<<endl;
 }
 }
 void Change (float a[n][m])
 {
 cout<<"Massiv B \n";
 for ( int i>0;i<n;i++)
 {
 for ( int j>0;j<m;j++)
 cout<<" "<<a[i][j];
 }
 }
вот написал код , но он не правильно работает (((( , меняет столбцы местами (
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.10.2011, 20:16     Двухмерный массив
Посмотрите здесь:

Двухмерный массив C++
C++ двухмерный массив..
C++ Двухмерный массив.
двухмерный массив C++
C++ двухмерный массив
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
06.10.2011, 20:28     Двухмерный массив #2
вы на чём писали у меня ваш код на mvc 6 даже не откомпилировался !!! тьма ошибок
Петррр
 Аватар для Петррр
5917 / 3354 / 333
Регистрация: 28.10.2010
Сообщений: 5,926
06.10.2011, 20:34     Двухмерный массив #3
Borland небось
STRAG 92
0 / 0 / 0
Регистрация: 23.10.2010
Сообщений: 59
06.10.2011, 20:39  [ТС]     Двухмерный массив #4
Подскажите тогда как написать на Вижуале С++
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
06.10.2011, 20:59     Двухмерный массив #5
тут синтаксических ошибок куча щас постараюсь переделать по си плюс плюсовски

Добавлено через 56 секунд
Цитата Сообщение от STRAG 92 Посмотреть сообщение
Задание , в двухмерном массиве поменять местами главную диагональ.
кстати а чё эт значит на рисунке можно?

Добавлено через 5 минут
короче вобще бред
вот например тут нужен using namespace std;
далее
если цедура получает (float [n][m])
то тогда в её описание должно быть
(float a[n][m])
STRAG 92
0 / 0 / 0
Регистрация: 23.10.2010
Сообщений: 59
06.10.2011, 21:40  [ТС]     Двухмерный массив #6
3 5 7
5 8 3
0 2 9

вот массив , а нада сделать вот такой

8 5 7
5 3 3
0 2 9

тоесть меняется диагональ
KeyGen
 Аватар для KeyGen
333 / 289 / 6
Регистрация: 07.08.2011
Сообщений: 789
Записей в блоге: 1
07.10.2011, 00:21     Двухмерный массив #7
Цитата Сообщение от STRAG 92 Посмотреть сообщение
3 5 7
5 8 3
0 2 9

вот массив , а надо сделать вот такой

8 5 7
5 3 3
0 2 9

то есть меняется диагональ
Может быть вот такой:

8 5 7
5 9 3
0 2 3

?
STRAG 92
0 / 0 / 0
Регистрация: 23.10.2010
Сообщений: 59
07.10.2011, 12:17  [ТС]     Двухмерный массив #8
Вот переписал код под Вижуал , но неработает
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
#include<iostream>
using namespace std;
const int n=3,m=3;
void InArray (float [n][m]);
void Change (float [n][m]);
void PrintArray (float [n][m]);
void main()
{
float a[n][m];
InArray (a);
Change (a);
PrintArray (a);
}
 void InArray (float a[n][m])
 { 
cout<<"Vvedite massiv"<<n<<"*"<<m<<endl;
 for (int i=0;i<n;i++)
 {              
 for (int j=0;j<m;j++)
 cin>> a[i][j];
 cout<<endl;
 }
 }
void Change ( float a[n][m])
{
    for ( int i=0;i<n;i++)
    {
        for ( int j=0;j<m;j++)
    }
}
void PrintArray ( float a[n][m])
{
    cout<<"Matrica A \n";
    for ( int i=0;i<n;i++)
    {
        for( int j=0;j<m;j++)
            cout<<a[j][i]<<" ";
        cout<<endl;
    }
}
co6ak
Кошковед
 Аватар для co6ak
403 / 496 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
07.10.2011, 12:36     Двухмерный массив #9
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <iostream>
#include <stdlib.h>
#include <time.h>
 
void print  ( float ** , int );
void fill   ( float ** , int );
void change ( float ** , int );
 
int main ( int argc, char** argv )
{
    srand( time ( NULL ) );
    int N;
    std::cout << "Enter size (N): ";
    std::cin  >> N;
 
    float ** matr = new float * [ N ];
    for ( int i = 0; i < N; i ++ )
        matr[i] = new float [ N ];
    fill    ( matr, N );
    print   ( matr, N );
    change  ( matr, N );
    system("pause");
    return 0;
}
 
void print ( float ** matr, int size )
{
    for ( int i = 0; i < size; i ++ )
    {
        std::cout << std::endl;
        for ( int j = 0; j < size; j ++ )
            std::cout << "\t" << matr[i][j];
    }
}
 
void fill (float ** matr, int size)
{
    for ( int i = 0; i < size; i ++ )
    {
        for ( int j = 0; j < size; j ++ )
        {
            matr[i][j]  = rand() % 50 - rand() % 25;
            matr[i][j] /= rand() % 15;
        }
    }
}
void change(float ** matr, int size)
{
    for ( int i = 0; i < size; i ++ )
    {
        float tmp = matr[i][i];
        matr[i][i] = matr[i][ size -1 -i ];
        matr[i][size -1 - i] = tmp;
    }
    print(matr, size);
}
должно работать. не проверял.
если что - ошибки скинь сюда
STRAG 92
0 / 0 / 0
Регистрация: 23.10.2010
Сообщений: 59
07.10.2011, 12:46  [ТС]     Двухмерный массив #10
Цитата Сообщение от co6ak Посмотреть сообщение
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <iostream>
#include <stdlib.h>
#include <time.h>
 
void print  ( float ** , int );
void fill   ( float ** , int );
void change ( float ** , int );
 
int main ( int argc, char** argv )
{
    srand( time ( NULL ) );
    int N;
    std::cout << "Enter size (N): ";
    std::cin  >> N;
 
    float ** matr = new float * [ N ];
    for ( int i = 0; i < N; i ++ )
        matr[i] = new float [ N ];
    fill    ( matr, N );
    print   ( matr, N );
    change  ( matr, N );
    system("pause");
    return 0;
}
 
void print ( float ** matr, int size )
{
    for ( int i = 0; i < size; i ++ )
    {
        std::cout << std::endl;
        for ( int j = 0; j < size; j ++ )
            std::cout << "\t" << matr[i][j];
    }
}
 
void fill (float ** matr, int size)
{
    for ( int i = 0; i < size; i ++ )
    {
        for ( int j = 0; j < size; j ++ )
        {
            matr[i][j]  = rand() % 50 - rand() % 25;
            matr[i][j] /= rand() % 15;
        }
    }
}
void change(float ** matr, int size)
{
    for ( int i = 0; i < size; i ++ )
    {
        float tmp = matr[i][i];
        matr[i][i] = matr[i][ size -1 -i ];
        matr[i][size -1 - i] = tmp;
    }
    print(matr, size);
}
должно работать. не проверял.
если что - ошибки скинь сюда
Мне нужно в Двухмерном массиве поменять местами главную диагональ.
co6ak
Кошковед
 Аватар для co6ak
403 / 496 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
07.10.2011, 12:47     Двухмерный массив #11
это и есть двумерный массив. тока квадратный
STRAG 92
0 / 0 / 0
Регистрация: 23.10.2010
Сообщений: 59
07.10.2011, 13:14  [ТС]     Двухмерный массив #12
а можно пожалуйста как то по проще его написать ???
co6ak
Кошковед
 Аватар для co6ak
403 / 496 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
07.10.2011, 14:35     Двухмерный массив #13
куда уж проще-то.

максимум то приходит на ум - после #include <iostream>
написать using namespace std;и убрать все std::

Добавлено через 51 секунду
и убрать #include <time.h>
+ убрать srand( time ( null ) );
KeyGen
 Аватар для KeyGen
333 / 289 / 6
Регистрация: 07.08.2011
Сообщений: 789
Записей в блоге: 1
08.10.2011, 02:13     Двухмерный массив #14
Цитата Сообщение от STRAG 92 Посмотреть сообщение
3 5 7
5 8 3
0 2 9

вот массив , а нада сделать вот такой

8 5 7
5 3 3
0 2 9

тоесть меняется диагональ
Сделал как ты заказывал:
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
43
44
45
46
47
48
49
50
51
52
#include <iostream>
using namespace std;
    
int main()
{
    setlocale(LC_ALL, "rus");
    
    int mass[3][3]={};
    
    mass[0][0]=3;
    mass[0][1]=5;
    mass[0][2]=7;
    mass[1][0]=5;
    mass[1][1]=8;
    mass[1][2]=3;
    mass[2][0]=0;
    mass[2][1]=2;
    mass[2][2]=9;
    
    int temp=0;
    
    cout << "ÈñõîäГ*ûé:\n";
    for (int i=0; i<3; i++){
        for (int j=0; j<3; j++)
        cout << mass[i][j];
        cout << endl;
        }
        
        cout << endl;
 
    for (int i=0; i<3; i++)
        for (int j=0; j<3; j++)
        switch(mass[i][j]){
        case 3: if(temp==0)
                mass[i][j]=8;
                temp++;
                break;
        case 8: mass[i][j]=3;
                break;
                }
    
    cout << "Ïîëó÷èëîñü:\n";
    for (int i=0; i<3; i++){
        for (int j=0; j<3; j++)
        cout << mass[i][j];
        cout << endl;
        }
    
    cout << "\n\n\n";
    system("PAUSE");
    return 0;
}
Миниатюры
Двухмерный массив  
KeyGen
 Аватар для KeyGen
333 / 289 / 6
Регистрация: 07.08.2011
Сообщений: 789
Записей в блоге: 1
08.10.2011, 02:21     Двухмерный массив #15
Цитата Сообщение от co6ak Посмотреть сообщение
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <iostream>
#include <stdlib.h>
#include <time.h>
 
void print  ( float ** , int );
void fill   ( float ** , int );
void change ( float ** , int );
 
int main ( int argc, char** argv )
{
    srand( time ( NULL ) );
    int N;
    std::cout << "Enter size (N): ";
    std::cin  >> N;
 
    float ** matr = new float * [ N ];
    for ( int i = 0; i < N; i ++ )
        matr[i] = new float [ N ];
    fill    ( matr, N );
    print   ( matr, N );
    change  ( matr, N );
    system("pause");
    return 0;
}
 
void print ( float ** matr, int size )
{
    for ( int i = 0; i < size; i ++ )
    {
        std::cout << std::endl;
        for ( int j = 0; j < size; j ++ )
            std::cout << "\t" << matr[i][j];
    }
}
 
void fill (float ** matr, int size)
{
    for ( int i = 0; i < size; i ++ )
    {
        for ( int j = 0; j < size; j ++ )
        {
            matr[i][j]  = rand() % 50 - rand() % 25;
            matr[i][j] /= rand() % 15;
        }
    }
}
void change(float ** matr, int size)
{
    for ( int i = 0; i < size; i ++ )
    {
        float tmp = matr[i][i];
        matr[i][i] = matr[i][ size -1 -i ];
        matr[i][size -1 - i] = tmp;
    }
    print(matr, size);
}
должно работать. не проверял.
если что - ошибки скинь сюда
Это что за жесть?) Компилировал: Dev-C++ 4.9.9.2
Миниатюры
Двухмерный массив  
aeshes
 Аватар для aeshes
437 / 200 / 13
Регистрация: 07.10.2011
Сообщений: 462
08.10.2011, 02:51     Двухмерный массив #16
KeyGen, просто выражение
C++
1
rand() % 15
может вернуть 0, если случайное число делится на 15, а на него выполняется деление, отсюда и значения в матрице 1.INF

STRAG 92, Из твоего примера
3 5 7
5 8 3
0 2 9
вот массив , а нада сделать вот такой
8 5 7
5 3 3
0 2 9
тоесть меняется диагональ
вообще не понятно, с чем должна меняться главная диагональ? В примере у тебя поменялись местами элементы А11 и А22. Если ты уточнишь задание, то тебе и помогут быстрее и качественнее, иначе каждый пишет код так, как понял задачу
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
08.10.2011, 04:28     Двухмерный массив #17
я еще вчера ночью думал написать что было бы неплохо уточнить задание, а потом пошел курить и забыл. Неужели кто-то из запостивших коды, или просто текст понял что такое "поменять местами главную диагональ" ?
KeyGen
 Аватар для KeyGen
333 / 289 / 6
Регистрация: 07.08.2011
Сообщений: 789
Записей в блоге: 1
08.10.2011, 15:59     Двухмерный массив #18
Вот диагональ двигается:
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <iostream>
#include <ctime>
using namespace std;
    
int main()
{
    setlocale(LC_ALL, "rus");
    
    int mass[3][3]={};
    
    mass[0][0]=3;
    mass[0][1]=5;
    mass[0][2]=7;
    mass[1][0]=5;
    mass[1][1]=8;
    mass[1][2]=3;
    mass[2][0]=0;
    mass[2][1]=2;
    mass[2][2]=9;
    
    cout << "ÈñõîäГ*ûé:\n";
    for (int i=0; i<3; i++){
        for (int j=0; j<3; j++)
        cout << mass[i][j];
        cout << endl;
        }
        
        cout << endl;
        int temp;
        int schet=1;
    
    for (;;){
        temp=mass[0][0];
        mass[0][0]=mass[1][1];
        mass[1][1]=mass[2][2];
        mass[2][2]=temp;
        
        
        float secs=1.5;
          clock_t delay = secs * CLOCKS_PER_SEC; 
          clock_t start = clock();
          while (clock() - start<delay);
          system("CLS");
        
        cout << "ÎáìåГ* В№ " << schet << " :\n";
    for (int i=0; i<3; i++){
        for (int j=0; j<3; j++)
        cout << mass[i][j];
        cout << endl;
        }
        schet++;
        }
    
    cout << "\n\n\n";
    system("PAUSE");
    return 0;
}
Миниатюры
Двухмерный массив   Двухмерный массив  
STRAG 92
0 / 0 / 0
Регистрация: 23.10.2010
Сообщений: 59
08.10.2011, 21:11  [ТС]     Двухмерный массив #19
нада сделать в виде функций , и так что бы двухмерный массив был описан так как у меня в Функции InArray.

Добавлено через 3 минуты
нада сделать в виде функций , и так что бы двухмерный массив был описан так как у меня в Функции InArray.

вот так вот нада сделать , задание.

Ввод:

3 5 7
1 0 8
9 4 5

Вывод:

5 5 7
1 3 8
9 4 0

Смещение идёт с верхнего левого угла в нижний правый , и предедыщуй элемент становиться на место того что стоял.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.10.2011, 23:14     Двухмерный массив
Еще ссылки по теме:

Двухмерный массив C++
C++ Двухмерный массив
Двухмерный массив C++

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

Или воспользуйтесь поиском по форуму:
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
08.10.2011, 23:14     Двухмерный массив #20
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define size    5
int main(){
    int i, k, arr[size][size], tmp;
    srand(time(0));
    for(i = 0; i < size; ++i)
        for(k = 0; k < size; ++k)
            arr[i][k] = rand() % 20 + 1;
 
    printf("\nsource array:\n");
    for(i = 0; i < size; ++i){
        for(k = 0; k < size; ++k)
            printf("%3d", arr[i][k]);
        printf("\n");
    }
 
    i = 0; k = 0;
    tmp = arr[i][k];
    while (i < size - 1)
        arr[i++][k++] = arr[i + 1][k + 1];
    arr[size - 1][size - 1] = tmp;
 
    printf("\nmaked array:\n");
    for(i = 0; i < size; ++i){
        for(k = 0; k < size; ++k)
            printf("%3d", arr[i][k]);
        printf("\n");
    }
    printf("\n\n");
    return 0;
}
консоль
source array:
2 11 13 15 2
19 9 2 1 12
14 13 11 8 14
9 7 4 17 16
1 4 12 15 2

maked array:
9 11 13 15 2
19 11 2 1 12
14 13 17 8 14
9 7 4 2 16
1 4 12 15 2
Yandex
Объявления
08.10.2011, 23:14     Двухмерный массив
Ответ Создать тему
Опции темы

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