Hirdetés
- Fejhallgató erősítő és DAC topik
- Milyen Android TV boxot vegyek?
- Milyen asztali médialejátszót?
- Melyik tápegységet vegyem?
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Dobozcserére kárhoztatja asztali csúcs-CPU-ját az Intel
- Zeneszerkesztő és DJ topic
- Fujifilm X
- Milyen monitort vegyek?
- Bambu Lab 3D nyomtatók
Ú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!
- Álláskeresés, interjú, önéletrajz
- gban: Ingyen kellene, de tegnapra
- Fejhallgató erősítő és DAC topik
- A fociról könnyedén, egy baráti társaságban
- Autós topik látogatók beszélgetős, offolós topikja
- A rend őrei
- OTP Bank topic
- Milyen Android TV boxot vegyek?
- Milyen asztali médialejátszót?
- Megkérdeztük az AI-t: milyen érzés, amikor megreguláznak?
- További aktív témák...
- Asus G14 GA402RK 32 GB, 2 TB + Anime Matrix /HIBÁTLAN
- Dell XPS 15 9570, 15,6" FHD IPS, I7-8750H CPU, 16GB DDR4, 256GB-1TB SSD, GTX 1050TI 4GB VGA, Új akku
- Dell XPS 15 9560, 15,6" UHD/4K Touch, I7-7700HQ CPU, 16GB DDR4, 256GB-1TB SSD, GTX 1050, TPM X
- HP ProBook 450 G8 - Felújított - 1 év garanciával - Áfás számla
- HP ZBOOK 15 G5 i7/16Gb/500gb m2 ssd
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: Central PC számítógép és laptop szerviz - Pécs
Város: Pécs


