» »

[C#] Reševanje domačih nalog

[C#] Reševanje domačih nalog

krastača ::

Pri nalog:

7. Napiši program, ki prebere realno število, v metodi Negiraj pa ga spremeni v njegovo negirano vrednost. Program naj izpiše prvotno in novo vrednost. Uporabi ref.

Po vrednostnem načinu je naloga normalno rešljiva kot jo želi naloga - je pa brez ref
static double Negiraj(double n)
        {
            return n < 0 ? n : -n;
        }
        static void Main(string[] args)
        {
            Console.Write("Vpiši poljubno realno število: ");
            double st = double.Parse(Console.ReadLine());
            Console.WriteLine();

            Negiraj(st);
            Console.WriteLine("Vpisano število {0} bi po negiranju bilo {1}!", st, Negiraj(st));
            Console.ReadKey(true);


Če pa nalogo delam po ref pa ne morem izpisati prvotne verzije vpisanega števila

        static void Negiraj(ref double x)
        {
            x = x < 0 ? x : -x;
        }
    
        static void Main(string[] args)
        {
            Console.Write("Vpiši poljubno realno število: ");
            double st = double.Parse(Console.ReadLine());
            Console.WriteLine();
            Negiraj(ref st);

            Console.WriteLine("Negativna vrednost vpisanega števila bi bila {0}!", st);
            Console.ReadKey(true);
        }


A je namen naloge, da te zmede?
  • spremenil: Mavrik ()

keworkian ::

Rajš pust fax ker nisi sposobna programirat in razmišljat s svojo glavo in uporabljat dokumentacije na MSDN.
Obscenities in B-Flat

Zgodovina sprememb…

LeQuack ::

Prvi primer je napaka pri vračanju vrednosti, vedno vrneš -n, tako da ne rabiš pogoja, če je n manjši od 0. PA metodo Negiraj lahko kličeš samo enkrat namesto dvakrat.

        static double Negiraj(double n)
        {
            // Minus v plus in obratno
            return -n;
        }
        static void Main(string[] args)
        {
            Console.Write("Vpiši poljubno realno število: ");
            double st = double.Parse(Console.ReadLine());
            Console.WriteLine();

            Console.WriteLine("Vpisano število {0} bi po negiranju bilo {1}!", st, Negiraj(st));
            Console.ReadKey(true);
        }


Če parametru dodaš ref, pomeni da se ob klicu metode uporabi originalna spremenljivka, ki je bila podana v parametru, kar je sicer za kompleksne objekte že privzeto, medtem ko za enostavne, kot so števila, ni.

        // Uporabi ref in sprmeni originalni parameter
        static void Negiraj(ref double n)
        {
            // Minus v plus in obratno
            n = -n;
        }
        static void Main(string[] args)
        {
            Console.Write("Vpiši poljubno realno število: ");
            double st = double.Parse(Console.ReadLine());
            Console.WriteLine();

            Console.WriteLine("Vpisano število pred negiranjem {0}!", st);
            Negiraj(ref st);
            Console.WriteLine("Vpisano število po negiranju {0}!", st);
            Console.ReadKey(true);
        }
Quack !

Ziga Dolhar ::

krastača, ni potrebno odpirati novih tem za vsak problem. Ena tema (tale) zadostuje. Ostale bodo zaklenjene.
https://dolhar.si/

krastača ::

Ja samo v tem primeru se spet lahko bunite da naslov ne štima glede na nalogo ki se v nadaljevanju posta?

LeQuack hvala za razlago! Glede Ref se zavedam da se prvotna spremenljivka uporabi saj zato mi ni jasno zakaj zahteva prvotno vrednost spremenljivke če pa želi na koncu da uporabimo ref način - to pomeni da mu ne morem dati začetne spremenljivke v nalogi

Zgodovina sprememb…

Spura ::

krastača je izjavil:

Glede Ref se zavedam da se prvotna spremenljivka uporabi saj zato mi ni jasno zakaj zahteva prvotno vrednost spremenljivke če pa želi na koncu da uporabimo ref način - to pomeni da mu ne morem dati začetne spremenljivke v nalogi

Ni res da mu ne mores dat, problem je resljiv z eno dodatno trivialno vrstico, ce malo pomislis.

Sicer pa ne razumem zakaj folk zajebavajo z ref, to se tako redko uporablja.

krastača ::

vem, naloga je taka - sorry

Spura a bi mi lahko razložil - ko sem generila tabelo in bo uporabnik vpisal števila. Kako določim da želim največje število polja ter ga moram nato z vsemi števila v polju deliti?

Zgodovina sprememb…

LeQuack ::

krastača je izjavil:

vem, naloga je taka - sorry

Spura a bi mi lahko razložil - ko sem generila tabelo in bo uporabnik vpisal števila. Kako določim da želim največje število polja ter ga moram nato z vsemi števila v polju deliti?


Nekako tako:
        static void Main(string[] args)
        {
            int[] p = new int[5];
            for (int i = 0; i < p.Length; i++)
            {
                Console.Write("Vpiši {0}. število: ", i + 1);
                p[i] = int.Parse(Console.ReadLine());
            }

            // Poisci najvecje stevilo
            int Maximum = p.Max();

            // Iteracija skozi celo tabelo in deljenje
            for (int i = 0; i < p.Length; i++)
                Console.WriteLine("Rezultat deljenja s p[{0}] = {1}", i, (float)Maximum / p[i]);

            Console.ReadKey(true);
        }
Quack !

Zgodovina sprememb…

  • spremenil: LeQuack ()

Marat ::

Ziga Dolhar je izjavil:

krastača, ni potrebno odpirati novih tem za vsak problem. Ena tema (tale) zadostuje. Ostale bodo zaklenjene.

še boljše bi bilo če bi naredil sticky temo z naslovom "[C#]šolske naloge" kjer bi folk postavljal vprašanja glede teh nalog.

MrBrdo ::

keworkian je izjavil:

Rajš pust fax ker nisi sposobna programirat in razmišljat s svojo glavo in uporabljat dokumentacije na MSDN.

Glede na št. vprašanj je res že malo hm vse skupaj... Ali ne hodi na predavanja ali so pa res slaba.
MrBrdo

Mavrik ::

Popravljen naslov.
The truth is rarely pure and never simple.

Spura ::

Poznam eno zensko, ki je hodila na tocno ta studij, pa ni imela problemov s temi predmeti.

gendale ::

jst verjamem, da je pač mal trda v glavo za programiranje

sem že videl ljudi, ki jim določena stvar ni in ni šla v glavo, čeprav niso bili niti bedaki niti lenuhi
seznam zanč moderatorjev in razlogov da so zanč
http://pastebin.com/QiWny5dV
gor je mavrik apple uporabniček (mali možgani in mali penis)

Marat ::

ma hvalabogu da ma voljo do učenja, ne ji zdej ubit še to...

Senitel ::

Čist tko... Če naloga hoče, da se spremenljivko meče not po referenci, potem zagotovo noče, da vračaš vrednost z returnom!

krastača ::

A mi lahko nekdo pogleda kodo programa in mi pove v čem delam napako, da se mi ne vrže rezultaltala - je polje/metoda naloga
        static int Max(int[] p)
        {
            int max = p[0];
            for (int i = 1; i < p.GetLength(0); i++)
            {
                if (p[i] > max) max = p[i];
            }
            return max;
        }
        static void Main(string[] args)
        {
            int[] p = new int[10];
            for (int i = 0; i < p.GetLength(0); i++)
            {
                Console.Write("Vpiši {0}. celo število: ", i);
                p[i] = int.Parse(Console.ReadLine());
            }
            int max = Max();
            Console.WriteLine(max);
            Console.ReadKey(true);
        }

Je prva taka naloga in nevem še čisto pravilno klicanje polj ven in metod.

LeQuack ::

Ko kličeš Max() ti manjka argument, torej:
int max = Max(p);
Quack !

krastača ::

Thanks LeQuack! Samo en mali p :)


Vredno ogleda ...

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

c# seminarska

Oddelek: Programiranje
112645 (2318) tuned
»

[c#] Ustvarjanje objekta v drugem razredu

Oddelek: Programiranje
81653 (1598) Cvenemir
»

c sharp LinkedList - Naloga

Oddelek: Programiranje
91847 (1798) Msatir
»

[C#] Input string was not in a correct format.

Oddelek: Programiranje
61082 (1019) Cvenemir

[C#]naloga iz metod!

Oddelek: Programiranje
81655 (1488) Ziga Dolhar

Več podobnih tem