Dinamikus memóriakezeléssel c-ben hogy lehet megoldani?
Írj függvényt, mely egy egész számokat tartalmazó tömböt kap paraméterként és létrehoz egy új tömböt, mely a számok átlagánál kisebb értékeket tartalmazza! A függvény neve legyen filter_average, térjen vissza a létrehozott tömb kezdőcímével, és mivel az új tömb méretét is ismernie kell a hívónak, ezt az információt a paraméterlistán keresztül, utolsó paraméterként adja vissza.
Például: 3 5 11 4 -1 2 (6 elemű tömb) -> 3 -1 2 (3 elemű tömb)
Kedves kérdező, kommentem nem felhívás volt, hogy privát üzenetben írd le.
Ha szeretnél segítséget, szabályosan ide írd le a dolgokat
Na szóval itt akadtam el:
#include <stdio.h>
#include <stdlib.h>
void filter_average(int* data, int n){
double atlag;
int sum=0;
int i,j;
for (i=0; i<n; i++)
sum+=data[i];
atlag=sum/n;
#include <stdio.h>
#include <stdlib.h>
void filter_average(int* data, int n){
double atlag;
int sum=0;
int i,j;
for (i=0; i<n; i++)
sum+=data[i];
atlag=sum/n;
int *tomb[100];
for(i=0; i<n; i++)
{if(data[i]<atlag)
{for(j=0; j<n; j++)
{*tomb[j]=data[i];}}}
tomb=realloc(tomb, j*sizeof(int));
free(tomb);
int* a=j;
}
Még így se teljesen jó, de alakul xdd.
Hát nem csoda hogy nem jó, ránézek, és felugrik a vérnyomásom.
Pointerek, tömbök és típusok ismeretének teljes hiányára engedsz következtetni.
Szeretném, ha ugyanezt a kódot leírnád nekem sorrol-sorra kommentezve, hogy melyik sorban mit csinálsz!
De azért 1-2 sorhoz én is fűznék megjegyzést:
int *tomb[100]; //létrehozol egy 100 elemű tömböt a VERMEN, ami int*-okat tárolhat, vagyis a típusa megegyezik az int**-al kb.
Erre a STACKen tárolt tömbre mit csinálsz? Fogod a rá mutató pointert (mert a tomb az megegyezik nyelvi működés miatt ezzel: &(tomb[0]) ), és erre realloc-ot hívsz. Mit akarsz realloc-olni? Talán ez a változó calloc vagy malloc függvénnyel létrehozott dinamikus tömb? Nope.
Aztán hogy realloc-oltad, azelőtt hogy felhasználhatná bárki is, ráhívod a free-t, vagyis törlöd a p....ba.
Arról már nem is merek említést tenni, hogy utolsó sorban egy pointer kezdőértékének nem pointert adsz, hanem egy intet. De ez mindegy, mert véget ér a függvény, az is törlődik a g....be.
Szóval csak logikusan sorrol-sorra gondold át, és írd le melyik sor mit csinál, mit kéne csináljon, és az alapján haladj.
Amit meg nem tudsz, ne próbáld tákolni, mert 6% az esélye hogy eltalálod hibátlanul a szintaxist, inkább pótold be a hiányzó tudást, amik egyelőre ezek:
- Típusok
-- (ezen belül még extra:) pointerek
- Pointerek kezelése, értékadása, hivatkozása
- (statikus) tömbök, műveletek tömbökkel, tömb kezelése pointerként
- Dinamikus memória működése, pointerek a dinamikus memória tekintetében
- Változók életciklusa, megszűnése
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!