jazyk C newbie

Programovacie jazyky, rady, poradňa...
rado06
Novice
Novice
Príspevky: 7
Registrovaný: 03 mar 2010, 23:08

jazyk C newbie

Príspevok od používateľa rado06 »

Potreboval by som pomoct, ucim sa Ccko a nerozumiem tomu :roll: ako urobit aby v tomto programe nevypisovalo cisla opakovane, napr. pri parnych ak uz bolo vypisane cislo 6 tak ho druhy krat preskocit.

Kód: Vybrať všetko

#include <stdio.h>
#include <stdlib.h>

/* Napíšte program, v ktorom používateľ zadá celé číslo n. Potom program načíta n celých čísel a
postupne vypíše párne čísla a nepárne čísla.
*/

int main()
{
    int n,i,*p;

    printf("Pocet cisiel : ");
    scanf("%d",&n);

    p=(int*)malloc(n*sizeof(int));

    for (i=0; i<n; i++){
        p[i]= (rand() % 10);
        printf("%d, ",p[i]);
    }

    printf("\n\nParne:\n");
    for (i=0;i<n;i++){
        if ((p[i]%2) == 0) {
            printf("%d\n",p[i]);
        }
    }

    printf("\nNeparne:\n");
    for (i=0;i<n;i++){
        if (p[i]%2 != 0){
           printf("%d\n",p[i]);
        }
    }

    return 0;
}



a este kam mam dat free() a s akym parametrom aby som vyhodil pointer z pamate, staci na koniec pred return free(p) alebo

Kód: Vybrať všetko

free((void*)p);
p=NULL;
ci sa to robi inak? thx za rady.
Sagittarius
Guru
Guru
Používateľov profilový obrázok
Príspevky: 2883
Registrovaný: 13 feb 2007, 21:58
Bydlisko: Do nekonečna a ešte ďalej

Re: jazyk C newbie

Príspevok od používateľa Sagittarius »

S tými pointrami ti asi nepomôžem, ale pred časom som tu na hojku riešil podobný problém, tiež som potreboval, aby sa mi čísla neopakovali. Takže táto téma http://www.hojko.com/pomoc-s-programom- ... 07042.html by ti mohla pomôcť.
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8224
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: jazyk C newbie

Príspevok od používateľa harrison314 »

Skus tam prihodit takuto funkciu,ktora odtrani opakujuce sa cisla, daj pozor pocita s tim ze nepouzivas zaporne cisla

Kód: Vybrať všetko

int optimalizuj(int pole[],int *poc)
{
     int i,j;
     for(i=0;i< *poc;i++)
     {
      if(pole[i] < 0) continue;
      for(j=i+1;j<*poc;j++) if(pole[i]==pole[j]) pole[j] = -1;
     }
     for(i=0,j=0;i< *poc;i++) if(pole[i]>0) pole[j++]=pole[i];
     return *poc = j;
}
duhy parameter je rozmer pola, ktory sa ubratim opakovynch hodnot zmensi, fukcia ho aj vracia
Napísať odpoveď