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

2D pole a pointery – C / C++ – Fórum – Programujte.com2D pole a pointery – C / C++ – Fórum – Programujte.com

 

Maty
~ Anonymní uživatel
93 příspěvků
1. 12. 2013   #1
-
0
-

Zdravím, mám 2D pole a ukazatele na něj a tak...S pointerama moc neumím a mám tam chybu...Kód: 


int alokace=2;
double **pole = (double**)malloc(alokace*sizeof(double*));
while(!feof(stdin))
{
	pole[i] = (double*)malloc(2*sizeof(double));
	if(alokace<i)
		{
		alokace*=2;
		realloc (*pole, alokace*sizeof(double*));
		}
	i++;
}

Program received signal SIGTRAP, Trace/breakpoint trap

Děkuji moc za pomoc...Já fakt mám v tom zmatek :/

Nahlásit jako SPAM
IP: 89.111.119.–
vitamin+8
Grafoman
1. 12. 2013   #2
-
0
-

#1 Maty
realloc moze presunut povodne pole na ine miesto. Preto realloc vracia novy pointer.

*pole = realloc (*pole, alokace*sizeof(double*));
Nahlásit jako SPAM
IP: 95.105.152.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
Maty
~ Anonymní uživatel
93 příspěvků
1. 12. 2013   #3
-
0
-

#2 vitamin
Jinak je ta celková alokace dobře?

A co když chci pomocí scanf uložit do proměnné pole nějaké hodnoty?

Nahlásit jako SPAM
IP: 89.111.119.–
vitamin+8
Grafoman
1. 12. 2013   #4
-
0
-

#3 Maty
Alokacia vyzera ok.

Ak bude mat vnutorne pole vzdy rovnaku velkost tak mozes spravyt nieco taketo:

struct S{
	double d[2];
};

//...

int alokace=2;
S *pole = (S*)malloc(alokace*sizeof(S));
while(!feof(stdin))
{
	if(alokace<i)
		{
		alokace*=2;
		pole = realloc (pole, alokace*sizeof(S));
		}
	i++;
}
Nahlásit jako SPAM
IP: 95.105.152.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
z
~ Anonymní uživatel
268 příspěvků
1. 12. 2013   #5
-
0
-

   

int i=0, alokace=2;
double **pole = (double**)malloc(alokace*sizeof(double*));
if (!pole)
	jejda;
while(!feof(stdin))
{
	double a, b;
	if (scanf(...) != 2)
		jejda;

	if(alokace<=i)
	{
		int novaalokace = alokace * 2;
		double **novepole = (double**)realloc(pole, novaalokace*sizeof(double*));
		if (!novepole)
			jejda;
		pole = novepole;
		alokace = novaalokace;
	}
	pole[i] = (double*)malloc(2*sizeof(double));
	if (!pole[i])
		jejda;

	pole[i][0] = a;
	pole[i][1] = b;

	i++;
}
Nahlásit jako SPAM
IP: 88.101.8.–
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, 98 hostů

Podobná vlákna

Pointery — založil inferno-girl

Pointery v C — založil chef06

C++ pointery — založil jane32

Problém s pointery. — založil Sám_už_nevím

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ý