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

DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici
DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici
DJI porta un importante aggiornamento alla sua linea di gimbal camera tascabili con Osmo Pocket 4: sensore CMOS da 1 pollice rinnovato, gamma dinamica a 14 stop, profilo colore D-Log a 10 bit, slow motion a 4K/240fps e 107 GB di archiviazione integrata. Un prodotto pensato per i creator avanzati, ma che convince anche per l'uso quotidiano
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
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


DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici DJI Osmo Pocket 4: la gimbal camera tascabile cr...
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...
La NASA ha confermato il supporto per il...
Sierra Space ha completato il test acust...
Ryzen 7 5800X3D pronto a tornare sul mer...
NASA: l'amministrazione Trump prosegue s...
L'Iran avrebbe acquistato un satellite p...
VivaTech compie dieci anni e raddoppia p...
Le vendite di CPU si sono ridotte di 25 ...
Starship: SpaceX ha completato lo static...
Huawei FusionSolar Roadshow 2026: l'inno...
Nuovo trailer per Street Fighter: un fil...
Sovranità sui dati: arriva la pri...
Schede video NVIDIA e AMD di nuovo su Ma...
Robot aspirapolvere, TV OLED, iPhone 17 ...
EUREKA J15 Pro Ultra super interessante ...
Intel porta l'AI nei notebook entry-leve...
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: 22:12.


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