Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [C#]Fattorizzazione

  1. #1

    [C#]Fattorizzazione

    Salve a tutti,, ho appena creato questo programma: Factorize.
    Esso, ricevuto un intero positivo.. lo scompone in fattori primi.
    Questo è il sorgente:

    codice:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main()
            {
                int n;
                int div = 2;
                string divw;
                int risc = 1;
                string tmp;
                System.Console.WriteLine("Fattorizzatore v0.8");
                System.Console.WriteLine("Inserisci il numero da scomporre");
                tmp = System.Console.ReadLine();
                n = System.Convert.ToInt32(tmp);
                string risw = ("i fattori di "+ tmp + " sono -->");
                int ris = n;
                //inizia il processo di fattorizzazione
                while (n / risc != 1)
                {
                    if (ris % div == 0)
                    {
                        divw = System.Convert.ToString(div);
                        ris = ris / div;
                        risc = risc * div;
                        risw = (risw + " " + divw);
                    }
                    else
                    {
                        div++;
                    }
                }
                System.Console.WriteLine(""+risw+"");
                System.Console.WriteLine("Matteppi ha offerto gentilmente questo software");
                System.Console.WriteLine("Grazie a 'Gibbo' per la fase di Debug");
                System.Console.ReadLine();
            }
            
    
        }
    }
    Il programma così funziona.. però, dato com einput, ad esempio 8...
    da come risultato 8 --> 2 2 2
    Come posso fare per radunare questi 2 2 2 in un 2^3..?
    Ovviamente deve vale anche per tutti gli altri fattori
    ad esempio
    avendo un 2 2 3 3 3 3 5 7 7, dovrà risultare 2^2 3^4 5 7^2
    Un altra cosa, c'è un comando che dice, un avolta finito, riavvia il processo se richiesto(ad esempio con la pressione di uno specifico tasto)

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Moderazione

    Il regolamento va letto prima di postare:

    1) C# viene trattato nell'area riservata a lui e a tutti i suoi fratelli .NET
    2) Il codice va postato utilizzando l'apposito tag CODE.

    Correggo ove possibile e sposto.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    invece di mettere i numeri direttamente in una stringa mettili in un array di interi poi li cicli e finchè trovi occorrenze di uno stesso numero incrementi un contatore.. poi metti nella stringa finale..

  4. #4
    ehm.. nn ci ho capito nulla..XD..
    ho iniziato da poco a programmare.. e per me gli array sono ancora una cosa.. molto lontana..^^

  5. #5
    In realtà la cosa migliore credo che sarebbe una hashlist generic fortemente tipizzata che contenga come chiave il fattore e come valore il numero di occorrenze di tale fattore riscontrate, ma se non sai ancora usare neanche gli array la vedo grigia...
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    Ciao da premettere che programmo in c,
    anch'io ho realizzato un programma che scompone un numero in fattori primi...
    E ho poi sviluppato una funzione che ricevuti in input "la potenza eplicita", ad esempio 2 2 2, restituisca 2^3 ecc. Se può interessarti ti mando l'algoritmo (il nostro pane quotidiano)
    un salutone!!

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 © 2025 vBulletin Solutions, Inc. All rights reserved.