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";

??

0
#include <iostream>
#include<cmath>
using namespace std;
 
int main()
{
    int tablica[10][3];
 
    for(int i = 0 ; i < 10 ; i++)
    {
    	for(int j =0;j<3;j++)
        tablica[i][j] = pow(i,(j+1)); //i do potęgi j
    }
 
    for(int i = 0; i < 10; i++)
    {
    for(int j = 0; j < 3; j++)
            {
                cout << "tablica" << "[" << i << "]" << "[" << j << "]" << " = " << tablica[i][j]<< "\t";
 
            }
            cout << endl;
 
    }
 
    system("pause");
}

Tak powinien wyglądać finalny kod. (Zamieniłem a na j, co by to się mniej myliło)

1

Sugerowałbym inną formę ostateczną:
1.

#include <iostream>
#include <iomanip>
using namespace std;
 
int main()
  {
   int tablica[10][3];
 
   for(int y=0;y<10;++y) for(int x=0,p=1;x<3;++x) tablica[y][x]=(p*=y);
   for(int y=0;y<10;++y,cout<<endl) for(int x=0,p=1;x<3;++x) cout<<setw(8)<<tablica[y][x];
   cin.get();
   return 0;
  }
#include <iostream>
#include <iomanip>
using namespace std;
 
int main()
  {
   for(int y=0;y<10;++y,cout<<endl) for(int x=0,p=y,p=1;x<3;++x) cout<<setw(8)<<(p*=y);
   cin.get();
   return 0;
  }

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