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

Tablica dwuwymiarowa c++

Object Storage Arubacloud
0 głosów
1,638 wizyt
pytanie zadane 13 marca 2017 w C i C++ przez krzakurts Obywatel (1,470 p.)

Witam! Tworzę prosty program, który wczytuje i wyświetla tablice dwuwymiarową oraz podaje sumę liczb w wierszach i kolumnach. Program chodził odpowiednio, kiedy wszystko miałem wrzucone w main. Jednak teraz chcę podzielić go na funkcje i tu pojawiają się problemy. Nie mam już pomysłów, jak te funkcje deklarować. Proszę o pomoc/wskazówki. :) 

 

#include <iostream>
#include <cstdlib>
using namespace std;
const int n=3;
const int m=3;
void wczytaj_tablice(int[][]);
void wypisz_tablice(int[][]);

int main(void)
{

int tab[n][m];
int sumaw=0;
int sumak=0;
int numer_kolumny=0;
int numer_wiersza=0;

wczytaj_tablice(tab);
wypisz_tablice(tab);
    for(int i=0;i<n;i++)
  {
       sumaw=0;
    for(int j=0;j<m;j++)

         sumaw+=tab[i][j];
          cout << "Suma wyrazow w " << ++numer_wiersza << " wierszu wynosi: " << sumaw << endl;
    }
    for(int j=0;j<m;j++)
    {
         sumak=0;
         for(int i=0;i<n;i++)

          sumak+=tab[i][j];
         cout << "Suma wyrazow w " << ++numer_kolumny <<" kolumnie wynosi: " << sumak << endl;

    }


  system("pause");
  return 0;
}

void wczytaj_tablice(int tab[][])
{

for(int i=0;i<n;i++)
     for(int j=0;j<m;j++);
cin >> tab[i][j];
}

void wypisz_tablice(int tab[][])
{
     for(int i=0;i<n;i++)
  {
    for(int j=0;j<m;j++)
    {

       tab[i][j]=rand() % (100+1);
      cout<<tab[i][j]<<" ";

    }
    cout << endl;
    }
}

 

2 odpowiedzi

0 głosów
odpowiedź 13 marca 2017 przez Sinnley Stary wyjadacz (12,810 p.)
wybrane 13 marca 2017 przez krzakurts
 
Najlepsza
Jeśli przekazujesz tablice do funkcji musisz dać jej znać jak wygląda jej architektura. Tzn - tablica wielowymiarowa to tak naprawdę tablica z tablicami. Jeśli przekazujesz tablice jednowymiarową nie jest istotne ile jest w niej "szufladek". Podobnie jest z pierwszym wymiarem tablicy wielowymiarowej. Reszte wymiarów musisz już jednak podać.
komentarz 13 marca 2017 przez krzakurts Obywatel (1,470 p.)
No tak, faktycznie, Dzięki!
komentarz 13 marca 2017 przez krzakurts Obywatel (1,470 p.)
#include <iostream>
#include <cstdlib>

using namespace std;

int main()
{
    int n, suma;
    cin >> n;
    int tab[n];
    for(int a=0; a<n; a++)
    {
        tab[a]=rand() %(10-1);
        cout << tab[a] << " ";
    }
   cout << endl;
    for(int a=0; a<n; a++)
{
     suma=0;
     suma+=tab[a];
        cout << suma;
}
    return 0;
}

A wiesz może, czemu to liczenie sumy tutaj nie działa? Jak mam tablice "5 7", to zamiast 12 wyrzuca mi 57. :/
komentarz 13 marca 2017 przez Sinnley Stary wyjadacz (12,810 p.)
Dlatego, że w każdej iteracji pętli zerujesz zmienną suma.

Jeśli masz w tablicy liczby 5 oraz 7, to kolejno suma wynosi 0, potem przypisujesz jej 5, wypisujesz 5, znowu zerujesz, przypisujesz 7, wypisujesz. Krótko mówiąc - druga pętla robi to samo co pierwsza, tylko nie wypisuje spacji pomiędzy kolejnymi cyframi.
komentarz 13 marca 2017 przez krzakurts Obywatel (1,470 p.)
Ok. W takim razie jak to zrobić w sensowny sposób?
komentarz 13 marca 2017 przez Evelek Nałogowiec (28,960 p.)
Przerzuć suma=0 przed pętlę for.
komentarz 13 marca 2017 przez Sinnley Stary wyjadacz (12,810 p.)
Albo po prostu podczas tworzenia zmiennej daj jej wartość 0. To najlepsza opcja i dobra praktyka.
0 głosów
odpowiedź 13 marca 2017 przez Evelek Nałogowiec (28,960 p.)

Jak chcesz przekazać tablicę dwuwymiarową to możesz to zrobić np. tak:

#include <iostream>

using namespace std;
const int W = 2;
const int K = 5;
void wczytaj_tablice(int tab[][K])
{
	for (int i = 0; i < W; i++)
		for (int j = 0; j < K; j++)
			cin >> tab[i][j];
}

void wyswietl_tablica(int tab[][K])
{
	for (int i = 0; i < W; i++)
		for (int j = 0; j < K; j++)
			cout << tab[i][j];
}

int main()
{	
	int tablica[W][K];
	wczytaj_tablice(tablica);
	wyswietl_tablica(tablica);
}

W tym konkretnym przypadku podajesz ilość kolumn tylko do funkcji.

Podobne pytania

0 głosów
1 odpowiedź 290 wizyt
+1 głos
2 odpowiedzi 1,089 wizyt
pytanie zadane 15 kwietnia 2018 w C i C++ przez Stasq Nowicjusz (150 p.)
0 głosów
2 odpowiedzi 8,013 wizyt
pytanie zadane 6 stycznia 2017 w C i C++ przez Astenna Początkujący (340 p.)

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...