RISOLTO Cerco un aiuto per un programma in c

Stato
Discussione chiusa ad ulteriori risposte.

Lucio001

Nuovo Utente
16
3
Ciao a tutti, non riesco a capire qual'è il problema in questo programma scritto in c, l'errore che mi dà non è di sintassi ma del programma (e scritto in basso) qualcuno più esperto di me può aiutarmi?
C:
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int n,i;
    i=0;
    n=0;
    i=1+(rand() %100);
    printf("Inserici il tuo numero FORTUNATO\n");
    prinf("inserisci un numero: ");
    scanf("d%", &n);
    if(n=i) {
        prinf("HAI VINTO");
    }    else {
        printf("HAI PERSO ritenta");
    }
    return 0;
}
 
Ultima modifica:

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,223
1,853
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
Per favore riporta il codice sul forum, non utilizzando uno screenshot. Devi racchiudere il codice nel tag CODE, se non sai come si fa, puoi consultare il Regolamento e informazioni utili sulla sezione programmazione. ?

A occhio noto alcuni errori: non stai inizializzando il seme srand(time(NULL));, cosa da fare prima di utilizzare rand().
L'altro errore è sicuramente la condizione dell'if: "uguale a" è il doppio uguale ==, non il singolo.
Un altro errore è lo specificatore di formato sullo scanf: lo specificatore è %d, non il contrario.
Un altro errore ancora è la funzione, che si chiama printf.

Quindi questo codice non compila nemmeno. Impara a leggere gli errori che ti dà il compilatore (eg. "undefined reference to prinf").

Ad ogni modo non ti serve inizializzare le variabili a 0, se prima di usarle modifichi comunque il loro valore (n lo leggi in input mentre la 'i' è generata random).


EDIT:
vedo che hai editato con il codice, hai fatto bene, hai anticipato il mio intervento.
Verifica però bene il testo, perchè hai "tagliato" una parola con il codice.
In merito allo screenshot lascialo, oppure riporta l'output quando compili.
 
  • Mi piace
Reazioni: Lucio001

Lucio001

Nuovo Utente
16
3
Per favore riporta il codice sul forum, non utilizzando uno screenshot. Devi racchiudere il codice nel tag CODE, se non sai come si fa, puoi consultare il Regolamento e informazioni utili sulla sezione programmazione. ?

A occhio noto alcuni errori: non stai inizializzando il seme srand(time(NULL));, cosa da fare prima di utilizzare rand().
L'altro errore è sicuramente la condizione dell'if: "uguale a" è il doppio uguale ==, non il singolo.
Un altro errore è lo specificatore di formato sullo scanf: lo specificatore è %d, non il contrario.
Un altro errore ancora è la funzione, che si chiama printf.

Quindi questo codice non compila nemmeno. Impara a leggere gli errori che ti dà il compilatore (eg. "undefined reference to prinf").

Ad ogni modo non ti serve inizializzare le variabili a 0, se prima di usarle modifichi comunque il loro valore (n lo leggi in input mentre la 'i' è generata random).


EDIT:
vedo che hai editato con il codice, hai fatto bene, hai anticipato il mio intervento.
Verifica però bene il testo, perchè hai "tagliato" una parola con il codice.
In merito allo screenshot lascialo, oppure riporta l'output quando compili.
Grazie dell'aiuto ora compila ma qualsiasi numero io scriva mi dice sempre "hai vinto", ho sbagliato qualcosa nell'if?
 
  • Mi piace
Reazioni: DispatchCode

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,223
1,853
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
Grazie dell'aiuto ora compila ma qualsiasi numero io scriva mi dice sempre "hai vinto", ho sbagliato qualcosa nell'if?

Si, probabilmente non hai modificato utilizzando l'operatore per effettuare il confronto, ovvero ==.
Dovresti riportare il codice che hai modificato però, così vediamo se è tutto ok.
 
  • Mi piace
Reazioni: Lucio001

Lucio001

Nuovo Utente
16
3
Si, probabilmente non hai modificato utilizzando l'operatore per effettuare il confronto, ovvero ==.
Dovresti riportare il codice che hai modificato però, così vediamo se è tutto ok.
C:
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int n;
    srand(time(NULL));
    i=1+(rand() %100);
    printf("Inserici il tuo numero FORTUNATO\n");
    printf("inserisci un numero: ");
    scanf("%d", &n);
    if(n==i) {
        printf("HAI VINTO");
    }    else {
        printf("HAI PERSO ritenta");
    }
    return 0;
}
questo è con le correzioni
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,223
1,853
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
Bhe si, ti manca un include file, #include <time.h> e la variabile 'i' non è dichiarata (manca il tipo).
 

Lucio001

Nuovo Utente
16
3
Bhe si, ti manca un include file, #include <time.h> e la variabile 'i' non è dichiarata (manca il tipo).
Ho aggiunto time.h e ho dichiarato la variabile, ma mi dà ancora sempre l'opzione "Hai vinto", altri consigli.
P.S. Grazie mille peri consigli precedenti!!
C:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
    int n,i;
    srand(time(NULL));
    i=1+(rand() %100);
    printf("Inserici il tuo numero FORTUNATO\n");
    printf("inserisci un numero: ");
    scanf("%d", &n);
    if(n==i) {
        printf("HAI VINTO");
    }    else {
        printf("HAI PERSO ritenta");
    }
    return 0;
}
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,223
1,853
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
Io non vedo errori, verifica che stai effettivamente compilando e che non ti sta eseguendo lo stesso file exe di prima.
Puoi anche provarlo online: https://onlinegdb.com/PXRIsIk-I
 
  • Mi piace
Reazioni: Lucio001

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,223
1,853
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
Ottimo, chiudo essendo risolto il problema.
Se hai domande o vuoi qualche dritta, apri pure un altro topic.
 
  • Mi piace
Reazioni: Lucio001
Stato
Discussione chiusa ad ulteriori risposte.

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili