Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    [C]Numero compreso nella cifra

    Ciao
    devo creare un programma che dato una cifra scelta dall'utente ti dica se al suo interno è presente il numero scelto dall'utente.
    il problema che io rieco a farlo finoa 4 cifre e poi se volessi fare lo stesso procedimento solo che con numeri più grandi dovrei fare troppe variabili, dovei quindi creare un ciclo for che faccia al caso mio, però non ne sono capace.
    qualcuno potrebbe spioegarmi come fare?
    codice:
    #include <stdio.h>
    main()
    {
       int cif, temp1, temp2, n1, n2, n3, n4, num;
    
       printf ("Inserisci una cifra (4 numeri): ");
       scanf ("%d", &cif);
       printf("Inserisci un numero: ");
       scanf("%d", &num);
       temp1 = cif;
       n1 = temp1 / 1000;
       temp2 = temp1 % 1000;
       n2 = temp2 / 100;
       temp1 = temp2 % 100;
       n3 = temp1 / 10;
       n4 = temp1 % 10;
       if(num==n1 || num==n2 || num==n3 || num==n4)
        printf("Il numero %d è presente nella cifra", num);
        else
        printf("Il numero %d non e\' presente nella cifra", num);
       // end if
       printf("\n");
       system ("pause");
    }
    ciao e grazie
    Your time is limited, so don't waste it living someone else's life. Stay hungry, stay foolish. (Steve Jobs)

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Devi scrivere un ciclo che continui a dividere per 10 ... è semplice ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    ma cosa dovrei mettere come printf?
    Your time is limited, so don't waste it living someone else's life. Stay hungry, stay foolish. (Steve Jobs)

  4. #4
    Se non ho capito male vuoi fare in modo che dato un certo numero, si individui quante volte un altro numero dato dall'utente si trova all'interno del numero dato in precedenza. Io non lavorerei con variabili di tipo numerico, ma stringhe. Un numero è un carattere almeno quanto una lettera dell'alfabeto. Prendi in input il numero sotto forma di stringa:
    codice:
    ......
    char numero[x];
    char cifra;
    int i, count=0;
    scanf("%s",numero);
    scanf("%c",cifra);
    for(i=0;i<strlen(numero);i++){
        if(numero[i]==cifra){
            count++;
        }
    }
    .....
    Devi ovviamente includere l'header string.h

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da 21Edoardo96
    ma cosa dovrei mettere come printf?
    Hai provato a scrivere un ciclo in cui dividi per 10 il numero e continui a dividere il risultato?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Si ho provato ma non funziona, continua a stampare a schermo sempre 0,come posso fare per risolvere questo problema?

    Ciao e grazie
    Your time is limited, so don't waste it living someone else's life. Stay hungry, stay foolish. (Steve Jobs)

  7. #7
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    La programmazione procedurale è efficace se dividi il problema in sottoproblemi.Innanzitutto farei una funzione (banale) che dato un carattere ti restituisce il corrispettivo intero (es: '9' -> 9), poi prenderi in input una stringa.
    Ora si tratta di fare un' altra funzione che data una stringa, usa la funzione precedentemente fatta e scandisce tutti i caratteri della stringa.All' interno di un while, confronti il risultato di quella funzione (ovviamente passandogli come parametro il carattere che stai scandendo) con numero che stai cercando.Se sono uguali esci dal ciclo e ti memorizzi in una variabile booleana che il numero è stato trovato.

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da 21Edoardo96
    Si ho provato ma non funziona, continua a stampare a schermo sempre 0,come posso fare per risolvere questo problema?

    Ciao e grazie
    Non chiedere sempre come fai a risolvere.

    Mostraci quello che hai scritto, commentalo, spiegaci ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Ciao
    ho riscritto il codice ma non funziona ancora, perchè non mi appare niente aq schermo e poi anche perchè penso che ci sia un errore nel programma che però non riesco a trovare.
    codice:
    #include <stdio.h>
    main()
    {
       int cif, num, rest, i;
       printf ("Inserisci una cifra: ");
       scanf ("%d", &cif);
       printf("Inserisci un numero: ");
       scanf("%d", &num);
       do
          {
           rest= cif%10; //da il resto
           cif= cif/10;//da il risultato della divisione
          }
       while(cif>num);
       if(rest != num)
       printf("Il numero %d non è presente nella cifra", num);
       else 
           {
                while(rest=num)
                {i++;
                }
                printf("Il numero %d e\' presente %d nella cifra", num, i);  
        }      
       printf("\n");     
       system("pause");   //blocco schermo 
    }
    Ciao e grazie
    Your time is limited, so don't waste it living someone else's life. Stay hungry, stay foolish. (Steve Jobs)

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Fai confusione tra cifra e numero ... !

    Devi dividere il numero per 10 non la cifra !

    E quindi le frasi devono essere

    "La cifra %d è presente nel numero"

    o

    "La cifra %d non è presente nel numero"
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.