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

    [C#] Ricerca di parole chiave nel programma

    Buongiorno, ho un problema vista la mia non troppa esperienza con il linguaggio C#.
    Mi sto divertendo a creare programmi, solamente ho una lacuna che vorrei "ricucire". Sono in sviluppo con un software abbastanza complicato, e senza spiegarvi il tutto cercherò di essere il più chiaro possibile con un esempio banale.

    string A = "a";
    string B = "b";
    string C = "c";

    Console.Write("Scegli un numero da 1 a 4 e ti dirò la lettera corrispettiva: ");
    int scelta = Convert.ToInt32(Console.ReadLine());

    switch (scelta)
    {
    case 1:
    Console.WriteLine(A);
    break;
    case 2:
    Console.WriteLine(B);
    break;
    case 3:
    Console.WriteLine(C);
    break;
    case 4:
    Console.WriteLine(C);
    break;
    }
    Console.ReadLine();

    Questo programma associa ogni numero inserito dall'utente ad una lettera. 1,2,3 in questo caso con a,b,c. Quello che vorrei sapere è: come creare una ricerca delle lettere trovando il numero corrispettivo associato, cioè l'utente inserisce una lettera in console e lui mi dice a che numero (carattere/ stringa ecc..) corrisponde nel metodo switch. In poche parole da poter fare il contrario! Quindi inserire la lettera e ritornarmi un valore del tipo : C è inserito in 3 e 4.

    Ho provato a creare un vettore "lettere" ma non ci riesco a venir fuori.

    Qualcuno può aiutarmi? grazie

  2. #2
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    premesso che come soluzione al problema è indecente. Ma sorvoliamo in fondo stai imparando giusto?

    basta fare esattamente come hai gia fatto, con qualche piccola modifica:

    codice:
    int Uno = 1;
    int Due= 2;
    int Tre= 3;
    
    Console.Write("Scegli una lettera da A a C e ti dirò il numero: ");
    string scelta = Console.ReadLine();
    
    switch (scelta)
    {
    case "a":
    Console.WriteLine(UNO);
    break;
    case "b":
    Console.WriteLine(DUE);
    break;
    case "c":
    Console.WriteLine(TRE);
    break;
    default:
    Console.WriteLine("La stringa inserita non corrisponde a nessun numero");
    break;
    }
    Console.ReadLine();

  3. #3
    Non mi sono spiegato bene.
    Il programma è quello e non deve essere modificato! devo aggiungere una ricerca dei valori contrari.

    Ti faccio un esempio forse più chiaro dicendo:
    Un programma di ricette, dove l'utente in console inserisce una ricetta per avere tutti gli ingredienti che servono per prepararla.
    Aggiungo al programma una variante nella quale l'utente può tramite gli ingredienti che possiede (che li inserirà in console), trovare le ricette che contengono quegli ingredienti.
    Ricette in questo caso sono i numeri 1,2,3,4 (nell'esempio indicato da me) e ingredienti sono le lettere (nell'esempio indicato da me).
    Quindi fare una ricerca contraria non modificando nulla.
    Spero di essere stato chiaro.

  4. #4
    Utente di HTML.it L'avatar di escocat
    Registrato dal
    Feb 2012
    Messaggi
    308
    c'è una relazione lineare fra i caratteri 'a', 'b', 'c' e i numeri 1, 2, 3...attraverso il codici ascii. Scrivi che se inserisci un carattere tolga TOT dal suo codice ascii, mentre se inserisci un numero aggiunga TOT e ti dia il carattere con quel codice...

  5. #5
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    e vabbè posta codice reale, problema reale e facci capire a che livello sei perche dallo snippet che hai postato sembra e si evince che tu abbia un esperienza di tre ore e mezzo di programmazione e non sappia nemmeno cosa sia un array...

  6. #6
    Originariamente inviato da rsdpzed
    e vabbè posta codice reale, problema reale e facci capire a che livello sei perche dallo snippet che hai postato sembra e si evince che tu abbia un esperienza di tre ore e mezzo di programmazione e non sappia nemmeno cosa sia un array...
    Ho provato a postare un codice messo su qui in 5 minuti per farvi capire in modo chiaro il mio problema, se dovrei postare tutto il mio codice sorgente penso che occuperei 2 pagine di thread.
    Come indicato sopra, il software è un raccoglitore di ricette, che selezionando la ricetta vengono elencati tutti gli ingredienti con il proprio quantitativo. Tutto in modo basilare con un switch. Dovrei creare un bottone di Cerca per una RICERCA CONTRARIA, hai gli ingredienti e voglio trovare che ricetta posso fare.
    Tutti gli ingredienti gli ho sistemati in un array e utilizzato un ciclo while per trovare la posizione in cui si trova "l'ingrediente" nell'array (ma questo non so se sia utile) (anzi inutile per l'utente).

    string valoreDaCercare = (txtElementoCerca.Text);
    int i = 0;
    bool trovato = false;

    while (i < 100 & !trovato) //! operatore NOT, significa se trovato è false fa il ciclo while
    {
    if (valoreDaCercare == vettore[i])
    trovato = true;
    i++;
    }

    if (trovato)
    lblRisultato.Text = "Valore trovato alla posizione " + (i - 1).ToString();
    else
    lblRisultato.Text = "Valore non trovato";

    Volevo un aiuto su come continuare con la ricerca contraria.

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Il problema fondamentale del tuo quesito è che ancora non si è capito come sono organizzati questi dati di cui parli (le ricette) e come sono memorizzate.

    Se non puoi postare tutto il tuo codice, almeno facci un esempio di come viene memorizzata una ricetta. Facci un solo esempio, ma dei dati reali.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Utente di HTML.it L'avatar di escocat
    Registrato dal
    Feb 2012
    Messaggi
    308
    Originariamente inviato da Enjoy Love
    Dovrei creare un bottone di Cerca per una RICERCA CONTRARIA, hai gli ingredienti e voglio trovare che ricetta posso fare.
    La chiave di ricerca "al contrario" è un solo ingrediente? Cioè tu vuoi sapere, dato UN ingrediente, che ricette sono disponibili con QUELL' ingrediente?
    Oppure per cercare una ricetta devi fornire come chiave di ricerca più ingredienti? (2, 3, ...)
    Non ti basta un vettore a 2 dim? Il primo indice riguarda la ricetta, il secondo gli ingredienti. Con 2 indici hai voglia a fare ricerche, ti puoi sbizzarrire....

  9. #9
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    - Sai cos'è una classe e l'oop in generale?
    - Conosci le collection in c#?
    - e le generic Collection?
    - sai cosa sono gli enumeratori e come c# semplifica il loro utilizzo grazie all'interfaccia IEnumerable?
    - sai come funziona foreach in c#?

    questi sono argomenti fondamentali in c#, non si puo parlare di soluzioni senza conoscerli, lo dico perche dagli snippet ho come l'impressione che tu non li mastichi bene.

    Dando per scontato che mi sbagli, questa potrebbe essere una soluzione:
    Crea una classe Ricetta tra le cui proprietà vi è un elenco di ingredienti (solo i nomi o anche le quantità?). Crea un metodo nella classe che dato in input un elenco di ingredienti (una collection) ti dice se l'elenco degli ingredienti della ricetta è un suo sott'insieme.
    Il tuo ricettario è la lista delle ricette e quando avrai un elenco di ingredienti non devi far altro che darlo in input al metodo di cui sopra per ogni ricetta nella tua lista di ricette.

  10. #10
    Originariamente inviato da rsdpzed
    - Sai cos'è una classe e l'oop in generale?
    - Conosci le collection in c#?
    - e le generic Collection?
    - sai cosa sono gli enumeratori e come c# semplifica il loro utilizzo grazie all'interfaccia IEnumerable?
    - sai come funziona foreach in c#?

    questi sono argomenti fondamentali in c#, non si puo parlare di soluzioni senza conoscerli, lo dico perche dagli snippet ho come l'impressione che tu non li mastichi bene.

    Dando per scontato che mi sbagli, questa potrebbe essere una soluzione:
    Crea una classe Ricetta tra le cui proprietà vi è un elenco di ingredienti (solo i nomi o anche le quantità?). Crea un metodo nella classe che dato in input un elenco di ingredienti (una collection) ti dice se l'elenco degli ingredienti della ricetta è un suo sott'insieme.
    Il tuo ricettario è la lista delle ricette e quando avrai un elenco di ingredienti non devi far altro che darlo in input al metodo di cui sopra per ogni ricetta nella tua lista di ricette.
    So cos'è una classe e conosco il linguaggio orientato agli oggetti, conosco le generic Collection e il ciclo foreach con le liste. Non conosco bene gli enumeratori e il loro utilizzo.
    Tutto quello che mi hai scritto mi è stato molto utile, anzi fondamentale! L'unico concetto che non riesco ancora a mettere in pratica è: come creare un insieme di "ricette" collegato a un sotto-insieme di esso con gli "ingredienti"? Mi conviene creare una classe generica "RICETTA" con tante classi quante le "Ricette" e creami una Collection di "ingredienti" in ognuna di esse?

    ps: Ovviamente la mia conoscenza del linguaggio C# non è eccelsa, altrimenti non sarei qui a chiedere aiuto. Riesco ad individuare il problema, metterlo su carta, ma non trasformarlo in codice (sopratutto per inserire la ricerca dell'ingrediente in tutte le ricette e ottenere una frase del tipo: "l'ingrediente uovo, è presente nelle seguenti ricette: ... ..."

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.