Torna indietro   Hardware Upgrade Forum > Altre Discussioni > Altre discussioni sull'informatica

Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori
Il primo headset open-back della linea INZONE arriva a 200 euro con driver derivati dalle cuffie da studio MDR-MV1 e un peso record di soli 199 grammi
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA
Al .NEXT 2026 di Chicago, Nutanix ha mostrato quanto sia cambiata: una piattaforma software che gestisce VM, container e carichi di lavoro IA ovunque, dall’on-premise al cloud pubblico. Con un’esecuzione rapidissima sulle partnership e sulla migrazione da VMware
Recensione Xiaomi Pad 8 Pro: potenza bruta e HyperOS 3 per sfidare la fascia alta
Recensione Xiaomi Pad 8 Pro: potenza bruta e HyperOS 3 per sfidare la fascia alta
Xiaomi Pad 8 Pro adotta il potente Snapdragon 8 Elite all'interno di un corpo con spessore di soli 5,75 mm e pannello LCD a 144Hz flicker-free, per un tablet che può essere utilizzato con accessori dedicati di altissima qualità. Fra le caratteristiche esclusive, soprattutto per chi intende usarlo con la tastiera ufficiale, c'è la modalità Workstation di HyperOS 3, che trasforma Android in un sistema operativo con interfaccia a finestre
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 28-12-2011, 21:14   #1
zordan.silvia
Junior Member
 
Iscritto dal: Dec 2011
Città: Siena
Messaggi: 2
Errore nell'esecuzione dell'operatore Switch

#include<stdio.h>

int main()
{
float a,b;
char operatore;
float somma, prodotto, quoziente, sottrazione;
printf("Inserisci due numeri reali\n");
scanf("%f" "%f", &a, &b);
printf("Inserisci un operatore\n");
scanf("%c", &operatore);
getchar();

switch (operatore)
{
case '+':
somma=a+b;
printf("La somma e': %f", somma);
break;
case '*':
prodotto=a*b;
printf("Il prodotto e': %f", prodotto);
break;
case '/':
quoziente=a/b;
printf("Il quoziente e': %f", quoziente);
break;
case '-':
sottrazione=a-b;
printf("La sottrazione e': %f", sottrazione);
break;
default:
printf("Hai inserito un carattere non consentito\n");
}
getchar();getchar();
return 0;
}


Non capisco dove sia l'errore. Il programma si compila correttamente ma quando vado ad eseguirlo, riesco ad inserire i due numeri ma dopo aver inserito il carattere mi "salta" direttamente al default anche se inserisco un carattere di quelle elencati nei CASE.
zordan.silvia è offline   Rispondi citando il messaggio o parte di esso
Old 28-12-2011, 23:01   #2
hibone
Senior Member
 
L'Avatar di hibone
 
Iscritto dal: Jan 2006
Città: Vergate Sul Membro (MI)
Messaggi: 16538
Quote:
Originariamente inviato da zordan.silvia Guarda i messaggi
#include<stdio.h>

int main()
{
float a,b;
char operatore;
float somma, prodotto, quoziente, sottrazione;
printf("Inserisci due numeri reali\n");
scanf("%f" "%f", &a, &b);
printf("Inserisci un operatore\n");
scanf("%c", &operatore);
getchar();

switch (operatore)
{
case '+':
somma=a+b;
printf("La somma e': %f", somma);
break;
case '*':
prodotto=a*b;
printf("Il prodotto e': %f", prodotto);
break;
case '/':
quoziente=a/b;
printf("Il quoziente e': %f", quoziente);
break;
case '-':
sottrazione=a-b;
printf("La sottrazione e': %f", sottrazione);
break;
default:
printf("Hai inserito un carattere non consentito\n");
}
getchar();getchar();
return 0;
}


Non capisco dove sia l'errore. Il programma si compila correttamente ma quando vado ad eseguirlo, riesco ad inserire i due numeri ma dopo aver inserito il carattere mi "salta" direttamente al default anche se inserisco un carattere di quelle elencati nei CASE.
la sezione è errata. c'è la sottosezione sulla programmazione.

io è tanto che non programmo in C ma ad occhio e croce il programma interpreta l'operatore come valore numerico mentre nei case hai riportato le stringhe. ricorda che una stringa è un vettore.

la soluzione sbagliata consiste nel togliere le virgolette dai case...
cioè se scrivi

case *

anzichè

case '*'

quando inserisci l'asterisco, senza le virgolette, viene selezionato il case corretto. però in questo caso puoi inserire il codice ascii corrispondente al carattere e il codice funziona ugualmente.

la soluzione corretta prevede che converti operatore in una stringa.
__________________
La favola dell'uccellino
Il lavoro debilita l'uomo
hibone è offline   Rispondi citando il messaggio o parte di esso
Old 29-12-2011, 13:40   #3
demos88
Senior Member
 
Iscritto dal: Nov 2004
Città: Padova
Messaggi: 2342
Nah... l'errore è che dopo il primo scanf, nello stream rimane un newline. E al secondo scanf non viene letto l'operatore ma il newline. Debuggando il codice si nota subito.
Prima dello scanf dell'operatore inserisci un fflush(stdin):
Codice:
fflush(stdin);
scanf("%c", &operatore);
Non dovresti avere più problemi
__________________
CPU Ryzen 2600 @ 3,95Ghz + Bequiet Dark Rock TF / MB Asus X470-F Gaming / RAM 2x8GB DDR4 G.Skill FlareX 3200 CL14 / VGA Sapphire RX 7900 XT Nitro+ @ 3200Mhz / SSD Samsung 970 Pro 512GB + Sandisk 240GB Plus + Sandisk 960GB Ultra II PSU Seasonic Platinum P-660 / Headset Kingston HyperX Flight
demos88 è offline   Rispondi citando il messaggio o parte di esso
Old 29-12-2011, 19:12   #4
hibone
Senior Member
 
L'Avatar di hibone
 
Iscritto dal: Jan 2006
Città: Vergate Sul Membro (MI)
Messaggi: 16538
Quote:
Originariamente inviato da demos88 Guarda i messaggi
Nah... l'errore è che dopo il primo scanf, nello stream rimane un newline. E al secondo scanf non viene letto l'operatore ma il newline. Debuggando il codice si nota subito.
Prima dello scanf dell'operatore inserisci un fflush(stdin):
Codice:
fflush(stdin);
scanf("%c", &operatore);
Non dovresti avere più problemi
chiedo scusa per aver detto una cazzata allora
__________________
La favola dell'uccellino
Il lavoro debilita l'uomo
hibone è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori Sony INZONE H6 Air: il primo headset open-back d...
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA Nutanix cambia pelle: dall’iperconvergenza alla ...
Recensione Xiaomi Pad 8 Pro: potenza bruta e HyperOS 3 per sfidare la fascia alta Recensione Xiaomi Pad 8 Pro: potenza bruta e Hyp...
NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abbiamo provato il tris d'assi di NZXT NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abb...
ASUS ROG Swift OLED PG34WCDN recensione: il primo QD-OLED RGB da 360 Hz ASUS ROG Swift OLED PG34WCDN recensione: il prim...
L'IA ha fatto incetta anche di processor...
Affidabilità delle GPU NVIDIA cro...
Maxi incendio in un parcheggio BYD: fiam...
Apple potrebbe diventare il terzo produt...
L'IA aiuta i computer quantistici con i ...
Nutanix Database Platform è ora i...
iliad lancia il 5G Standalone in Italia:...
Alexa+ da oggi disponibile anche in Ital...
SpaceX Starship: Ship 39 ha eseguito il ...
Auto usate: Peugeot 3008 tra le peggiori...
YMTC, il produttore di memorie 100% cine...
I gamer rinunciano alla RAM ma non agli ...
Oltre 100 estensioni Chrome malevole rub...
Multi Frame Generation 5x e 6x anche su ...
Kraken sotto ricatto dopo due accessi in...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 04:45.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v