Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    57

    [c] sommare stringa di numeri

    ciao a tutti vorrei un spiegazione, ho un variabile x, con la scanf prendo in input un numero intero assegnato a x naturalmente, esempio 345, con sto 345 e con un ciclo for(obligato) deve fare la somma di 3+4+5 e memorizzare il risultato in un'altra variabile, come faccio grazie a tutti
    †NN PUò PIOVERE PER SEMPRE†

  2. #2
    Curioso, è la seconda volta in pochi giorni che si presenta un quesito simile.
    vedi "[C++] Array delle cifre" del 23-10-2007 in questo stesso forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    57
    ciao macapp e grazie per la risposta avevo gia visto quella discussione, il mio problema e che non posso utilizzare gli array.
    †NN PUò PIOVERE PER SEMPRE†

  4. #4
    Inizializzi una variabile di nome (arbitrario) sigma a zero.

    Prendi il numero (345) lo dividi per 100, scarti il resto ed ottieni 3 che aggiungi a sigma;
    Al numero (345) togli 3*100 ed ottieni 45;

    Prendi il numero (che ora è diventato 45) lo dividi per 10, scarti il resto ed ottieni 4 che aggiungi a sigma;
    Al numero (45) togli 4*10 ed ottieni 5;

    Prendi il numero (che ora è diventato 5) lo dividi per 1, scarti il resto ed ottieni 5 che aggiungi a sigma";

    Ora si tratta di tradurre 'sto ragionamento in C.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    57
    il numero viene inserito dall'utente tramite la scanf, per cui ci si può trovare anche di fronte a un intero com 400000, o 56793

    il metodo da te consigliato funzia solo per numeri >=999.
    poi ho il vincolo di usare il for e solo due variabili, esempio x,y dove x è la variabile a cui verrà assegnato il numero inserito dall'utente e in y verra assegnato il risultato che devo ottenere,
    se inserisco 3456, il programma deve effettuare questa somma 3+4+5+6=18, allora y=18
    e poi mi dovra stampare ecc ecc.
    †NN PUò PIOVERE PER SEMPRE†

  6. #6
    Originariamente inviato da Crow©
    il numero viene inserito dall'utente tramite la scanf, per cui ci si può trovare anche di fronte a un intero com 400000, o 56793

    il metodo da te consigliato funzia solo per numeri >=999.
    poi ho il vincolo di usare il for e solo due variabili, esempio x,y dove x è la variabile a cui verrà assegnato il numero inserito dall'utente e in y verra assegnato il risultato che devo ottenere,
    se inserisco 3456, il programma deve effettuare questa somma 3+4+5+6=18, allora y=18
    e poi mi dovra stampare ecc ecc.
    Eccoti una possibile soluzione, utilizzando due sole variabili, tediosa proprio per il limite imposto.
    codice:
    #include <iostream>
    #include <cmath>
    
    int main (){
    //
    // Compiled and tested with:
    // i686-apple-darwin8-gcc-4.0.1 (GCC) 4.0.1 (Apple Computer, Inc. build 5367)
    //
    // Only 2 variables request,
    // that's why repeating usually unnecessary call to log10 and pow.
    //
    // Examples tested:
    // input: 345, output 12;
    // input: 3456, output 18;
    // input: 56793, output 30;
    //
    	int aNum, aSigma = 0; // the only 2 variables admitted
    	std::cin >> aNum;
    	while (static_cast <int> (std::log10 (aNum)) >= 0){
    		aSigma += aNum/std::pow (10.0, static_cast <int> (std::log10 (aNum)));
    		aNum -= static_cast <int> (aNum/std::pow (10.0, static_cast <int> (std::log10 (aNum))))*std::pow (10.0, static_cast <int> (std::log10 (aNum)));
    	}
    	std::cout << aSigma;
    	return 0;
    }
    edit: ops è in C++, convertirlo in C è proprio facile facile ;-)

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.