Skocz do zawartości

Temat został przeniesiony do archiwum

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

g00ras

[C++] Tablica dwuwymiarowa

Rekomendowane odpowiedzi

Muszę napisać program który tworzy tablicę 10x10 i wyświetli ją na pokazanie niżej sposoby:

 


0 0 0 0 0 0 0 0 0 10
0 0 0 0 0 0 0 0 9 0
0 0 0 0 0 0 0 8 0 0
0 0 0 0 0 0 7 0 0 0
0 0 0 0 0 6 0 0 0 0
0 0 0 0 5 0 0 0 0 0
0 0 0 4 0 0 0 0 0 0
0 0 3 0 0 0 0 0 0 0
0 2 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 2 0
0 0 0 0 0 0 0 3 0 0
0 0 0 0 0 0 4 0 0 0
0 0 0 0 0 5 0 0 0 0
0 0 0 0 6 0 0 0 0 0
0 0 0 7 0 0 0 0 0 0
0 0 8 0 0 0 0 0 0 0
0 9 0 0 0 0 0 0 0 0
10 0 0 0 0 0 0 0 0 0

1 1 0 0 0 0 0 0 0 0
2 4 0 0 0 0 0 0 0 0
3 9 0 0 0 0 0 0 0 0
4 16 0 0 0 0 0 0 0 0
5 25 0 0 0 0 0 0 0 0
6 36 0 0 0 0 0 0 0 0
7 49 0 0 0 0 0 0 0 0
8 64 0 0 0 0 0 0 0 0
9 81 0 0 0 0 0 0 0 0
10 100 0 0 0 0 0 0 0 0

 

Nie do końca wiem jak mam się za to zabrać. Utworzyć tablicę wypełnić ją zerami i potem stosując pętle for wypełnić ją konkretnymi liczbami?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Tutaj masz podstawę resztę sam dopisz.

 

Dla nie znanej wielkości tablicy (rozmiar podawany podczas działania programu) trzeba zmienić na dynamiczną tablicę.

 

Możesz rozdzielić wyświetlanie i wypełnianie na osobne funkcję. Do wyświetlania wystarczy przekazać tablicę normalnie, do uzupełniania raczej będą potrzebne wskaźniki.

 

    int tab[10][10];

   // zerowanie
   for (int i = 0; i < 10; ++i)
       for (int j = 0; j < 10; ++j)
           tab[i][j] = 0;

   // wyswietlenie
   for (int i = 0; i < 10; ++i)
   {
       for (int j = 0; j < 10; ++j)
           cout << tab[i][j] << " ";
       cout << "\n";
   }

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Wyznaczniki są zbędne.

Dla pierwszej tablicy:

int n=10;

for (int i = 0; i < 10; ++i)

for (int j = 0; j < 10; ++j)

{

tab[j] = 0;

if (j==n){tab[j]=n;n--;}

}

Dla drugiej pomyśl.

Dla trzeciej:

Zrób pętlę która idzie po wszystkich wierszach, ale kolumnach tylko 1 i 2 element.

if 1 element daj mu wartość równą numerowi kolumny +1

if 2 - tab[j]=tab[j-1]*tab[j-1];

Potem robisz znowu petlę która wyzeruje pola we wszystkich wierszach, ale kolumanach od 3 do 10.

 

No i wyświetlasz tak jak podał kolega wyżej

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

/*

0 0 0 0 0 0 0 0 0 10

0 0 0 0 0 0 0 0 9 0

0 0 0 0 0 0 0 8 0 0

0 0 0 0 0 0 7 0 0 0

0 0 0 0 0 6 0 0 0 0

0 0 0 0 5 0 0 0 0 0

0 0 0 4 0 0 0 0 0 0

0 0 3 0 0 0 0 0 0 0

0 2 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 0 0

*/

 

int tab[10][10];

int pos = 10;

 

for ( int i = 0; i < 10; i++ )

{

for ( int j = 0; j < 10; j++ )

{

if ( j == pos-1 ){

tab[j] = pos;

pos--;

}

else

tab[j] = 0;

 

cout << tab[j] << " ";

}

 

cout << "\n";

}

 

 

/*

0 0 0 0 0 0 0 0 0 1

0 0 0 0 0 0 0 0 2 0

0 0 0 0 0 0 0 3 0 0

0 0 0 0 0 0 4 0 0 0

0 0 0 0 0 5 0 0 0 0

0 0 0 0 6 0 0 0 0 0

0 0 0 7 0 0 0 0 0 0

0 0 8 0 0 0 0 0 0 0

0 9 0 0 0 0 0 0 0 0

10 0 0 0 0 0 0 0 0 0

*/

pos = 10;

for ( int i = 0; i < 10; i++ )

{

for ( int j = 0; j < 10; j++ )

{

if ( j == pos-1 ){

tab[j] = 11-pos;

pos--;

}

else

tab[j] = 0;

 

cout << tab[j] << " ";

}

 

cout << "\n";

}

 

 

/*

1 1 0 0 0 0 0 0 0 0

2 4 0 0 0 0 0 0 0 0

3 9 0 0 0 0 0 0 0 0

4 16 0 0 0 0 0 0 0 0

5 25 0 0 0 0 0 0 0 0

6 36 0 0 0 0 0 0 0 0

7 49 0 0 0 0 0 0 0 0

8 64 0 0 0 0 0 0 0 0

9 81 0 0 0 0 0 0 0 0

10 100 0 0 0 0 0 0 0 0

*/

for ( int i = 0; i < 10; i++ )

{

tab[0] = i+1;

 

for ( int j = 1; j < 10; j++ )

{

if ( j == 1 ){

tab[j] = tab[j-1] * tab[j-1];

}

else

tab[j] = 0;

 

cout << tab[j-1] << " ";

 

}

 

cout << "\n";

}

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Możesz rozdzielić wyświetlanie i wypełnianie na osobne funkcję. Do wyświetlania wystarczy przekazać tablicę normalnie, do uzupełniania raczej będą potrzebne wskaźniki.

 

Przypominam, że:

int tab[10][10];
funcja(tab);

Przekazuje wskaźnik na wskaźnik. Tj. nazwa tablicy jest wskaźnikiem do pierwszego elementu (tu do wskaźnika do pierwszego elementu pierwszego wierszu). Czyli coś w stylu

void funkcja(int** cos);

 

@Egnever chyba wskaźniki, nie wyznaczniki ;) (czepiam się, co? :P)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...