"Conta lettera" in C#

giovedì 08 gennaio 2009 - 16.04

England Profilo | Newbie

Ciao a tutti,
stavo facendo un piccolo esercizio in C#, ma mi sono arenato. L'applicazione console che sto tentando di realizzare dovrebbe contare il numero di volte che una lettera si ripete in una parola digitata dall' utente. Vi posto il codice
-----------------------------------------------------------------------------------------------------------------------
string s;
char[] parola;
string scelta;
char[] arrayScelta;
char elemento;
double conta = 0;


Console.WriteLine("Inserisci una parola");
s = Console.ReadLine();


parola= s.ToCharArray();
Console.WriteLine("Digita la lettera che vuoi cercare");
scelta = Console.ReadLine();
arrayScelta = scelta.ToCharArray();


foreach ( char elemento in parola = scelta)
{
conta = conta + 1;
}




Console.WriteLine("Ci sono " + conta.ToString() + " elementi in questa parola");
Console.Read();
---------------------------------------------------------------------------------------------------------------------------]
Visual studio mi segnala 2 errori nel ciclo foreach:
1) Non e' possibile convertire implicitamente una stringa in caratteri
2) La variabile 'elemento' non puo' essere dichiarata a questo scopo perche' darebbe un significato diverso ad 'elemento', ecc.

So che e' un esercizio stupido, ma mi serve per capire gli array. In ogni caso, potreste aiutarmi a capire gli errori? Grazie in anticpo

aiedail92 Profilo | Expert

Ciao

Il primo errore è dovuto al fatto che nel foreach cerchi di assegnare alla variabile "parola", di tipo array di char, la variabile "scelta", che è di tipo string.

Poichè non è possibile convertire direttamente "string" in "char []", viene generato l'errore.

Comunque se stai cercando di usare il ciclo foreach per obbligare gli elementi di "parola" ad essere uguali a quelli di "scelta", sappi che non si può fare in questo modo, devi agire dopo con una if.

Il secondo errore invece deriva dal fatto che stai tentando di ridefinire una variabile nel foreach, che già avevi definito in precedenza (si tratta della variabile "elemento" che hai definito nella 5^ riga)

Il codice corretto diventa quindi questo:

//La parola immessa dall'utente string s; //La parola convertita in un array di char char[] parola; //Il carattere da trovare nella parola char scelta; ////Questo non serve //char[] arrayScelta; ////Questo lo definiamo più tardi //char elemento; //Il numero di caratteri trovati int conta = 0; //Legge la parola immessa dall'utente Console.WriteLine("Inserisci una parola"); s = Console.ReadLine(); //Converta la parola in array di char parola = s.ToCharArray(); //Legge la lettera che l'utente vuole cercare Console.WriteLine("Digita la lettera che vuoi cercare"); scelta = Console.ReadKey(true).KeyChar; //Cicla fra tutti i caratteri della parola immessa foreach (char elemento in parola) { //Se il carattere della parola è uguale a quello da trovare... if (elemento == scelta) { //Incrementa il numero di caratteri trovati conta = conta + 1; } } //Scrive il risultato sulla Console Console.WriteLine("Ci sono " + conta.ToString() + " elementi in questa parola"); Console.Read();

Luca

England Profilo | Newbie

Gira come un violino, grazie!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5