» »

[C#] nejasnost

[C#] nejasnost

krastača ::

Delam na nalogi:

Napiši program, ki v neskončni zanki bere in izpisuje znake Če vpišeš q, se naj izvajanje zanke prekine in in znak se naj ne izpiše. Uporabi stavek break.

Program sem zastavila tako:
char c;
            do
            {
                Console.Write("Vnesi poljuben znak: ");
                c = (char)Console.Read();
                Console.WriteLine();
                Console.ReadLine();
                if (c >= 'A' && c <= 'Z')
                {
                    Console.WriteLine("Vpisal si veliko črko: {0}", c);
                    Console.WriteLine();
                }
                else if (c >= 'a' && c <= 'z')
                {
                    Console.WriteLine("Vpisan znak je mala črka: {0}", c);
                    Console.ReadLine();
                }
                else Console.WriteLine("Vpisal si znak {0}", c);
                Console.WriteLine(); 
            }
            while(c != 'q');     
           
            Console.ReadKey(true);


Četudi sem dodala, da znak "c" ne sme bit q in če je naj zaustavi program ne naredi tega? In če za while(c!='q') dodam break tudi ne deluje. Kaj delam narobe?

Marat ::

Pri while zanki si napisala le pogoj v oklepaju, nisi pa dala zavitih oklepajev v katerih je koda ki se izvede ob tem pogoju.

while(c != 'q') {
     do();
}


To tko na hitr, nisem se čisto poglobil v samo nalogo... verjetno je še kaj, npr. da znotraj while zanke dodaš if stavek

if(c == "q") {
     break;
}

Zgodovina sprememb…

  • spremenil: Marat ()

Arto ::

Marat je izjavil:

Pri while zanki si napisala le pogoj v oklepaju, nisi pa dala zavitih oklepajev v katerih je koda ki se izvede ob tem pogoju.


while(c != 'q') {
do();
}



Ne, sej gre za do-while zanko, sej je prav napisala?

krastača ::

tudi, če bi ga vrinila v else if obliko in na koncu dodala break mi ga izpiše normalno v programu

Marat ::

Arto je izjavil:


Ne, sej gre za do-while zanko, sej je prav napisala?

točno, se posipam s pepelom ;((

krastača ::

do while sem uporabila zato, ker ko vpisem prvi znak mi ko kliknem na enter ponudi novi zapis. Če sem poskusila while mi te opicije ni dalo :(

nejodagreat ::

V do-while zanko dodaj še en if stavek, ki preveri, če je vnešen znak 'q', in v tem primeru se naj izvede break. Vsaj jaz tako razumem nalogo.

edit: je že bilo predlagano

Zgodovina sprememb…

Marat ::

+ še to:

v if else stavka dodaj še pogoj da črka ne sme biti q

else if (c >= 'a' && c <= 'z' && c != 'q')


isto za tistega z velikimi črkami. Obvezno pa dodaj še že predlagani:

else if (c=='q') {break;}


Aja pa ibriši tiste prazne
Console.WriteLine();


zadeva dela, ker sem sprobal v VS ;)

krastača ::

            Console.Write("Vnesi poljuben znak: ");
            char c = (char)Console.Read();
            Console.WriteLine();
            Console.ReadLine();
            do
            {
                if (c >= 'A' && c <= 'Z')
                {

                    Console.WriteLine("Vpisal si veliko črko: {0}", c);
                    Console.ReadLine();
                }

                else if (c >= 'a' && c <= 'z')
                {
                    Console.WriteLine("Vpisan znak je mala črka: {0}", c);
                    Console.ReadLine();
                }
                else Console.WriteLine("Vpisal si {0} ostalih znakov", c);
                Console.WriteLine();
                c++;
            }
            while (c != 'q');


Če program zasnujem tako, ko začnem z A mi ko dajem enter izpisuje vse velike črke, nato preide na male in ko pride na mali q mi ven vrže zadevo. Vendar me moti da mi ni izpisalo vseh char znakov kot je / * ipd

Zgodovina sprememb…

  • spremenilo: krastača ()

krastača ::

Lolz tako bi sedaj naj delovalo - vedar nevem, če je to kar je naloga zahtevala saj nisem nikjer sedaj uporabila break stavka in ko mi izpiše vse znake se zaključi kar pomeni, da ni neskončna zanka!.

Zgodovina sprememb…

  • spremenilo: krastača ()

Marat ::

a to ti ni v redu?
char c;
            do {
                Console.Write("Vnesi poljuben znak: ");
                c = (char)Console.Read();
                Console.ReadLine();
                if (c >= 'A' && c <= 'Z' && c != 'Q')
                {
                    Console.WriteLine("Vpisal si veliko črko: {0}", c);  
                }
                else if (c >= 'a' && c <= 'z' && c != 'q')
                {
                    Console.WriteLine("Vpisan znak je mala črka: {0}", c);
                }
                else if (c == 'q') { break; }
                else Console.WriteLine("Vpisal si znak {0}", c);
            }
            while (c != 'q');
        }

Zgodovina sprememb…

  • spremenil: Marat ()

krastača ::

čuj, zgleda v redu samo ko sem skopirala je veliki Q normalno izpisalo samo pri male q ven vrže

Marat ::

ja, ker je treba dat veliki Q tudi v pogoj pri while zanki ter v zadnji else if

char c;
            do {
                Console.Write("Vnesi poljuben znak: ");
                c = (char)Console.Read();
                Console.ReadLine();
                if (c >= 'A' && c <= 'Z' && c != 'Q')
                {
                    Console.WriteLine("Vpisal si veliko črko: {0}", c);
                }
                else if (c >= 'a' && c <= 'z' && c != 'q')
                {
                    Console.WriteLine("Vpisan znak je mala črka: {0}", c);
                }
                else if (c == 'q' && c != 'Q') { break; }
                else Console.WriteLine("Vpisal si znak {0}", c);
            } while (c != 'q' && c != 'Q');

krastača ::

vseeno pa sem sama nekaj pozabila, da naloga zahteva da ko vpišeš q gre ven iz programa - ne pa ko ga vpišemo

oz program ga ne sme izpisati

Zgodovina sprememb…

  • spremenilo: krastača ()

Spura ::

krastača je izjavil:


Če program zasnujem tako, ko začnem z A mi ko dajem enter izpisuje vse velike črke, nato preide na male in ko pride na mali q mi ven vrže zadevo. Vendar me moti da mi ni izpisalo vseh char znakov kot je / * ipd
Ti moras brat znake v neskoncni zanki. Ti preberes enega.
znak z = preberi znak
while (z ni q ali z ni Q) {
    izpisi z // tukaj vstavis dodatno logiko ce hoces
    z = preberi znak
}

to je vse.

Ziga Dolhar ::

https://dolhar.si/


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Matematika - trapez

Oddelek: Šola
228990 (5993) Yacked2
»

[Python] Tutoriali za začetnika v Notepad++ (strani: 1 2 )

Oddelek: Programiranje
7916279 (13373) black ice
»

[C#] kaj delam narobe?

Oddelek: Programiranje
14884 (704) FrEaKmAn
»

matematika

Oddelek: Šola
132629 (603) $%&/()
»

kozji test (strani: 1 2 3 )

Oddelek: Loža
1037059 (6166) jeti

Več podobnih tem