PDA

View Full Version : [c/c++] Stampa nn correta


Giu88
17-12-2008, 20:44
Vi prego aiutatemi sono due giorni che ci sbatto la testa e nn riesco a venirne a capo... io ho questo codice : #include <stdio.h>
#define MAX 100
struct s {
char segnale;
unsigned valore;
long d;
};

int main(void){
struct s v[MAX];
int i=0;
char c='\0';
int aux=0;

while(1){
c=getchar();
scanf("%d", &aux);
if(c == 't'){
v[i].segnale=c;
break;
}
if(c == 'p'){
v[i].segnale=c;
v[i].valore=aux;
}
if(c == 'n'){
v[i].segnale=c;
v[i].valore=aux*-1;
}
i++;
}
i=0;
while(v[i].segnale != 't'){
printf("%c %d", v[i].segnale, v[i].valore);
i++;
}
return 0;
}

per ora inserisco solo degli elementi e voglio vedere se li ho salvati effettivamente...
il mio input è questo:
p 10 n 10 t (separati da uno spazio e con l'invio finale).
e l'output è :
p 10 28n -10 0
vi prego spiegatemi come faccio a stapare solo quello che scrivo!!
ovvero p 10 n 10 !!!!!!! vi prego!! :mc: :muro: :muro: :muro: :muro: :muro: :muro: :muro: :muro: :muro: :muro: :help:

sottovento
18-12-2008, 12:52
L'input che hai proposto non e' valido. Da quello che ho capito, vorresti dare una lettera che rappresenti un "comando/opzione", seguito dall'argomento numerico.

Beh, allora non puoi mettere degli spazi in mezzo, poiche' te li leggera' la getchar().
Inoltre leggi sempre e solo un carattere ed un numero. Pertanto: l'input che hai suggerito non puo' far terminare il ciclo, poiche' stara' in attesa alla scanf(), no?

Supponendo che si dia un output del tipo:
p10n10t10
(seguito da Enter), non otterrai in stampa quello che hai inserito, poiche' il numero che segue la lettera n lo moltiplichi per -1.

L'output che hai descritto... non come tu l'abbia ottenuto, visto che con l'input in questione non esci dal ciclo.