Stránka 1 z 1

[C] Výmena prvků pole

Napsal: 18 lis 2012, 14:35
od Velous
Zdravím, mám udělat program pro výměnu prvků pole. Přené zadání zní: Vytvořte funkci, která vzájemně vymění prvky dvou polí alokovaných pomocí funkce malloc. Vůbec netuším jak na to. Předem díky za pomoc.
Mám k dispozici šablonu:

#include <stdio.h>

Napsal: 18 lis 2012, 17:16
od DRAKE
#include <stdio.h>

int VymenPrvky(int* PoleA, int* PoleB, int n)
{
if((PoleA != NULL) && (PoleB != NULL) && (n > 0))
{
int i,tmp;

for(i=0; i < n; ++i)
{
tmp = PoleA[i]
PoleA[i] = PoleB[i];
PoleB[i] = tmp;
}
return 0;
}
return -1;
}

// fukce main se muze lisit dle vyvojovych prostredi
int main(int argc, char **argv)
{
// doplnte zadani libovolne delky
int n = 3;
int* PoleA = (int*)malloc(3 * sizeof(int));
int* PoleB = (int*)malloc(3 * sizeof(int));
if((PoleA != NULL) && (PoleB != NULL))
{
// osetrete vypis true nebo false
VymenPrvky(PoleA, PoleB, n);

free(PoleA);
free(PoleB);
}
return 0;
}

Napsal: 18 lis 2012, 18:35
od mtajovsky
To je ale tupé zadání. K čemu budu vyměňovat prvky dynamicky alokovaných polí? Stačí vyměnit adresy v pointerech ukazujících na pole:

Kód: Vybrat vše

...
int* tmp = PoleA;
PoleA = PoleB;
PoleB = tmp;
...

Napsal: 18 lis 2012, 18:53
od DRAKE
Nejspíš mu to zadal nějakej inteligentní učitel, není se čemu divit.

Napsal: 18 lis 2012, 19:20
od Velous
Ano, je to zadání od učitele. Jinak díky, už jsem na to přišel. :-)