Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    35

    [C] Esplorazione elementi di un numero

    Salve sono uno studente del primo anno di informatica presso la sapienza, quindi se è (e probabilmente lo è) una domanda sciocca vi prego di perdonarmi
    Non è che sapreste dirmi come faccio a esplorare le cifre di un numero ricavato con scanf ? Per dirvi devo trovare la 4 cifra del numero N che trovo con uno scanf..

    Insomma devo leggere la 4cifra di 233367 e devo capire se è maggiore o meno di 6 (dati a caso per farvi capire)

    Non mi consigliate robe complesse perchè non le ho fatte ed ad una esercitazione il mio prof penso si stranirebbe, fino ad ora ho fatto cenni di array, iterazioni e le altre basi.


    edit: scusate se mi son spiegato male, ma sono stanchissimo

  2. #2
    Quarta cifra contando da sinistra o da destra?
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    35
    Originariamente inviato da MItaly
    Quarta cifra contando da sinistra o da destra?

    Boh indifferente, quello era un esempio strutturato male. Mi serve poter considerare cifra per cifra il numero

  4. #4
    Il tuo numero ha un numero preciso di cifre? In ogni caso puoi fare così:
    codice:
      
        char string [6]; 
        scanf("%s", string);
        //ovviamente string[n] restituisce la cifra alla posizione n
        //per compararla con un altra cifra la devi convertire in intero

    Ciao


    PS: spero che all'Università ti spieghino che scanf non è una funzione eccezionale e che bisognerebbe evitare di usarla..

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    35
    Originariamente inviato da MdE2005
    Il tuo numero ha un numero preciso di cifre? In ogni caso puoi fare così:
    codice:
      
        char string [6]; 
        scanf("%s", string);
        //ovviamente string[n] restituisce la cifra alla posizione n
        //per compararla con un altra cifra la devi convertire in intero

    Ciao


    PS: spero che all'Università ti spieghino che scanf non è una funzione eccezionale e che bisognerebbe evitare di usarla..
    Ce la stanno facendo usare in lungo e in largo XD


    Il fatto è che non abbiamo ancora affrontato in modo approfondito le stringhe, ciò significa che non posso risolvere il problema ?

    Parlando concretamente ho due problemi che secondo me richiedono una soluzione del genere... ovverosia

    Trovare all'interno di un numero quanti picchi ci sono in un numero dove un picco è quella cifra che è maggiore sia della precedente sia della successiva

    L'altro potrebbe non doversi risolvere così, ma mi chiede di di trovare se un numero è pari perfetto (una cosa del genere) ovverosia che tutte le sue cifre sono pari.

  6. #6
    1° problema: scorri l'array string con un ciclo for; e verifica ad ogni ciclo che gli elementi precedente e successivo siano minori; se è così, quell'elemento è un "picco" e puoi salvare il suo indice in una seconda matrice (o dove vuoi te)

    2° problema: sempre con un ciclo for, scorri gli elementi della matrice controllando ad ogni ciclo che l'elemento sia un numero pari (numero%2 = 0).
    Pseudocodice:
    codice:
    miastringa = "123456"
    int pari = 0;
    for (i=0; i<=6; i++){
      if (miastringa(i)MOD2 !=0)
        pari = 1; break;
    }
    if pari = 1
      stringa non pura 
    else
      stringa pura

    Ciao

  7. #7
    Originariamente inviato da MdE2005

    PS: spero che all'Università ti spieghino che scanf non è una funzione eccezionale e che bisognerebbe evitare di usarla..

    Cosa proponi di utilizzare al posto di scanf e perchè?
    Fracty - The Fractal Generator



    If you cannot choose a concise name that expresses what the method does, it is possible that your method is attempting to perform too many diverse tasks.

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    35
    Originariamente inviato da MdE2005
    1° problema: scorri l'array string con un ciclo for; e verifica ad ogni ciclo che gli elementi precedente e successivo siano minori; se è così, quell'elemento è un "picco" e puoi salvare il suo indice in una seconda matrice (o dove vuoi te)

    2° problema: sempre con un ciclo for, scorri gli elementi della matrice controllando ad ogni ciclo che l'elemento sia un numero pari (numero%2 = 0).
    Pseudocodice:
    codice:
    miastringa = "123456"
    int pari = 0;
    for (i=0; i<=6; i++){
      if (miastringa(i)MOD2 !=0)
        pari = 1; break;
    }
    if pari = 1
      stringa non pura 
    else
      stringa pura

    Ciao

    Il problema ti ripeto è che non ho fatto ancora le stringhe come argomento e come valore in input non ho una stringa ma un numero

  9. #9
    Originariamente inviato da cifa
    Il problema ti ripeto è che non ho fatto ancora le stringhe come argomento e come valore in input non ho una stringa ma un numero
    1. chi sta usando le stringhe? Sto usando i char, che non sono stringhe

    2. esistono funzioni che permettono di castare dei valori in tipi di dati diversi dall'originale, come per esempio la funzione strtol per convertire un char a long int .


    Ciao

  10. #10
    Con una divisione intera per un'adeguata potenza di 10 togli le cifre a destra della cifra che ti interessa, applicando poi l'operatore modulo con argomento 10 elimini tutte le cifre a sinistra.

    Esempio:

    123456789, voglio sapere la quarta cifra contando da destra (ossia 6)
    123456789/10^(4-1)=123456789/1000=123456
    123456 % 10 = 6

    Tieni conto però che in C non esiste una funzione per le potenze intere, per cui o utilizzi la pow ricordandoti poi di effettuare il casting ad intero del risultato (altrimenti la divisione viene effettuata in virgola mobile, per cui non ottieni il troncamento delle cifre desiderato), oppure ti puoi scrivere facilmente una funzione intpow per elevare un numero intero ad una potenza intera qualsiasi.
    Amaro C++, il gusto pieno dell'undefined behavior.

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.