Wątek przeniesiony 2014-08-05 12:54 z C/C++ przez ŁF.

zadanie z tablicami

0

Mam takie zadanie:

napisz program, w którym będzie tablica dwuwymiarowa o rozmiarach: 10 rzędów i 3 kolumny.
Do elementów zerowej kolumny załaduj kolejne liczby naturalne (i), do elementów następnej kolumny załaduj ich kwadraty (ii), a do następnej sześciany (ii*i). Wypisz zawartość tej tablicy na ekranie - właśnie w postaci trzech pionowych kolumn.

Moje rozwiązanie:

 #include <iostream>
using namespace std;

int main()
{
    int tablica[10][3];

    for(int i = 0 ; i < 10 ; i++)
    {
        tablica[0][i] = i;
        tablica[1][i] = i*i;
        tablica[2][i] = i*i*i;

    }

    for(int i = 0; i < 10; i++)
    {
        cout << "tablica[0]" << "[" << i << "]" << " = " << tablica[0][i] << "\t";
        cout << "tablica[1]" << "[" << i << "]" << " = " << tablica[1][i] << "\t";
        cout << "tablica[2]" << "[" << i << "]" << " = " << tablica[2][i] << endl;
    }

    system("pause");
}

I myślałem, że jest ok ale czemu np. tablica[1][0] = 3, przecież i*i dla i = 0 powinno dać 0

1

Powinno być int tablica[3][10]. W tym tkwi problem.

0

przerobiłem kod i teraz wygląda to tak jak to ocenicie ?, nie za dużo tego kodu ?:

 #include <iostream>
using namespace std;

int main()
{
    int tablica[10][3];

    for(int i = 0, a = 0 ; a < 10 ; i++, a++)
    {
        tablica[a][0] = i;
        tablica[a][1] = i*i;
        tablica[a][2] = i*i*i;

    }

    for(int a = 0; a < 10;  a++)
    {
        cout << "tablica[" << a << "]" << "[0]" << " = " << tablica[a][0] << "\t";
        cout << "tablica[" << a << "]" << "[1]" << " = " << tablica[a][1] << "\t";
        cout << "tablica[" << a << "]" << "[2]" << " = " << tablica[a][2] << endl;

    }

    system("pause");
}
1

W drugiej pętli niepotrzebna Ci zmienna "i", bo jej nie używasz. Poza tym na upartego kod z drugiej pętli można przenieść do pierwszej.

0

zmodyfikowałem jeszcze ten mój pierwszy kod tak jak napisał shrum, co powiecie można coś ulepszyć ?:

 #include <iostream>
using namespace std;

int main()
{
    int tablica[10][3];

    for(int i = 0 ; i < 10 ; i++)
    {
        tablica[i][0] = i;
        tablica[i][1] = i*i;
        tablica[i][2] = i*i*i;

    }

    for(int i = 0; i < 10; i++)
    {
        cout << "tablica" << "[" << i << "]" << "[0]" << " = " << tablica[i][0]<< "\t";
        cout << "tablica" << "[" << i << "]" << "[1]" << " = " << tablica[i][1]<< "\t";
        cout << "tablica" << "[" << i << "]" << "[2]" << " = " << tablica[i][2]<< endl;
    }

    system("pause");
} 

ewentualnie można w 1 forze zrobić:

  #include <iostream>
using namespace std;

int main()
{
    int tablica[10][3];

    for(int i = 0 ; i < 10 ; i++)
    {
        tablica[i][0] = i;
        tablica[i][1] = i*i;
        tablica[i][2] = i*i*i;

        cout << "tablica" << "[" << i << "]" << "[0]" << " = " << tablica[i][0]<< "\t";
        cout << "tablica" << "[" << i << "]" << "[1]" << " = " << tablica[i][1]<< "\t";
        cout << "tablica" << "[" << i << "]" << "[2]" << " = " << tablica[i][2]<< endl;

    }

    system("pause");
}
1
#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    const int rozmiarKolumny = 10;
    const int rozmiarWiersza = 3;
    int tablica[rozmiarKolumny][rozmiarWiersza];

    for (int aktualnaKolumna = 0 ; aktualnaKolumna < rozmiarKolumny ; aktualnaKolumna++)
    {
        for(int aktualnyWiersz = 0 ; aktualnyWiersz < rozmiarWiersza ; aktualnyWiersz++)
         {
            tablica[aktualnaKolumna][aktualnyWiersz] = pow(aktualnaKolumna, aktualnyWiersz+1);   
         }
    }

    /*wyswietlanie zrob na podstawie wypelniania*/

    system("pause");
}

EDIT. WTF JEST Z TYM FORMATOWANIEM!

0

Ciągle myślę jak zapisać to w pętli for i nie mogę tego rozpracować:

      cout << "tablica" << "[" << i << "]" << "[0]" << " = " << tablica[i][0]<< "\t";
        cout << "tablica" << "[" << i << "]" << "[1]" << " = " << tablica[i][1]<< "\t";
        cout << "tablica" << "[" << i << "]" << "[2]" << " = " << tablica[i][2]<< endl; 

Próbowałem coś takiego:

for(int i = 0, a = 0; i < 10; i++)
        {
            cout << "tablica" << "[" << i << "]" << "[" << a << "]" << tablica[i][a]<< "\t";
            if(i  == 9) a++;
        } 
1

Ja zapisał bym to tak

#include <iostream>

using namespace std;

int main(void)
{
    int tab[10][3];
    for (int i = 0;i < 10; i++)
    {
        tab[i][0] = i;
        tab[i][1] = i * i;
        tab[i][2] = i * i * i;
    }
    for (int i = 0;i < 10;i++)
    {
        for (int a = 0;a<3; a++)
        {
            cout << "tablica [" << a << "]"  << "[" << i << "]" << " = " << tab[i][a] << "\t";
        }
        cout << endl;
    }

    return 0;
}
0

Mój program wygląda teraz tak i wszystko działa, dzięki:

#include <iostream>
using namespace std;

int main()
{
    int tablica[10][3];

    for(int i = 0 ; i < 10 ; i++)
    {
        tablica[i][0] = i;
        tablica[i][1] = i*i;
        tablica[i][2] = i*i*i;

    }

        for(int i = 0; i < 10; i++)
        {
            for(int a = 0; a < 3; a++)
            {
                cout << "tablica" << "[" << a << "]" << "[" << i << "]" << " = " << tablica[a][i]<< "\t";

            }
            cout << endl;

        }

    system("pause");
}
0

A instrukcja wypisująca nie powinna raczej tak wyglądać:

cout << "tablica" << "[" << i << "]" << "[" << a << "]" << " = " << tablica[i][a] << "\t";

??

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0