Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [c] problema con il programma per la morra cinese

    #include<stdio.h>
    Salve.
    Sul mio libro c'è proposto come esercizio di trasformare in codice l'algoritmo del gioco della morra cinese.
    praticamente devo fare un programma che chieda all'utente di inserire da tastiera:
    carta, forbice o sasso.

    E, tenendo presente che forbice vince su carta; carta vince su sasso; sasso vince su forbice, deve apparire a video se vince il primo giocatore oppure se vince il secondo...
    Ho provato a scrivere questo programma ma non funziona, e purtroppo non ci sono le soluzioni sul libro... Che errori ho fatto?

    int main()
    {
    char x,y,carta,forbice,sasso;

    printf("inserisci il primo nome:");
    scanf("%d",&x);
    printf("inserisci il secondo nome:");
    scanf("%d",&y);
    if(x==y)
    printf("il gioco è pari");
    else
    if(x=='b'&&y=='a'||x=='a'&&y=='c'||x=='c'&&y=='b')
    printf("ha vinto il primo giocatore");
    else
    printf("ha vinto il secondo giocatore");

    getch();
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    104

    Re: [c] problema con il programma per la morra cinese

    Originariamente inviato da allegria256
    #include<stdio.h>
    int main()
    {
    char x,y,carta,forbice,sasso;

    printf("inserisci il primo nome:");
    scanf("%d",&x);
    printf("inserisci il secondo nome:");
    scanf("%d",&y);

    }
    Ma scusa, definisci x e y come char e li carichi come interi?

  3. #3
    Ciao Irenicus...Chiedo scusa ho fatto confusione.
    Il programma dovrebbe essere questo:

    #include<stdio.h>
    int main()
    {
    char x,y,carta,forbice,sasso;

    printf("inserisci il primo nome:");
    scanf("%c",&x);
    printf("inserisci il secondo nome:");
    scanf("%c",&y);
    if(x==y)
    printf("il gioco è pari");
    else
    if(x=='forbice'&&y=='carta'||x=='carta'&&y=='sasso '||x=='sasso'&&y=='forbice')
    printf("ha vinto il primo giocatore");
    else
    printf("ha vinto il secondo giocatore");

    getch();
    }

    Ma non funazione comunque.

    Grzie sin d'ora per l'aiuto.

  4. #4
    Personalmente farei così...

    Codice PHP:
    int g1 = -1;
    int g2 = -1;
    int uscita = -1;
    do
    {
        
    printf("1 CARTA, 2 SASSO, 3 FORBICI");
        
    scanf("%d",&g1);
        
    printf("1 CARTA, 2 SASSO, 3 FORBICI");
        
    scanf("%d",&g2);

        
    printf("Vince giocatore %d"Controlla(g1g2));

        
    printf("Uscire? 1 No, 0 Si");
        
    scanf("%d",&uscita);
    }
    while (
    uscita != 0); 
    dove la funzione controlla è semplicemente questo:

    Codice PHP:
    int Controlla(int g1int g2)
    {
        
    int ris g1 g2;
        if (
    ris 0)
            return 
    abs(ris);
        else
            switch (
    abs(ris))
            {
                case 
    1:
                    return 
    2;
                case 
    2:
                    return 
    1;
            }

        return 
    0;

    Il codice è basato su questo presupposto:

    codice:
    carta = 1
    sasso = 2
    forbici = 3
    
    carta+sasso	=	1 - 2	=	-1	val<0 && abs(val)==1 -> 1°
    carta+forbici	=	1 - 3	=	-2	val<0 && abs(val)==2 -> 2°
    sasso+forbici	=	2 - 3	=	-1	val<0 && abs(val)==2 -> 1°
    forbici+sasso	=	3 - 2	=	1	val>0 && abs(val)==1 -> 2°
    forbici+carta	=	3 - 1	=	2	val>0 && abs(val)==2 -> 1°
    sasso+carta	=	2 - 1	=	1	val>0 && abs(val)==1 -> 2°
    Cerco ombrello vecchio, nuovo, moderno o antidiluviano; purché protegga da una pioggia che vien giù come Dio la manda. Fate presto che ho l’acqua alla gola. (Noè)

    C# programming and other stuffs

  5. #5
    Grazie per l'aiuto.Ma non c'ho capito molto.
    Il fatto è che ho pochissima dimestichezza con le funzioni, con lo switch ecc...

    Ma il codice che ho postato è proprio totalmente sbagliato?

  6. #6
    Originariamente inviato da allegria256
    Grazie per l'aiuto.Ma non c'ho capito molto.
    Il fatto è che ho pochissima dimestichezza con le funzioni, con lo switch ecc...

    Ma il codice che ho postato è proprio totalmente sbagliato?
    Non proprio, ma non puoi fare confronti tra stringhe o tra interi e caratteri o cose del genere in C...

    prova così:

    Codice PHP:
    #include<stdio.h>
    int main()
    {
    int g1,g2;

    printf("inserisci il primo nome: 1 CARTA, 2 SASSO, 3 FORBICI");
    scanf("%d",&g1);
    printf("inserisci il secondo nome: 1 CARTA, 2 SASSO, 3 FORBICI");
    scanf("%d",&g2);
    if(
    g1==g2)
        
    printf("il gioco è pari");
    else
        if(
    x==3&&y==1||x==1&&y==2||x==2&&y==3)
            
    printf("ha vinto il primo giocatore");
        else
            
    printf("ha vinto il secondo giocatore");

    getch();

    mantieni il tuo codice ma usi gli interi con cui è più semplice lavorare...
    Cerco ombrello vecchio, nuovo, moderno o antidiluviano; purché protegga da una pioggia che vien giù come Dio la manda. Fate presto che ho l’acqua alla gola. (Noè)

    C# programming and other stuffs

  7. #7
    Mille grazie per l'aiuto, ora funziona.

    Ciao!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.