1

Тема: Не коректно виводить матрицю

#include <iostream>
#include <iomanip>
#define SIZE 10

using namespace std;

void printArray(int array[SIZE][SIZE]);

int main() {
    int array[SIZE][SIZE];
    printArray(array);

    return 0;
}

void printArray(int array[SIZE][SIZE]) {
    for (int j = 0; j < SIZE; j++) {
        for (int k = 0; k < SIZE; k++) {
            cout << setw(5) << array[j][k];
        }
        cout << endl;
    }
}

Виводить кожні значення масиву як -87867596. Як зробити щоб було від 1 до 10? Начеб-то все правильно

2

Re: Не коректно виводить матрицю

Опишіть завдання, повністю, дослівно, зі всім, що дано, і що програма має вивести на екран.
І наведіть приклад того, що має вивести програма.

3 Востаннє редагувалося FakiNyan (26.10.2017 17:28:00)

Re: Не коректно виводить матрицю

можу припустити - оті значення не ініціалізовані
і якщо таки придивитися, то ініцілізації елементів масиву там не видно

Подякували: koala1

4

Re: Не коректно виводить матрицю

FakiNyan написав:

можу припустити - оті значення не ініціалізовані

Так і є. Я просто не розумію, для чого там масив взагалі.

5

Re: Не коректно виводить матрицю

leofun01 написав:
FakiNyan написав:

можу припустити - оті значення не ініціалізовані

*SCRATCH*
Так і є. Я просто не розумію, для чого там масив взагалі.

може задачка така - вивести елементи масиву

Подякували: leofun011

6 Востаннє редагувалося blizzard (26.10.2017 18:25:43)

Re: Не коректно виводить матрицю

Ну потрібно зробити ось таке завдання.

Але в мене навіть не виводить числа0)

Post's attachments

Безымянный.png 4.6 kb, 110 downloads since 2017-10-26 

Подякували: leofun011

7

Re: Не коректно виводить матрицю

баньте за російську в імені картинки

Подякували: leofun011

8

Re: Не коректно виводить матрицю

Щоб взяти з тарілки яблуко, треба спершу покласти його на тарілку.
Щоб вивести змінну, треба спершу її ініціалізувати, тобто надати їй значення. А у вас ніде цього не спостерігається - ви виводите значення з пам'яті, куди нічого до того не клали. В результаті маєте сміття - те, що було в пам'яті до запуску програми.
Якщо такого розжовування недостатньо, скажу так:

void main(){
  int x;
  cout<<x;
}

виведе те саме казна-що. Може, 0, може, -23846234, може, 834289342.
А от

void main(){
  int x=5;
  cout<<x;
}

виведе 5 і нічого, крім 5.

Подякували: leofun01, bunyk, ostap34PHP, blizzard4

9

Re: Не коректно виводить матрицю

koala написав:

Щоб взяти з тарілки яблуко, треба спершу покласти його на тарілку.

Класна метафора. Тепер коли буду комусь пояснювати про ініціалізацію, буду казати "щоб дістати зі смітника яблуко, треба аби спершу хтось кинув в смітник яблуко, інакше дістанемо лише сміття". :)

Подякували: koala, ReAl2

10

Re: Не коректно виводить матрицю

До мене так і не дійшло, для чого там масив.
Ось робочий приклад:

// main.cpp
#include <stdio.h>

void printWeirdTable(unsigned int columns, unsigned int rows, int startValue)
{
    bool triangle, cltr = columns < rows;
    unsigned int x, y(0u), top, bottom,
        min(cltr ? columns : rows);
    int v(0u);
    printf("\r\n");
    while(y < rows)
    {
        x = 0u;
        while(x < columns)
        {
            top = columns + y - x;
            bottom = rows + x - y;
            triangle = false;
            if(top < min)
            {
                v = columns * rows - ((top * (top - 1)) >> 1) - y;
                triangle = true;
            }
            if(bottom < min)
            {
                v = ((bottom * (bottom - 1)) >> 1) + rows - y;
                triangle = true;
            }
            if(!triangle)
            {
                v = ((min * (min - 1)) >> 1) + (bottom - min) * min
                    + (cltr ? columns - x : rows - y);
            }
            printf("%4i", --v + startValue);
            ++x;
        }
        printf("\r\n");
        ++y;
    }
}

int main()
{
    // 9 елементів в рядку і 9 елементів в стовпці, починаємо з 1.
    printWeirdTable(9u, 9u, 1);
    printf("\r\n");
    return 0;
}
Подякували: blizzard1