» »

Visual C# problem

Visual C# problem

sostarpof ::

Pozdrav!

Da ne bom smetil po forumu bom kar v to temo napisal moj problem v C#.
Problem je tak imam tako kodo:
Console.Write("Ali želite spremeniti vse podatke? (D/N) ");
                if(Convert.ToChar(Console.ReadLine())=='D' || Convert.ToChar(Console.ReadLine())=='d')
                {KODA...}

in ko moram pač vpisati "Ali želite spremeniti podatke" moram 2x napisati odgovor:


Isti primer če napišem D za DA.
To se mi je že prej ane parkrat naredilo sam se potem nisem več poglabljav.

LP!
Štefc

Randomness ::

Funkcija Console.ReadLine() se ti pokliče dvakrat. Poskrbi, da temu ne bo tako.

sostarpof ::

Hvala za odgovor.
Sam kako da mi je to šele zdaj naredil? Prej se imel tudi tako napisal potem sem pa nekaj kodo spreminjal oz. sem dodajal sam sem to, kar sem dodal potem izbrisal.

Vesoljc ::

sostarpof je izjavil:

Hvala za odgovor.
Sam kako da mi je to šele zdaj naredil? Prej se imel tudi tako napisal potem sem pa nekaj kodo spreminjal oz. sem dodajal sam sem to, kar sem dodal potem izbrisal.



zato ker si D vnesel namesto d. ce je prvi pogoj izpolnjen se pri || drugi del sploh ne gre izvajat.
Abnormal behavior of abnormal brain makes me normal...

dellon ::

OP predlagam da si rezultat branja iz konzole shraneš v novo string spremenljivko katere rezultat potem recimo daš kot pomanjšano "ToLower()" in nato preverjaš samo z enim pogojem
(if sprem == "d")
{
//naredi nekaj
}


Lahko pa si pogledaš tudi property InvariantCultureIgnoreCase

Zgodovina sprememb…

  • spremenil: dellon ()

sostarpof ::

Dobro.
@Vesoljc Kakšen znak al beseda pa je še da lahko pri pogoju daš ALI. En je ta ||.

Vesoljc ::

|| je logicni ALI
&& je logicni IN
Abnormal behavior of abnormal brain makes me normal...

technolog ::

Nisem domač v C#, ampak nekaj takega bi moralo delat:

{'d', 'D'}.Contains( Convert.ToChar(Console.ReadLine()) )

Zgodovina sprememb…

sostarpof ::

Ja to je fan uporabit, če imaš več možnosti. Bi pa tut to delalo. .)

mihies ::

techolog, ne bo šlo tako.

Ena od rešitev je tale:
Array.IndexOf(new[] { 'd', 'D' }, Console.ReadLine()[0]) >= 0 // primerjaš char

ali
Array.IndexOf(new[] { "d", "D" }, Console.ReadLine()) >= 0

Če imaš bolj kompleksno primerjavo, lahko razmisliš tudi o Regex.
http://blog.rthand.com/
SLODUG - uporabniška skupina
https://www.facebook.com/groups/slodug/

technolog ::

Ne, tud tole bi moralo delat:

(new List<string> {"d", "D"}).contains(...)

Zgodovina sprememb…

mihies ::

Tale tudi, samo je rahlo nevarnejše, ker bo sprejela tudi vhod "dD":
"dD".IndexOf(Console.ReadLine())

bolj varna verzija:
"dD".IndexOf(Console.ReadLine()[0])
http://blog.rthand.com/
SLODUG - uporabniška skupina
https://www.facebook.com/groups/slodug/

Zgodovina sprememb…

  • spremenil: mihies ()

vorantz ::

O_O
kake čarate za eno črko primerjat
tole:
String.Compare("D", spremenljivka, StringComparison.OrdinalIgnoreCase) == 0

Mesar ::

A ti pa ne? :))

if(Console.ReadLine().ToLower() == "da")

edit: če hočeš več opcij preverjat pa si daš Console.ReadLine().ToLower() v string spremenljivko pa primerjas...
Your turn to burn!

Zgodovina sprememb…

  • spremenil: Mesar ()

norcuron ::

Jao, komplicirate ... konverzija v Lower ali Upper in narediš enkratno kontrolo pogoja ...
Great are mysteries of the mind ... or not?

Mesar ::

Nah bvz to, boljše string razbit na znake pa shranit v char array, potem pa loopat znake jih popravljat in potem v if stavke pisat pisat primerjave za vsak znak. Lahko bi še po utf8 kodni tabeli pretvarjal pa pol preverjal če je prava številka znaka...
Your turn to burn!

vorantz ::

Mesar je izjavil:

A ti pa ne? :))

if(Console.ReadLine().ToLower() == "da")

edit: če hočeš več opcij preverjat pa si daš Console.ReadLine().ToLower() v string spremenljivko pa primerjas...


kar bi nekako delalo dokler ne boš delal aplikacijo ki mora znat primerjat tudi čudne črke (invariant culture pa to)
moja poskrbi za vse
prej ko se navadiš stringe tako comparat bolše je

Mesar ::

Seveda, ni pa smiselno komplicirat kjer to ni potrebno.
Your turn to burn!

Mesar ::

Pa še neki, obstaja tudi "ToLowerInvariant()", komaj zdaj sem videl ko sem VS pognal in meni recimo "if (Console.ReadLine().ToLower() == "ščćžđ") Console.WriteLine("Ho!");" čisto lepo dela z velikimi ali malimi črkami.

C?(pronounced as see sharp) is a multi-paradigm programming language encompassing strong typing, imperative, declarative, functional, procedural, generic, object-oriented (class-based), and component-oriented programming disciplines. It was developed by Microsoft within its .NET initiative and later approved as a standard by Ecma (ECMA-334) and ISO (ISO/IEC 23270:2006).


Sicer pa po želji... meni je cilj v čim krajšem času napisat čim hitrejšo in čim boljšo aplikacijo, ne pa programirat zraven neke zadeve, ki ne bodo nikoli v rabi (v tem primeru).
Your turn to burn!

mihies ::

Ja, tisto z nizom je bilo bolj za hec, ali pa če hočeš primerjati z več različnimi znaki hkrati.
Znajo pa biti tele tekstovne primerjave tečne in ti nagajati, kadar najmanj pričakuješ. Klasičen je primer turškega I-ja.
Turški i
http://blog.rthand.com/
SLODUG - uporabniška skupina
https://www.facebook.com/groups/slodug/

sostarpof ::

Pozdrav!

Spet se oglašam, ker imam spet en problem, ki ga ne znam rešiti. Tukaj je koda:
string ime;
            string naslov;
            int velikost;
            int najvecjatrg = 0;
            string ImeNajvecjaTrg="";
            Trgovina[] tabtrg = new Trgovina[10];
            for (int i = 0; i < tabtrg.Length; i++)
            {
                Console.WriteLine("Vnesite podatke o trgovini!");
                Console.Write("Ime: ");
                ime = Console.ReadLine();
                Console.Write("Naslov: ");
                naslov = Console.ReadLine();
                Console.Write("Velikost: ");
                velikost = Convert.ToInt32(Console.ReadLine());
                tabtrg[i] = new Trgovina(ime, naslov, velikost);
                if (velikost > najvecjatrg)
                {
                    najvecjatrg = velikost;
                    ImeNajvecjaTrg = ime;
                }

            }
            Console.WriteLine("Največja trgovina je: " + ImeNajvecjaTrg+", ki ima velikost "+najvecjatrg+" m2");


                Console.ReadKey();


Pod error mi napiše "Use of unnasigned local variable "ImeNajvecjaTrg"".

LP!
Štefc

technolog ::

probaj z malo začetnico.

sostarpof ::

Ja zdaj mi dela. Sm šeankret zagnal C# mi pa nč več ne javi napake..

sostarpof ::

Še enkrat jest.
Zanima me, če zna kdo nardit tile 2 nalogi:

3.)Sestavite metodo, ki za vhodni parameter sprejme ime tekstovne datoteke in ki ustvari novo datoteko s končnico bak,
v kateri so med znaki originalne datoteke presledki. Če je npr. besedilo datoteke

Lepa Anka kolo vodi

bo vsebina nove datoteke

L e p a A n k a k o l o v o d i


4.) Napišite metodo, ki za vhodni podatek sprejme ime vhodne in izhodne datoteke. Metoda naj prepiše vrstice v vhodni datoteki na izhodno datoteko,
pri čemer združi vse vrstice v eno vrstico. Na primer, če je na datoteki Dat1.txt zapisano

prva vrstica,
druga vrstica,
tretja vrstica,
četrta vrstica,
peta vrstica.

potem je zapis na datoteki Dat2.txt

prva vrstica, druga vrstica, tretja vrstica, četrta vrstica, peta vrstica.


Bi bil zelo vesel, če bi ju kdo rešil in pokazal kodo. .)
Sm se jes zej 3 uri ukvarjal z nalogama. Pa mi ni uspel..

LP!
Štefc

Zgodovina sprememb…

vorantz ::

če se gremo basic rešitve
fill in the blanks
3.)
-readline
-tochararray
-char+" "
-write
-writeline
4.)
-readline
-write

technolog ::

3 uri? 3 uri?

Najprej nameni 1 uro slovenščini, nato pa cel vikend tema nalogama. Nikol ne boš znal, če se boš zanašal na druge.

epicVoid ::

public static void changeFile(string name)
        {
            StringBuilder sb;
            int spaceRemover;
            try
            {
                string[] lines = File.ReadAllLines(name);

                Console.Write("\n----------------------------------------------\n");
                Console.WriteLine("Prebrane vrstice iz datoteke : " + "\n");

                int lineCounter = 0;
                foreach(string line in lines)
                {
                    Console.WriteLine(lineCounter + ". " + line);
                    lineCounter++;
                }
                Console.Write("\n----------------------------------------------\n");
                Console.WriteLine("Spremenjene vrstice : " + "\n");

                foreach(string line in lines)
                {
                    string line2 = line;
                    sb = new StringBuilder();
                    line2 = line2.Replace(" ", "");
                    for (int i = 0; i < line2.Count(); i++)
                    {
                        if (!line2[i].Equals(" "))
                        {
                            sb.Append(line2[i] + " ");
                        }
                    }
                    Console.WriteLine(sb);
                }
                Console.Write("\n----------------------------------------------\n");
            }

            catch(Exception ex)
            {
                Console.WriteLine("Napaka " + ex.Message);
            }
        }


Dodaj še shranjevanje v .bak, ali spremeni po želji.

Zgodovina sprememb…

  • spremenilo: epicVoid ()

sostarpof ::

technolog je izjavil:

3 uri? 3 uri?

Najprej nameni 1 uro slovenščini, nato pa cel vikend tema nalogama. Nikol ne boš znal, če se boš zanašal na druge.


Sem naprej napisal problem za eno nalogo s katero sem se res ukvarjal 2 uri potem, ko sem spreminjal se pa dodal še drugo nalogo s katero sem se dodatno ukvarjal 1 uro in se potem spremenil v 3 ure a sem pozabil spremeniti iz uri v ure.

Se spomnim iz srednje šole, ko je sošolec vprašal "Koliko časa je še do odmora?" mu je drugi odgovoril "Čez 2 minute." je ena prfoksa, ki je bila v tistem času v knjižnici, rekla "2 MINUTI. Mamamia kdo te je učil slovenščino?!".

epicVoid je izjavil:

public static void changeFile(string name)
{
StringBuilder sb;
int spaceRemover;
try
{
string[] lines = File.ReadAllLines(name);

Console.Write("\n----------------------------------------------\n");
Console.WriteLine("Prebrane vrstice iz datoteke : " + "\n");

int lineCounter = 0;
foreach(string line in lines)
{
Console.WriteLine(lineCounter + ". " + line);
lineCounter++;
}
Console.Write("\n----------------------------------------------\n");
Console.WriteLine("Spremenjene vrstice : " + "\n");

foreach(string line in lines)
{
string line2 = line;
sb = new StringBuilder();
line2 = line2.Replace(" ", "");
for (int i = 0; i < line2.Count(); i++)
{
if (!line2[i].Equals(" "))
{
sb.Append(line2[i] + " ");
}
}
Console.WriteLine(sb);
}
Console.Write("\n----------------------------------------------\n");
}

catch(Exception ex)
{
Console.WriteLine("Napaka " + ex.Message);
}
}


Dodaj še shranjevanje v .bak, ali spremeni po želji.


Hvala za pomoč!

Zgodovina sprememb…

mladec ::

Zdravo!
Zanima me, kako se naredi kot nekakšno namestitveno datoteko, kjer bi rad eno spremenljivko nastavil na določeno vrednost za vsak računalnik posebej, ki se ob naslednjem zagonu ohrani. Se to da?

LightBit ::

Zapišeš spremenljivko v file ali register.

mladec ::

Hvala


Vredno ogleda ...

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

[c#] Ustvarjanje objekta v drugem razredu

Oddelek: Programiranje
81648 (1593) Cvenemir
»

[C#] Kopiranje osebe iz seznama v drug seznam

Oddelek: Programiranje
51482 (1343) Presidente
»

[C#] Reševanje domačih nalog

Oddelek: Programiranje
173244 (2748) krastača
»

[C#] razlaga

Oddelek: Programiranje
161585 (1302) krastača
»

Naloga v C#

Oddelek: Programiranje
72607 (2107) Hardstyle

Več podobnih tem