Hirdetés
- A hardverek is kokárdát tűznek a hétvégén
- AMD Ryzen 9 / 7 / 5 / 3 5***(X) "Zen 3" (AM4)
- 3D nyomtatás
- Ilyen olcsó sem volt még egy Apple notebook
- Döbbenetesen sok energia kell az érkező Nova Lake működéséhez?
- Vezeték nélküli fülhallgatók
- 5.1, 7.1 és gamer fejhallgatók
- Projektor topic
- Milyen Android TV boxot vegyek?
- Világrekordot ünnepel az ASRock
Új hozzászólás Aktív témák
-
Sk8erPeter
nagyúr
Akkor lehet, hogy valami fogalmi képzavar esete forog fenn nálam, vagy nem vágom,
de az alábbi példaprogram jól szemlélteti a dinamikus memóriafoglalást, amire gondoltam, itt az eredeti tömbből egy új tömbbe gyűjti az eredeti tömbben szereplő, átlag alatti számokat, és pont akkora memóriát foglalunk le az új tömbnek, amennyire szükség van, nem többet, nem kevesebbet:#include <stdio.h>
#include <stdlib.h>
double *atlagalatt(double tomb[], int meret, int *ujmeret){
double *ujtomb;
int i, db, to;
double szum, atlag;
/* mi az atlag */
szum=0;
for (i=0; i<meret; ++i)
szum+=tomb[i];
atlag=szum/meret;
/* hany olyan van */
db=0;
for (i=0; i<meret; ++i)
if (tomb[i]<atlag)
db++;
/* foglalas es paranoia */
ujtomb=(double*)malloc(db*sizeof(double));
if (!ujtomb) {
*ujmeret=0;
return NULL;
}
/* masolas */
to=0;
for (i=0; i<meret; ++i)
if (tomb[i]<atlag)
ujtomb[to++]=tomb[i];
*ujmeret=db;
return ujtomb;
}
int main(){
double eredeti[100];
double *uj;
int ujmeret;
int i;
for (i=0; i<100; ++i)
eredeti[i]=rand()%100/10.0;
uj=atlagalatt(eredeti, 100, &ujmeret);
for (i=0; i<ujmeret; ++i)
printf("%4.2g ", uj[i]);
free(uj);
}Szerk.: Forrás: [link]
Sőt, ha már linkeltem, itt látható a 4-es feladatban a futásidőben történő memóriafoglalás:
#include <stdio.h>
#include <stdlib.h>
char ** darabol(char *s,char *m,int *db){
int n=0,i,last=0;
char **p;
// szavak számolása
for(i=0;s[i]!=0;i++){
int j;
for(j=0; m[j]!=0 && s[i]!=m[j]; j++);
if(m[j]!=0 && i!=last){
n++;
last=i+1;
}
}
p=(char**)malloc(n*sizeof(char*));
if(p==NULL)exit(-1);
for(i=n=last=0;s[i]!=0;i++){
int j;
for(j=0; m[j]!=0 && s[i]!=m[j]; j++);
if(m[j]!=0 && i!=last){
p[n]=(char*)malloc(i-last+1);
if(p[n]==NULL)exit(-1);
for(j=last;j<i;j++)p[n][j-last]=s[j];
p[n][j-last]=0;
n++;
last=i+1;
}
}
*db=n;
return p;
}
int main(int db,char ** par){
FILE * fp;
char sor[1025];
int meret;
if(db<3)return -1;
fp=fopen(par[1],"rt");
if(fp==NULL)return -1;
while(fgets(sor,1025,fp)!=NULL){
char **p=darabol(sor,par[2],&meret);
while(meret--)free(p[meret]);
free(p);
}
}
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Formula-1
- iPhone topik
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- A hardverek is kokárdát tűznek a hétvégén
- Battlefield 6
- VGA kibeszélő offtopik
- Fűnyíró topik
- Akciófigyelő: Ajándékokkal érkeztek meg az új Dreame porszívók
- Eredeti játékok OFF topik
- AMD Ryzen 9 / 7 / 5 / 3 5***(X) "Zen 3" (AM4)
- További aktív témák...
- új NAGYakku!!! 6-10óra üzemidő, 5G! Dell Latitude 5330 i3-1215U - 16GB 512GB 13.3" FHD 1 év gar
- Sony ULT FIELD 1 bluetooth hangszoró
- Clevo 1060 6GB Mxm 3.1 laptop videó kártya ingyen házhoz szálitással
- Csere-Beszámítás! Asus Tuf FX506I Gamer Notebook! R7 4800H / 1650Ti / 16GB DDR4 / 512GB SSD
- HP ProDesk 600 G5 i5-9500 16GB 512GB 1 év garancia
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

