• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem z programem C++

Cloud VPS
0 głosów
261 wizyt
pytanie zadane 30 listopada 2017 w C i C++ przez parogracz Początkujący (360 p.)

Witam Serdecznie.
Podczas pisania programu w CodeBlocku (język C++) wyszedł mi bardzo dziwny błąd. Zadanie zostało mi powierzone przez mojego nauczyciela w technikum ale jego rozwiązania raczej nie poznam jeżeli nie uzyskam tu pomocy.
Oto jego treść:


Napisz program w który wyświetli :

  • 0000000001
  • 0000000010
  • 0000000100
  • 0000001000
  • 0000010000
  • 0000100000
  • 0001000000
  • 0010000000
  • 0100000000
  • 1000000000

Za pomocą pętel FOR.


Sam oczywiście dzielnie stanąłem na przeciw wyzwaniu i podobny program napisałem:

#include <iostream>

using namespace std;

int macierz[10][10];
int main()
{
    for(int i=0; i<=10; i++)
    {
        for(int m=0; m<=10; m++)
        {
            if(m==10-i)
            {
                macierz[i][m]=1;
            }
            else
            {
                macierz[i][m]=0;
            }
        }
    }

    for(int i=0; i<=10; i++)
    {
        for(int m=0; m<=10; m++)
        {
            cout << macierz[i][m];
        }
        cout << "|" << endl;
    }
    return 0;
}

Jednak wynik zgadza się za wyjątkiem jednej zabłąkanej jedynki.

2 odpowiedzi

+1 głos
odpowiedź 1 grudnia 2017 przez Jedras Maniak (54,860 p.)
wybrane 1 grudnia 2017 przez parogracz
 
Najlepsza

Twój błąd polega na tym, że próbowałeś odnieść się do 10 elementu tablicy w sposób:
tablica[10] (a prawidłowo powinno być tablica[9]).

Działający poprawnie kod:
 

#include <iostream>
 
using namespace std;
 
int macierz[10][10];
int main()
{
    for(int i=0; i<10; i++)
    {
        for(int m=0; m<10; m++)
        {
            if(m==10-i-1)
            {
                macierz[i][m]=1;
            }
            else
            {
                macierz[i][m]=0;
            }
        }
    }
 
    for(int i=0; i<10; i++)
    {
        for(int m=0; m<10; m++)
        {
            cout << macierz[i][m];
        }
        cout << "|" << endl;
    }
    return 0;
}

 

komentarz 1 grudnia 2017 przez parogracz Początkujący (360 p.)
Dziękuję bardzo!
+1 głos
odpowiedź 30 listopada 2017 przez amb00 Bywalec (2,000 p.)

Jest lepsze rozwiązanie tego:

#include<iostream>

using namespace std;

int main()
{
    int n = 10;
    for(int i=0; i<n; ++i)
    {
        for(int j=i; j<n-1; ++j) cout<<'0';
        cout<<'1';
        for(int j=n-i; j<n; ++j) cout<<'0';
        cout<<'\n';
    }
}

 

komentarz 30 listopada 2017 przez parogracz Początkujący (360 p.)
Dziękuję, a czy wie Pan może jaki błąd popełniłem?

Podobne pytania

0 głosów
2 odpowiedzi 410 wizyt
pytanie zadane 30 grudnia 2017 w C i C++ przez kikosiak Obywatel (1,010 p.)
0 głosów
0 odpowiedzi 527 wizyt
0 głosów
1 odpowiedź 481 wizyt
pytanie zadane 4 listopada 2017 w C i C++ przez chucksqll Stary wyjadacz (12,930 p.)

93,453 zapytań

142,448 odpowiedzi

322,718 komentarzy

62,831 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...