09/03/11 17:58
dodo154
Salve a tutti!
un piccolo consulto...
vi riporto questo esercizio:
Scrivere un codice in linguaggio C, opportunamente strutturato in funzioni, per gestire completamente il seguente problema:
1.Supposta l'esistenza di un file binario "primo.dat" contenente max 15 numeri reali;
2.Supposta l'esistenza di un file di testo"secondo.txt" contenente max 15 numeri interi;
si allochi dinamicamente un vettore di interi contenente la sequenza di numeri acquisiti dai due file, in modo che la stessa non contenga ripetizioni tenuto anche conto del fatto che i numeri reali saranno arrotondati.
N.B. per l'arrotondamento applicare l'algoritmo per cui se la parte decimale di un numero reale è <=0,5 il numero viene arrotondato all'intero più piccolo altrimenti all'intero più grande.
ho scritto il seguente codice ma non sono sicuro che vada bene e mi riporta degli errori, qualcuno sa darmi una mano...?
grazie in anticipo...
un piccolo consulto...
vi riporto questo esercizio:
Scrivere un codice in linguaggio C, opportunamente strutturato in funzioni, per gestire completamente il seguente problema:
1.Supposta l'esistenza di un file binario "primo.dat" contenente max 15 numeri reali;
2.Supposta l'esistenza di un file di testo"secondo.txt" contenente max 15 numeri interi;
si allochi dinamicamente un vettore di interi contenente la sequenza di numeri acquisiti dai due file, in modo che la stessa non contenga ripetizioni tenuto anche conto del fatto che i numeri reali saranno arrotondati.
N.B. per l'arrotondamento applicare l'algoritmo per cui se la parte decimale di un numero reale è <=0,5 il numero viene arrotondato all'intero più piccolo altrimenti all'intero più grande.
ho scritto il seguente codice ma non sono sicuro che vada bene e mi riporta degli errori, qualcuno sa darmi una mano...?
grazie in anticipo...
#include<stdio.h> #include<stdlib.h> int main() { leggi(); return 0; } void leggi(void) { FILE *fp; float ele1; int *buff; int *vett; int conta=0; int ele2, ele; fp=fopen("primo.dat","rb"); while(!feof(fp)) { fread(&ele1,sizeof(float),1,fp); conta++; } fclose(fp); fp=fopen("secondo.txt","r"); while(!eof(fp)) { fscanf(fp,"%d",&ele2); conta++; } fclose(fp); }; void alloca(int* vett, int* buff, int conta) { float ele1; int ele, ele2, elementi, i=0,j,k=0,temp; fp=fopen("primo.dat","rb"); vett=malloc(conta*sizeof(int)); while(!feof(fp)) { fread(&ele1, sizeof(float),1,fp); if((ele1-(int)ele1)<=0,5) { ele=(int)ele1; } else ele=(int)ele1; vett[i]=ele; i++; } fclose(fp); fp=fopen("secondo.txt","r"); while(!eof(fp)) { fscanf(fp,"%d",&ele2); vett[i]=ele2; i++; } elementi=conta; for(i=0;i<conta;i++) { j=i; elemento=vett[i]; for(;j<conta;j++) if(elemento==vett[j+1]); elementi--; } buf=malloc(elementi*sizeof(int)); //ordinamento for(i=0;i<elementi;i++) { for(j=0;j<elementi;j++) { if(buff[i]>buff[j+1]) { temp=buff[i]; buff[i]=buff[j+1]; buff[j+1]=temp; } } return buff; } }
aaa