» »

[C#] Klicanje metod

[C#] Klicanje metod

Cvenemir ::

Lp. Zanima me, kako naj v main podprogramu pokličem metode za pretvarjanje enot.
Poskusil sem tako:
//Izpis stopinj celzija
            Console.WriteLine("Vnesite število fahrenheitov: ");
            fahrenheit = double.Parse(Console.ReadLine());
            pretvorbaTemperature1(stopinje);
            Console.WriteLine("Podano število fahrenheitov je {0}°C. ");

vendar javi napako "The name pretvoriTemperaturo1 does not exist in current context".

Celotna koda je naslednja:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace R4_pretvornik
{
    //Definiramo razred
    public class pretvornik
    {
        //Definiramo objekte razreda
        public double stopinje;
        public double fahrenheit;
        public double litri;
        public double galoni;
        public double kilometri;
        public double milje;

        //Objektom priredimo začetne vrednosti
        public pretvornik()
        {
            stopinje = 0;
            fahrenheit = 0;
            litri = 0;
            galoni = 0;
            kilometri = 0;
            milje = 0;
        }
        /// <summary>
        /// Metoda pretvori fahrenheite v °C
        /// </summary>
        /// <param name="stopinje">Izhod: temperatura v °C</param>
        /// <param name="fahrenheit">Vhod: temperatura v F</param>
        public double pretvorbaTemperature1(double stopinje, double fahrenheit)
        {
            stopinje = (5 / 9) * (fahrenheit - 32);
            return stopinje;
        }
        /// <summary>
        /// Metoda pretvori °C v F
        /// </summary>
        /// <param name="stopinje">Vhod: temperatura v °C</param>
        /// <param name="fahrenheit">Izhod: temperatura v F</param>
        public double pretvorbaTemperature2(double stopinje, double fahrenheit)
        {
            fahrenheit = (9 / 5) * stopinje + 32;
            return fahrenheit;
        }
        /// <summary>
        /// Metoda pretvori litre v galone
        /// </summary>
        /// <param name="litri">Izhod: količina v litrih</param>
        /// <param name="galoni">Vhod: količina v galonih</param>
        public double tekocina1(double litri, double galoni)
        {
            litri = galoni * 3.79;
            return litri;
        }
        /// <summary>
        /// Metoda pretvori galone v litre
        /// </summary>
        /// <param name="litri">Vhod: količina v litrih</param>
        /// <param name="galoni">Izhod: količina v galonih</param>
        public double tekocina2(double litri, double galoni)
        {
            galoni = litri / 3.79;
            return galoni;
        }
        /// <summary>
        /// Metoda pretvori milje v kilometre
        /// </summary>
        /// <param name="kilometri">Izhod: razdalja v kilometrih</param>
        /// <param name="milje">Vhod: razdalja v miljah</param>
        public double razdalja1(double kilometri, double milje)
        {
            kilometri = milje * 1.61;
            return kilometri;
        }
        /// <summary>
        /// Metoda pretvori kilometre v milje
        /// </summary>
        /// <param name="kilometri">Vhod: razdalja v kilometrih</param>
        /// <param name="milje">Izhod: razdalja v miljah</param>
        public double razdalja1(double kilometri, double milje)
        {
            milje = kilometri * 0.62;
            return milje;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            pretvornik pretvori = new pretvornik();
            double stopinje, fahrenheit, galoni, litri, kilometri, milje;
            
            //Izpis stopinj celzija
            Console.WriteLine("Vnesite število fahrenheitov: ");
            fahrenheit = double.Parse(Console.ReadLine());
            pretvorbaTemperature1(stopinje);
            Console.WriteLine("Podano število fahrenheitov je {0}°C. ");
            
            
            //Izpis fahrenheitov
            Console.WriteLine("Vnesite število stopinj celzija: ");
            stopinje = double.Parse(Console.ReadLine());
            Console.WriteLine("Podano število stopinj je {0}F. ");


            //Izpis galonov
            Console.WriteLine("Vnesite število litrov: ");
            litri = double.Parse(Console.ReadLine());
            Console.WriteLine("Podano število litrov je {0} galonov. ");

            //Izpis litrov
            Console.WriteLine("Vnesite število galonov: ");
            galoni = double.Parse(Console.ReadLine());
            Console.WriteLine("Podano število galonov je {0} litrov. ");

            //Izpis kilometrov
            Console.WriteLine("Vnesite število milj: ");
            milje = double.Parse(Console.ReadLine());
            Console.WriteLine("Podano število milj je {0} kilometrov. ");

            //Izpis milj
            Console.WriteLine("Vnesite število kilometrov: ");
            kilometri = double.Parse(Console.ReadLine());
            Console.WriteLine("Podano število kilometrov je {0} milj. ");
        }
    }
}
  • spremenil: Cvenemir ()

Recordman ::

V življenju nisem spisal vrstice C# kode, se mi pa zdi, da imaš napako v imenu funkcije/metode/česarkoliže.

pretvoriTemperaturo1 ne obstaja, obstaja pa pretvoriTemperature1

Zgodovina sprememb…

Cvenemir ::

Pri popravljeni kodi, kjer se imeni ujemata, še vedno dobim isto napako.

Cvenemir ::

Glede na to, da so metode javne, bi morale biti dostopne tudi zunaj razreda.

Mavrik ::

Ker je "pretvorbaTemperature1" metoda razreda "pretvornik", jo moreš klicati na "pretvornik" objektu, ki si ga ustvaril. Torej:

pretvori.pretvorbaTemprature1(...)
The truth is rarely pure and never simple.

Cvenemir ::

Sem malo poravil kodo, da je bolj pregledno. Zdaj me pa zanima, kako podam argument za izpis v main podprogramu, ker mi vedno izpiše rezultat 0.

Poskusil sem takole:
double stopinjeRezultat = pretvori.temperatura1(pretvori.stopinje, pretvori.fahrenheit);
            Console.WriteLine("Temperatura v stopinjah je: {0}°C", stopinjeRezultat);


In še celotna koda:
//Uroš Podrekar, E1059816, ITK-VS1
//Opis programa: V programu bomo definirali nekaj metod za pretvorbo
//med osnovnimi merskimi enotami za razdaljo, količino tekočine in temperaturo.
//V glavnem podprogramu bomo preverili delovanje posameznih metod.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace R4_pretvornik
{
    //Definiramo razred
    public class pretvornik
    {
        //Definiramo objekte razreda
        public double stopinje;
        public double fahrenheit;
        public double litri;
        public double galoni;
        public double kilometri;
        public double milje;

        //Objektom priredimo začetne vrednosti
        public pretvornik()
        {
            stopinje = 0;
            fahrenheit = 0;
            litri = 0;
            galoni = 0;
            kilometri = 0;
            milje = 0;
        }
        /// <summary>
        /// Metoda pretvori fahrenheite v °C
        /// </summary>
        /// <param name="stopinje">Izhod: temperatura v °C</param>
        /// <param name="fahrenheit">Vhod: temperatura v F</param>
        public double temperatura1(double stopinje, double fahrenheit)
        {
            Console.WriteLine("Vnesite temperaturo v fahrenheitih: ");
            fahrenheit = double.Parse(Console.ReadLine());
            stopinje = (5 / 9) * (fahrenheit - 32);
            return stopinje;           
        }
        /// <summary>
        /// Metoda pretvori °C v F
        /// </summary>
        /// <param name="stopinje">Vhod: temperatura v °C</param>
        /// <param name="fahrenheit">Izhod: temperatura v F</param>
        public double temperatura2(double stopinje, double fahrenheit)
        {
            Console.WriteLine("\nVnesite temperaturo v °C: ");
            stopinje = double.Parse(Console.ReadLine());
            fahrenheit = (9 / 5) * stopinje + 32;
            return fahrenheit;
        }
        /// <summary>
        /// Metoda pretvori litre v galone
        /// </summary>
        /// <param name="litri">Izhod: količina v litrih</param>
        /// <param name="galoni">Vhod: količina v galonih</param>
        public double tekocina1(double litri, double galoni)
        {
            Console.WriteLine("\nVnesite količino v galonih: ");
            galoni = double.Parse(Console.ReadLine());
            litri = galoni * 3.79;
            return litri;
        }
        /// <summary>
        /// Metoda pretvori galone v litre
        /// </summary>
        /// <param name="litri">Vhod: količina v litrih</param>
        /// <param name="galoni">Izhod: količina v galonih</param>
        public double tekocina2(double litri, double galoni)
        {
            Console.WriteLine("\nVnesite količino v litrih: ");
            litri = double.Parse(Console.ReadLine());
            galoni = litri / 3.79;
            return galoni;
        }
        /// <summary>
        /// Metoda pretvori milje v kilometre
        /// </summary>
        /// <param name="kilometri">Izhod: razdalja v kilometrih</param>
        /// <param name="milje">Vhod: razdalja v miljah</param>
        public double razdalja1(double kilometri, double milje)
        {
            Console.WriteLine("\nVnesite razdaljo v miljah: ");
            milje = double.Parse(Console.ReadLine());
            kilometri = milje * 1.61;
            return kilometri;
        }
        /// <summary>
        /// Metoda pretvori kilometre v milje
        /// </summary>
        /// <param name="kilometri">Vhod: razdalja v kilometrih</param>
        /// <param name="milje">Izhod: razdalja v miljah</param>
        public double razdalja2(double kilometri, double milje)
        {
            Console.WriteLine("\nVnesite razdaljo v kilometrih: ");
            kilometri = double.Parse(Console.ReadLine());
            milje = kilometri * 0.62;
            return milje;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {            
            pretvornik pretvori = new pretvornik();

            double stopinjeRezultat = pretvori.temperatura1(pretvori.stopinje, pretvori.fahrenheit);
            Console.WriteLine("Temperatura v stopinjah je: {0}°C", stopinjeRezultat);

            pretvori.temperatura2(pretvori.stopinje, pretvori.fahrenheit);
            Console.WriteLine("Temperatura v fahrenheitih je: {0}F");

            pretvori.tekocina1(pretvori.litri, pretvori.galoni);
            Console.WriteLine("Temperatura v litrih je: {0}l");

            pretvori.tekocina2(pretvori.litri, pretvori.galoni);
            Console.WriteLine("Temperatura v galonih je: {0} gal");

            pretvori.razdalja1(pretvori.kilometri, pretvori.milje);
            Console.WriteLine("Razdalja v kilometrih je: {0} km");

            pretvori.razdalja1(pretvori.kilometri, pretvori.milje);
            Console.WriteLine("Razdalja v miljah je: {0} milj");


            Console.ReadKey();

        }
    }
}

Mavrik ::

Seveda ti da 0, če pa kot parametra funkciji podaš 0 ;)
The truth is rarely pure and never simple.

Cvenemir ::

Katere parametre pa naj potem vpišem?

Mavrik ::

Ja tisto kar hočeš preračunati a ne? :P
The truth is rarely pure and never simple.

Cvenemir ::

Ja pri vsakem izpisu posebej hočem preračunat eno enoto, vendar visual studio pravi da
sta potrebna dva argumenta :)

Cvenemir ::

Sedaj sem popravil kodo. Vse izračuna pravilno, edino za stopinje mi še vedno izpiše 0.

//Uroš Podrekar, E1059816, ITK-VS1
//Opis programa: V programu bomo definirali nekaj metod za pretvorbo
//med osnovnimi merskimi enotami za razdaljo, količino tekočine in temperaturo.
//V glavnem podprogramu bomo preverili delovanje posameznih metod.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace R4_pretvornik
{
    //Definiramo razred
    public class pretvornik
    {
        //Definiramo objekte razreda
        public double stopinje;
        public double fahrenheit;
        public double litri;
        public double galoni;
        public double kilometri;
        public double milje;

        //Objektom priredimo začetne vrednosti
        //public pretvornik()
        //{
        //    stopinje = 0;
        //    fahrenheit = 0;
        //    litri = 0;
        //    galoni = 0;
        //    kilometri = 0;
        //    milje = 0;
        //}
        /// <summary>
        /// Metoda pretvori fahrenheite v °C
        /// </summary>
        /// <param name="stopinje">Izhod: temperatura v °C</param>
        /// <param name="fahrenheit">Vhod: temperatura v F</param>
        public double temperatura1()
        {
            Console.WriteLine("Vnesite temperaturo v fahrenheitih: ");
            double fahrenheit = double.Parse(Console.ReadLine());
            double stopinje = (5 / 9) * (fahrenheit - 32);
            return stopinje;           
        }
        /// <summary>
        /// Metoda pretvori °C v F
        /// </summary>
        /// <param name="stopinje">Vhod: temperatura v °C</param>
        /// <param name="fahrenheit">Izhod: temperatura v F</param>
        public double temperatura2()
        {
            Console.WriteLine("\nVnesite temperaturo v °C: ");
            double stopinje = double.Parse(Console.ReadLine());
            double fahrenheit = (9 / 5) * stopinje + 32;
            return fahrenheit;
        }
        /// <summary>
        /// Metoda pretvori litre v galone
        /// </summary>
        /// <param name="litri">Izhod: količina v litrih</param>
        /// <param name="galoni">Vhod: količina v galonih</param>
        public double tekocina1()
        {
            Console.WriteLine("\nVnesite količino v galonih: ");
            double galoni = double.Parse(Console.ReadLine());
            double litri = galoni * 3.79;
            return litri;
        }
        /// <summary>
        /// Metoda pretvori galone v litre
        /// </summary>
        /// <param name="litri">Vhod: količina v litrih</param>
        /// <param name="galoni">Izhod: količina v galonih</param>
        public double tekocina2()
        {
            Console.WriteLine("\nVnesite količino v litrih: ");
            double litri = double.Parse(Console.ReadLine());
            double galoni = litri / 3.79;
            return galoni;
        }
        /// <summary>
        /// Metoda pretvori milje v kilometre
        /// </summary>
        /// <param name="kilometri">Izhod: razdalja v kilometrih</param>
        /// <param name="milje">Vhod: razdalja v miljah</param>
        public double razdalja1()
        {
            Console.WriteLine("\nVnesite razdaljo v miljah: ");
            double milje = double.Parse(Console.ReadLine());
            double kilometri = milje * 1.61;
            return kilometri;
        }
        /// <summary>
        /// Metoda pretvori kilometre v milje
        /// </summary>
        /// <param name="kilometri">Vhod: razdalja v kilometrih</param>
        /// <param name="milje">Izhod: razdalja v miljah</param>
        public double razdalja2()
        {
            Console.WriteLine("\nVnesite razdaljo v kilometrih: ");
            double kilometri = double.Parse(Console.ReadLine());
            double milje = kilometri * 0.62;
            return milje;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {            
            pretvornik pretvori = new pretvornik();

            double stopinjeRezultat = pretvori.temperatura1();
            Console.WriteLine("Temperatura v stopinjah je: {0}°C", stopinjeRezultat);

            double fahrenheitRezultat = pretvori.temperatura2();
            Console.WriteLine("Temperatura v fahrenheitih je: {0}F", fahrenheitRezultat);

            double litriRezultat = pretvori.tekocina1();
            Console.WriteLine("Temperatura v litrih je: {0}l", litriRezultat);

            double galoniRezultat = pretvori.tekocina2();
            Console.WriteLine("Temperatura v galonih je: {0} gal", galoniRezultat);

            double kmRezultat = pretvori.razdalja1();
            Console.WriteLine("Razdalja v kilometrih je: {0} km", kmRezultat);

            double miljeRezultat = pretvori.razdalja2();
            Console.WriteLine("Razdalja v miljah je: {0} milj", miljeRezultat);


            Console.ReadKey();

        }
    }
}

amacar ::

Tak daj:
public double temperatura1()
            {
                Console.WriteLine("Vnesite temperaturo v fahrenheitih: ");
                double fahrenheit = double.Parse(Console.ReadLine());
                double stopinje = 5 * (fahrenheit - 32)/9;
                return stopinje;
            }

BHawk ::

Ko deliš moraš deliti z double tipom. Ker drugače vrne deljenje z int tipom int rezultat. 5 / 9 je rezultat 0, ker deliš 2 int števili. Probaj 5.0 / 9.0

Spura ::

public class pretvornik
    {
        //Definiramo objekte razreda
        public double stopinje;
        public double fahrenheit;
        public double litri;
        public double galoni;
        public double kilometri;
        public double milje;
        //Objektom priredimo začetne vrednosti
        public pretvornik()
        {
            stopinje = 0;
            fahrenheit = 0;
            litri = 0;
            galoni = 0;
            kilometri = 0;
            milje = 0;
        }


Zakaj imas definirane te spremenljivke, ki jih nikoli ne uporabljas?
Zakaj so public? Zakaj je class name z malo crko? Zakaj so imena metod z malo?

        public double temperatura1(double stopinje, double fahrenheit)
        {
            Console.WriteLine("Vnesite temperaturo v fahrenheitih: ");
            fahrenheit = double.Parse(Console.ReadLine());
            stopinje = (5 / 9) * (fahrenheit - 32);
            return stopinje;           
        }

5 / 9 = 0
        /// <summary>
        /// Metoda pretvori °C v F
        /// </summary>
        /// <param name="stopinje">Vhod: temperatura v °C</param>
        /// <param name="fahrenheit">Izhod: temperatura v F</param>
        public double temperatura2(double stopinje, double fahrenheit)
        {
            Console.WriteLine("\nVnesite temperaturo v °C: ");
            stopinje = double.Parse(Console.ReadLine());
            fahrenheit = (9 / 5) * stopinje + 32;
            return fahrenheit;
        }

9 / 5 = 1, ker nimas oklepajev se potem to pomnozi s stopinjami in potem pristeje 32.

Cvenemir ::

Hvala za pomoč. Program sedaj deluje pravilno.


Vredno ogleda ...

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

PROSIM POMOČ! (programiranje

Oddelek: Pomoč in nasveti
6958 (673) comgen
»

[c#] Ustvarjanje objekta v drugem razredu

Oddelek: Programiranje
81638 (1583) Cvenemir
»

Sode ter Lihe(C Sharp)

Oddelek: Programiranje
161642 (1440) detroit
»

[C#] Preprost račun

Oddelek: Programiranje
81148 (872) darkkk
»

[C#] Reševanje domačih nalog

Oddelek: Programiranje
173217 (2721) krastača

Več podobnih tem