Forum » Programiranje » [C#] Klicanje metod
[C#] Klicanje metod

Cvenemir ::
Lp. Zanima me, kako naj v main podprogramu pokličem metode za pretvarjanje enot.
Poskusil sem tako:
vendar javi napako "The name pretvoriTemperaturo1 does not exist in current context".
Celotna koda je naslednja:
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
pretvoriTemperaturo1 ne obstaja, obstaja pa pretvoriTemperature1
Zgodovina sprememb…
- spremenil: Recordman ()

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:
In še celotna koda:
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 ::
Ja pri vsakem izpisu posebej hočem preračunat eno enoto, vendar visual studio pravi da
sta potrebna dva argumenta :)
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.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | PROSIM POMOČ! (programiranjeOddelek: Pomoč in nasveti | 1006 (721) | comgen |
» | [c#] Ustvarjanje objekta v drugem razreduOddelek: Programiranje | 1691 (1636) | Cvenemir |
» | Sode ter Lihe(C Sharp)Oddelek: Programiranje | 1717 (1515) | detroit |
» | [C#] Preprost računOddelek: Programiranje | 1206 (930) | darkkk |
» | [C#] Reševanje domačih nalogOddelek: Programiranje | 3379 (2883) | krastača |