Hirdetés

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

  • DEV_NULL

    őstag

    Sziasztok!

    A problémám amire tőletek várnék megoldást; a feladat egy C program ami először bekér egy számot, majd bekér ennyi de maximum 50 számot. Ezeket megszűri, hogy ne legyen benne ismétlődés, majd olyan ismétlődés nélküli számnégyeseket csinál belőlük ahol az első és utolsó szám összege megegyezik a második és harmadik szám összegével és a végén ezek darabszámát. Ezt egy robot ellenőrzi. Két gond van, az egyik, hogy malloc hibával elszáll, vagy ha program kimenete több ezer megfelelő számnégyes, akkor még néhány száz darab nullás számnégyest kipörget a végére... Én már kezdem feladni, bízom benne, tudtok segíteni. Remélem sikerül normálisan bemásolni a kódot, most írok ide először...

    Hiba: prog: malloc.c:2401: sysmalloc: Assertion `(old_top == initial_top (av) && old_size == 0) || ((unsigned long) (old_size) >= MINSIZE && prev_inuse (old_top) && ((unsigned long) old_end & (pagesize - 1)) == 0)' failed. Aborted (core dumped)

    Köszi előre is!

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

    typedef struct dec10Hazi
    {
        unsigned int meret, meret2;
        unsigned int csere, csere2;
        unsigned int *cim, *cim2;
        unsigned int tomb[4];
        unsigned int db;
    } Nehez;

    int main()
    {
       Nehez hazi;
        unsigned int h, a, z, i;

        scanf("%u", &hazi.meret);

        hazi.cim=malloc(sizeof(unsigned int)*hazi.meret);

       for(h=0; h<hazi.meret; h++)
            {
            scanf("%u", &hazi.cim[h]);
            }

       hazi.csere2=1;
        while(hazi.csere2)
            {
            for(h=0; h<hazi.meret-1; h++)
                {
                if(hazi.cim[h]>hazi.cim[h+1])
                    {
                    hazi.csere=hazi.cim[h];
                    hazi.cim[h]=hazi.cim[h+1];
                    hazi.cim[h+1]=hazi.csere;
                    }
                }
            hazi.csere2=0;
            for(h=0; h<hazi.meret-1; h++)
                {
                if(hazi.cim[h]>hazi.cim[h+1])
                    {
                   hazi.csere2=1;
                   break;
                   }
               }
            }

       hazi.meret2=0;
       for(h=0; h<hazi.meret-1; h++)
            {         
            if(hazi.cim[h]<hazi.cim[h+1])
                {            
                hazi.meret2++;
                }         
            }
        hazi.meret2++;

        hazi.cim2=malloc(sizeof(unsigned int)*hazi.meret2);

       h=0;
       hazi.csere=0;
       hazi.cim2[hazi.csere]=hazi.cim[h];
        h++;

       while(hazi.csere<hazi.meret2)
            {
           if(hazi.cim[h]>hazi.cim2[hazi.csere])
                {
               hazi.cim2[++hazi.csere]=hazi.cim[h];
                h++;
                }
           else  
                {
               h++;
               }
            }

       hazi.db=0;
      for(h=0; h<hazi.meret-3; h++)
            {         
           hazi.tomb[0]=hazi.cim2[h];
           for(a=h+1; a<hazi.meret-2; a++)
                {            
               hazi.tomb[1]=hazi.cim2[a];
                for(z=a+1; z<hazi.meret-1; z++)
                    {                 
                   hazi.tomb[2]=hazi.cim2[z];
                   for(i=z+1; i<hazi.meret; i++)
                        {                     
                       hazi.tomb[3]=hazi.cim2[i];
                       if(hazi.tomb[0]+hazi.tomb[3]==hazi.tomb[1]+hazi.tomb[2])
                            {
                            hazi.db++;
                            }
                        }
                   }
               }
            }

        printf("%u\n", hazi.db);

       free(hazi.cim);
        free(hazi.cim2);

        return 0;
    }

    [ Szerkesztve ]

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