Punto informatico Network
Login Esegui login | Non sei registrato? Iscriviti ora (è gratuito!)
Username: Password:
  • Annuncio Pubblicitario

Aiuto esercizio in c (di nuovo =) )

Il forum per tutti i developer. Leggere attentamente il regolamento di sezione prima di postare.

Aiuto esercizio in c (di nuovo =) )

Messaggioda jack_the _best » ven dic 19, 2008 11:54 am

ciao a tutti, mi trovo ancora a dovervi chiedere aiuto [cry]
ho un problema con questo esercizio:

Esercizio 2 [Somma prefissi]. Scrivere una funzione RICORSIVA in linguaggio C in grado di ricevere un vettore di STRUCT di dimensione indefinita. Ogni elemento del vettore contiene una variabile struct con un campo di tipo char, uno di tipo unsigned e uno di tipo long. Se il campo di tipo char contiene il carattere ’p’ il valore nel campo di tipo unsigned va considerato positivo; se contiene il carattere ’n’, il valore va considerato negativo.
Il carattere ’t’ rappresenta il valore sentinella, che identifica la fine del vettore.

La funzione deve salvare nel campo di tipo long dell’elemento i il valore della somma parziale dei campi di tipo unsigned dei primi i + 1 elementi (considerando il segno definito dalcarattere ’p’ o ’n’), fino al raggiungimento dell’elemento contenente il carattere terminatore ’t’.

La funzione main del programma deve quindi popolare i campi di tipo char e unsigned degli elementi del vettore di struct (che potete dichiarare con dimensione 100), leggendo la sequenza in input, deve richiamare la funzione ed infine stampare (sempre nel main), per ogni elemento del vettore, il valore numerico considerando il segno del campo di tipo unsigned e il valore della somma parziale. La sequenza di input ` della forma carattere (’n’ o ’p’), seguito da un intero positivo maggiore di 0 (il tutto ripetuto 0 o pi` volte), ed infine il carattere ’t’.

Esempio: Se l’input e'

p 10 n 10 p 4 p 3 n 5 t

Il programma deve stampare

10 10 -10 0 4 4 3 7 -5 2

ATTENZIONE, per leggere la sequenza in input, utilizzate la funzione getchar per la lettura
dei caratteri, e la funzione scanf per la lettura dei valori interi (che potete assumere essere
solamente positivi).


io ho scritto un codice, che apparentemente sembra funzionare ma viene fuori un output strano, piu' lungo rispetto a quello che mi aspetterei

questo e' il codice
Codice: Seleziona tutto
#include<stdio.h>

typedef struct {
   char c;
   unsigned int x;
   long int somma;
   }struttura;

void somma(struttura v[], int i){
if(v[i].c=='t')
   return;
if(v[i].c=='n'){
   v[i].somma-=v[i].x;
         }
else{
   v[i].somma+= v[i].x;
    }
v[i+1].somma=v[i].somma;        //passa il valore di somma alla struttura successiva
somma(v, i+1);
return;
}

int main(){
struttura v[100];
int i=0;
do{
   v[i].c=getchar();
   v[i].somma=0;
   if(v[i].c!='t')
      scanf("%u", &v[i].x);
   i++;
  }while(v[i-1].c!='t');
somma(v, 0);
for(i=0;v[i].c!='t';i++){
   if(v[i].c=='n')
      printf("-%u\n%ld\n", v[i].x, v[i].somma);
   else
      printf("%u\n%ld\n", v[i].x, v[i].somma);
  }
}


questo e' l'output:
output2.jpg


ci sono alcuni valori che dovrebbero uscire (10 10 -10 0 4 4 ) ma gli altri da dove escono??

aiutatemi vi prego

grazie
Ci sono 10 tipi di persone al mondo. Quelli che capiscono il codice binario e quelli che non lo capiscono.
Avatar utente
jack_the _best
Senior Member
Senior Member
 
Messaggi: 172
Iscritto il: mer lug 12, 2006 1:58 pm

Re: Aiuto esercizio in c (di nuovo =) )

Messaggioda Antar3sX » mar dic 30, 2008 2:58 pm

Rieccomi [:)]

Il problema sta nella lettura dei dati.
Basta che aggiungi uno spazio alla scanf() in questo modo:

scanf("%u", &v[i].x);

deve diventare

scanf("%u ", &v[i].x);

in questo modo al ciclo successivo la getchar() non legge lo spazio non considerato dalla scanf()

Ciao
Avatar utente
Antar3sX
Neo Iscritto
Neo Iscritto
 
Messaggi: 22
Iscritto il: mer dic 10, 2008 5:41 pm
Località: Napoli

Re: Aiuto esercizio in c (di nuovo =) )

Messaggioda jack_the _best » mar dic 30, 2008 3:40 pm

è vero!!!! [acc2]

grazie mille( di nuovo) [^]
Ci sono 10 tipi di persone al mondo. Quelli che capiscono il codice binario e quelli che non lo capiscono.
Avatar utente
jack_the _best
Senior Member
Senior Member
 
Messaggi: 172
Iscritto il: mer lug 12, 2006 1:58 pm


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite

Powered by phpBB © 2002, 2005, 2007, 2008 phpBB Group
Traduzione Italiana phpBB.it

megalab.it: testata telematica quotidiana registrata al Tribunale di Cosenza n. 22/09 del 13.08.2009, editore Master New Media S.r.l.; © Copyright 2008 Master New Media S.r.l. a socio unico - P.I. 02947530784. GRUPPO EDIZIONI MASTER Spa Tutti i diritti sono riservati. Per la pubblicità: Master Advertising