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

Выводим двумерный массив! - C++

Восстановить пароль Регистрация
 
Jumper19
 Аватар для Jumper19
13 / 13 / 0
Регистрация: 27.12.2010
Сообщений: 83
13.05.2011, 21:51     Выводим двумерный массив! #1
Здравствуйте!
Какие есть способы чтобы вывести двумерный массив в С++?

Например вот я ввожу массив с клавы без елементов которые меньше 0 и он выводится ровно, вот так:
http://i037.***********/1105/4d/3ab23517d168.jpg

Ну вот а если рандомно заполнить массив то он какой-то кривой:
http://s004.***********/i205/1105/56/3700c6288355.jpg

Как сделать красиво!?

Вот код программы, пишите прямо там в процедуре OUT!

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
58
59
60
61
62
63
64
65
66
67
68
69
70
// 32.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
void kl (int x[100][100], int n, int m)
{
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<m; j++)
        {
            cin>>x[i][j];
        }
    }
}
 
void rand (int x[100][100], int n, int m)
{
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<m; j++)
        {
            x[i][j]=rand()%100-50;
        }
    }
}
 
void out (int x[100][100], int n, int m)
{
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<m; j++)
        {
            cout<<"["<<x[i][j]<<"]"<<"  ";
        }
        cout<<endl;
    }
}
 
void main ()
{
    setlocale (0, "rus");
    int x[100][100];
    int n, m, v;
    cout<<"Введите размеры массива 'MxN'"<<"\n"<<"N: ";
    cin>>n;
    cout<<"M: ";
    cin>>m;
    cout<<"Как заполнить массив?"<<"\n"<<"1 - KEYBOARD"<<"\n"<<"2 - RANDOM"<<"\n";
    cin>>v;
    switch (v)
    {
    case 1:
        {
            kl (x, n, m);
        }
        break;
    case 2:
        {
            rand (x, n, m);
        }
        break;
    }
    cout<<"Ваш массив:"<<"\n";
    out (x, n, m);
    system ("pause");
}
Заранее благодарен!

Добавлено через 26 секунд
А и еще, можете написать какие есть вообще варианты вывода массива!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.05.2011, 21:51     Выводим двумерный массив!
Посмотрите здесь:

C++ динамический двумерный массив (заполнить двумерный массив неизвестной длины) C++
Ошибка в двумерном массиве, программа проста: обьявляем и инициализируем двумерный массив и выводим на экран, на экране одни каракули!!! C++
Дан двумерный массив размерностью 4*5. Сформировать одномерный массив C++
C++ Как можно вложить двумерный массив в двумерный?
Создать массив, выводим сумму всех нечетных/четных элементов, найти минимальный и максимальный элементы C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
13.05.2011, 21:54     Выводим двумерный массив! #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iomanip>
...
void out (int x[100][100], int n, int m)
{
        for (int i=0; i<n; i++)
        {
                for (int j=0; j<m; j++)
                {
                        cout<< setw(5) << "["<<x[i][j]<<"]"<<"  ";
                }
                cout<<endl;
        }
}
Jumper19
 Аватар для Jumper19
13 / 13 / 0
Регистрация: 27.12.2010
Сообщений: 83
13.05.2011, 22:00  [ТС]     Выводим двумерный массив! #3
Вот так тогда получше будет:

C++
1
cout<<"["<<setw(3)<<x[i][j]<<"] ";
Спасибо!
Ma3a
Эксперт C++
612 / 456 / 31
Регистрация: 28.01.2011
Сообщений: 605
13.05.2011, 22:03     Выводим двумерный массив! #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <functional>
#include <algorithm>
#include <iterator>
...
struct ArrayPrinter : public std::binary_function<int *,int,void>
    {
    void operator() (int * arr,int dim) const
        {
        std::copy(arr,arr + dim, std::ostream_iterator<int>(std::cout, " "));
        std::cout << std::endl;
        }
    };
 
void out(int x[100][100], int n , int m)
    {
    std::for_each(x,x + n, std::bind2nd(ArrayPrinter(),m));
    }
Yandex
Объявления
13.05.2011, 22:03     Выводим двумерный массив!
Ответ Создать тему
Опции темы

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