PDA

View Full Version : URGENTISSIMO: potete mettermi a posto questo programma entro domani? (C)


fullmetal440
15-07-2010, 23:36
Ho un orale di informatica domani, devo portargli gli esercizi del compito d'esame svolti e funzionanti.
Questo ho avuto difficoltà a farlo, vorrei ci deste un occhio perché NON funziona.

Il programma riceve un file formattato nella seguente maniera

(23) 10
(EF0) 18
(2NG) 33
(1204) 5

I numeri tra parentesi rappresentano appunto dei numeri scritti in base decimale da 1 a 36
Il numero successivo rappresenta invece la base in cui è scritto.
Il programma deve stampare a video la somma di tutti i numeri convertiti in base decimale.
(A corrisponde a 10, B corrisponde a 11, C corrisponde a 12 e così via fino a 36 che corrisponde a Z)

Questo è quello che ho fattio io, potreste dirmi se è corretta la funzione finale?

# include <stdio.h>
# include <string.h>
# include <math.h>

int SommaConverti(char nome_file[]);
int riscrivi_numero(char num_da_convertire[], int num[], int n);


int main()
{
char nome_file[21];
printf("Nome del file: ");
scanf("%s", nome_file);
printf("La somma e' %d\n", SommaConverti(nome_file));
return 0;
}


int SommaConverti(char nome_file[])
{
int somma = 0;
FILE* fp;
fp = fopen ("prova.txt","r");
char check;
while ((check=getc(fp))!=EOF){
while (getc(fp)!='\n'){
int result;
while (getc(fp)!=')'){
int somma, n;
result = 0;
somma = 0;
char numero_da_convertire[50];
fscanf(fp, "(%s", numero_da_convertire);
n = strlen(numero_da_convertire);
int num[n];
int *nptr = num;
riscrivi_numero(numero_da_convertire, *nptr, n);
int base;
fscanf(fp, "%d/n", &base);
int i;
for (i=0; i<n; i++){
result = result + num[i]*pow(base, n-i);
}
}
somma += result;
}
}
fclose(fp);
return somma;
}


int riscrivi_numero(char num_da_convertire[],int *num, int n){
int i;
for (i=0; i<n; i++){
printf ("%s/n", num_da_convertire);
if (num_da_convertire[i]>='0' && num_da_convertire[i]<='9')
num[i] = (num_da_convertire[i]-'0');
if (num_da_convertire[i]>='A' && num_da_convertire[i]<='Z')
num[i] = (num_da_convertire[i]-'A'+10);
}
return 0;
}

Non parte nemmeno?
Ho bisogno che qualcuno lo metta a posto... è importante, molto

tuccio`
16-07-2010, 01:13
edit

cionci
16-07-2010, 14:11
tuccio': la risoluzione completa di esercizi è vietata in questo forum. Quindi la prossima volta evita.
Ovviamente è vietato anche richiedere la risoluzione completa di esercizi.