Hirdetés

Új hozzászólás Aktív témák

  • Sk8erPeter
    nagyúr

    Sziasztok!

    Van egy programom melynek annyi lenne a feladata, hogy megnézi egy tömb elemeit és ha van benne olyan szám mely többször előfordult akkor kiírja hogy van, egyébként meg nincs.
    Ez lenne a kód, ami valamiért nem működik:
    #include <stdio.h>

    int tobbszor( int pTomb[], int size )
    {
    int i, j;
    int db = 0;

    for ( i = 0; i < size; i++ ){
    db = 0;
    for ( j = 0; j < size; j++){
    if (pTomb[j]==pTomb[i])
    db++;
    }
    if (db > (size-db))
    return 1;
    }
    return 0;
    }

    int main()
    {
    int a[] = {11, 12, 22, 33, 2, 11, 11, 55};
    int size=(sizeof(a)/sizeof(a[0]));
    if (tobbszor( a, size ) == 1)
    printf("van\n");
    else
    printf("nincs\n");

    system("PAUSE");
    return 0;
    }

    Köszi előre is a segítséget!

    Ezt a
    system("PAUSE");
    baromságot nagyon gyorsan felejtsd el (egyszer össze kéne számolni, hányszor hangzott el ez a topikban).
    Gondolom valami gyökér tanár mutatta ezt a szarságot, vagy valami gány fórumon szedted össze.
    Ott van helyette pl. a getchar();

    Ezenfelül jobb lenne, ha azonnal visszatérnél, amint egyezést találtál egy korábbi számmal (minek végigmenni rajta teljesen?).
    if (pTomb[j]==pTomb[i])
    ez a feltételvizsgálat nálad legalább egyszer mindenképp igaz lesz, amikor önmagával hasonlítod az elemet, felesleges ezt vizsgálni.
    Szóval így is lehet:
    int tobbszor( int* pTomb, int size )
    {
    int i, j;

    for ( i = 0; i < size; i++ ){
    for ( j = 0; j < size; j++){
    if (i!=j && pTomb[j]==pTomb[i])
    return 1;
    }
    }
    return 0;
    }

Új hozzászólás Aktív témák