codice:
#include <stdio.h>
#define SIZE 100
typedef struct //struttura
{
char segno;
int valore;
long int sommetta;
} Parole;
void somma_pref (Parole vettorino[], int i, long int somma_precedente); //prototipo della funzione
int main()
{
Parole vettorino[SIZE] = {0}; //dichiaro il vettore di struct
int i;
for(i = 0; i < SIZE; i++)
{
scanf (" %c", &vettorino[i].segno); //prendo il segno del valore
if(vettorino[i].segno == 't') // se è t mi fermo
break;
scanf(" %d", &vettorino[i].valore); //prendo il valore
}
somma_pref(vettorino, 0, 0); //FUNZIONE
i = 0;
while (vettorino[i].segno != 't') //stampa
{
printf("%d %ld ", vettorino[i].valore, vettorino[i].sommetta);
i++;
}
return 0;
}
void somma_pref (Parole vettorino[], int i, long int somma_precedente)
{
if(vettorino[i].segno=='t') //caso base per uscire dalla ricorsione
return;
if(vettorino[i].segno == 'n') //caso n, negatività del valore
vettorino[i].valore *= -1; //il valore deve diventare negativo
vettorino[i].sommetta = vettorino[i].valore + somma_precedente;
somma_pref(vettorino, i+1, vettorino[i].sommetta);
}
Controlla se è corretto, rispetto alle consegne ...
E poi dimmi che cosa avevi sbagliato, confrontando i due programmi.
La mia soluzione prevede un campo di tipo int e non usigned int ...
Di conseguenza, se non va bene, devi modificarlo