Kezdőoldal » Számítástechnika » Programozás » Hogyan tudnám megírni, hogy...

Hogyan tudnám megírni, hogy ne írja ki, ha 2 leghoszabb szó van? (C#)

Figyelt kérdés

Hali!Írtam egy ilyen programot:


static void Main(string[] args)

{

string[] szavak = new string[10];

int maxhossz = 0;


for (int i = 0; i < 10; i++)

{

Console.WriteLine("Kérem a(z) {0}. szót: " ,i + 1);

string beolvas = Console.ReadLine();


szavak[i] = beolvas;

if (szavak[i].Length > maxhossz)

{

maxhossz = szavak[i].Length;

}


}



int leg = 0;

int hossz = 0;


for (int i = 0; i < 10; i++)

{

hossz = szavak[i].Length;

Console.WriteLine("\n" + szavak[i]);

Console.WriteLine("A szó hossza:{0} karakter", hossz);



if (hossz == maxhossz)

{

leg = hossz;

Console.WriteLine("Ez a leghosszabb szó!!! {0} Karakter hosszú!!", leg);

}

}


Console.ReadKey();

}

A program megszámolja a bevitt szavak karakterszámát és megmondja melyik a leghosszabb. A probléma az, hogy ha 2 egyforma hosszúságú szó van és pont azok a leghosszabbak akkor kiírja oda is, hogy az a leghosszabb, úgy szeretném, hogy ha 2 van akkor ki se írja! Előre is köszi!


2012. febr. 7. 18:04
 1/4 _Jessy_ ***** válasza:

static void Main(string[] args)

{

string[] szavak = new string[10];

int maxhossz = -1; //Érdemes így, ha üres szót is szónak tekinted

int index = -2; //Ez lesz az index, és így nem kell mégegyszer megkeresned, amit találtál :)


for (int i = 0; i < 10; i++)

{


Console.WriteLine("Kérem a(z) {0}. szót: " ,i + 1);

string beolvas = Console.ReadLine();


szavak[i] = beolvas;

if (szavak[i].Length > maxhossz)

{

maxhossz = szavak[i].Length;

index = i; //Megjegyezzük, hol van...

}else if(szavak[i].Length == maxhossz)

{

index = -1; //Ha már van egy leghosszabb, "elcs.sszük" az indexváltozót :)

}

}



if(index==-2)

{

Console.WriteLine("\nNem adtál meg szót!");//Elvileg nem fordulhat elő

}else if(index == -1)

{

Console.WriteLine("\nTúl sok leghosszabb van!")

}

else

{

Console.WriteLine("\n" + szavak[i]);

Console.WriteLine("A szó hossza:{0} karakter", maxhossz);

}



Console.ReadKey();

}

2012. febr. 7. 19:39
Hasznos számodra ez a válasz?
 2/4 anonim ***** válasza:

//megszámolod, hogy hány ilyen sor van

int db=0;

for (int i = 0; i < 10; i++)

{

if (szavak[i].Length == maxhossz)

{

db++;

if(db==2) break;

}

}



//csak akkor írod ki, ha 1 db létezik

if (db==1 && hossz == maxhossz)

{

leg = hossz;

Console.WriteLine("Ez a leghosszabb szó!!! {0} Karakter hosszú!!", leg);

}

2012. febr. 7. 19:45
Hasznos számodra ez a válasz?
 3/4 anonim ***** válasza:
mondjuk Jessy megoldása jobb, mert ott elég egy indexváltozó :D
2012. febr. 7. 19:51
Hasznos számodra ez a válasz?
 4/4 A kérdező kommentje:
Köszönöm! Mind2 megoldás működött.:)
2012. febr. 7. 20:11

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!