2015-03-02 2 views
-5

Это то, что он должен выглядеть, но мое это переворачивают на другую сторонуНаписать программу в C++, что выводить матрицу, как показано ниже

00001 
00021 
00321 
04321 
54321 

И, пожалуйста, объясните мне, если вы можете.

Он сказал, что мне нужно добавить более подробную информацию, поэтому я пишу это, не знаю, для чего.

#include<iostream> 
#include<time.h> 
#include<stdlib.h> 
using namespace std; 

int main() 
{ 
    int t=0,n,tab[100][100]={0},k,j,a; 
    cin>>n; 

    for(int i=0;i<n;i++) 
    { 
     k=i; 
     for(int j=0;j<n;j++) 
     { 
      if(j<=i) 
       tab[i][j]=k+1; 

      k--; 
     } 
    } 

    for(int i=0;i<n;i++) 
    { 
     for(int j=0;j<n;j++) 
      cout<<tab[i][j]<<" "; 

     cout<<endl; 
    } 

    return 0; 
} 
+0

Какова ваша конкретная проблема? – Kevin

+1

Похож на хороший вариант использования отладчика. Когда вы использовали отладчик, какая строка вызывает проблему? –

+0

Ваш код не использует файлы include.h или 'cstdlib'. –

ответ

0

Вот два подхода: один, который использует стандартные алгоритмы и функции

#include <iostream> 
#include <numeric> 
#include <iterator> 


int main() 
{ 
    const size_t N = 5; 
    int a[N][N] = {}; 

    for (size_t i = 0; i < N; i++) 
    { 
     std::iota(std::reverse_iterator<int *>(a[i] + N), 
        std::next(std::reverse_iterator<int *>(a[i] + N), i + 1), 
        1); 
    } 

    for (const auto &row : a) 
    { 
     for (int x : row) std::cout << x << ' '; 
     std::cout << std::endl; 
    } 

    return 0; 
} 

и другие, которые используются только петли

#include <iostream> 


int main() 
{ 
    const size_t N = 5; 
    int a[N][N] = {}; 

    for (size_t i = 0; i < N; i++) 
    { 
     for (size_t j = 1; j <= i + 1; ++j) a[i][N - j] = j; 
    } 

    for (const auto &row : a) 
    { 
     for (int x : row) std::cout << x << ' '; 
     std::cout << std::endl; 
    } 

    return 0; 
} 

обе программы выходы

0 0 0 0 1 
0 0 0 2 1 
0 0 3 2 1 
0 4 3 2 1 
5 4 3 2 1 
Смежные вопросы