Dvojrozmerne pole – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Dvojrozmerne pole – C / C++ – Fórum – Programujte.comDvojrozmerne pole – C / C++ – Fórum – Programujte.com

 

4. 9. 2017   #1
-
0
-

dobrý deň obraciam sa vam s prosbou mam fukciu v c++ ktora ma sčitat dvojrozmerne pole no už som to aj napisal lenze mi to nejde dobre mohol by mi neikto napisat prečo a čo je zle prosim :( som zufaly 

#include <iostream>
int zadaj(int (*celkovo)[4], int sizes);
using namespace std;
int main()
{   int sizes;
   int (*celkovo)[sizes][4];
   int (*data)[3][4]=&celkovo;

data={{1,2,3,4},{5,6,7,8},{9,10,11,12}};   

int zadajme = zadaj(*data , 3);

    cout <<zadajme<<endl;
 
    return 0;
}
    int zadaj(int (*celkovo)[4], int sizes)
{
int total=0; for(int r =0; r <sizes;r++)
 for(int c=0; c <4; c++)
   total +=celkovo[r][c]; return total;
}

Nahlásit jako SPAM
IP: 213.81.220.–
KIIV
~ Moderátor
+43
God of flame
4. 9. 2017   #2
-
0
-

Napsany je to tak odporne, ze ma clovek chut si vyskrabat oci.

Co by to jako melo vubec delat.

No jen par poznamek:

int sizes;  // neinicializovana promenna!!!!!!

int (*celkovo)[sizes][4]; // pointer na pole nahodne velikosti? K cemu to tu vubec je? Stejne ten pointer NIKAM NEUKAZUJE!!!!!!!!!!!!!!!!

int (*data)[3][4]=&celkovo; // aby v tom byl totalni gulas, pokusis se priradit pointer na pointer na dvourozmerne pole o [nahodne velikosti] * [4]

data={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; // ne, pole se neda inicializovat mimo deklaraci (ale u pointeru to tak jak tak nepomuze)

Nahlásit jako SPAM
IP: 81.30.230.–
Program vždy dělá to co naprogramujete, ne to co chcete...
KIIV
~ Moderátor
+43
God of flame
4. 9. 2017   #3
-
0
-

Jak by to mohlo napriklad vypadat pomoci templatu:

#include <iostream>

template<size_t s1, size_t s2> int sum(int (&pole)[s1][s2]);


int main()
{
	int data[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}}; 
	std::cout << sum(data) << std::endl;

	int data2[4][5] = {{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20}};
	std::cout << sum(data2) << std::endl;

    return 0;
}


template<size_t s1, size_t s2> int sum(int (&pole)[s1][s2])
{
	int soucet = 0;
	for (int (&radek)[s2] : pole)
	{
		for (int & polozka : radek)
		{
			soucet += polozka;
		}
	}
	return soucet;
}
Nahlásit jako SPAM
IP: 81.30.230.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 102 hostů

Podobná vlákna

Dvojrozmerné pole — založil matcho13579

Dvojrozmerné pole — založil nord

Pole dvojrozmerne — založil CSTA

WPF dvojrozmerné pole — založil Grungy

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý