Wątek przeniesiony 2015-12-15 15:25 z C# i .NET przez somekind.

Nie wiem jak nie powtarzać line.

0

Nie chcę powtarzać w kodzie i nie wiem jak to zrobić :(

 
                suma = Math.Round(okno / 100) * 100;

                Console.WriteLine("okno przed zaokrągleniem " + okno);
                Console.WriteLine("okno " + suma);
                Console.ReadKey();

kod wygląda tak:

        

            int wartosc = 1500;
            double okno;
            double suma;

            if (wartosc >= 1000 && wartosc <= 2000)
            {
                okno = wartosc * 0.1;
                suma = Math.Round(okno / 100) * 100;

                Console.WriteLine("okno przed zaokrągleniem " + okno);
                Console.WriteLine("okno " + suma);
                Console.ReadKey();
            }
            if (wartosc >= 2001 && wartosc <= 6000)
            {
                okno = (200 * 0.1) + ((wartosc - 200) * 0.05);

                suma = Math.Round(okno / 100) * 100;

                Console.WriteLine("okno przed zaokrągleniem " + okno);
                Console.WriteLine("okno " + suma);
                Console.ReadKey();
            }
            if (wartosc >= 6001 && wartosc <= 20000)
            {
                okno = (200 * 0.1) + (400 * 0.05) + ((wartosc - 600) * 0.01);

                suma = Math.Round(okno / 100) * 100;

                Console.WriteLine("okno przed zaokrągleniem " + okno);
                Console.WriteLine("okno " + suma);
                Console.ReadKey();
            }
2

poczytaj o funkcjach ;) a wyswietlanie mozesz zrobic po ifach

0

Może zrobić metodę np. WyswietlOkno:

 

public void WyswietlOkno()
{
                suma = Math.Round(okno / 100) * 100;
 
                Console.WriteLine("okno przed zaokrągleniem " + okno);
                Console.WriteLine("okno " + suma);
                Console.ReadKey();
}

I potem zamiast tego kodu wstawiasz WyswietlOkno();

1

Możesz to zrobić np. w taki sposób:

        public static String wyswietl(int wartosc)
        {
            String wynik = String.Empty;
            double okno = 0, suma = 0;
            if (wartosc >= 1000 && wartosc <= 2000)
            {
                okno = wartosc * 0.1;                              
            }
            if (wartosc >= 2001 && wartosc <= 6000)
            {
                okno = (200 * 0.1) + ((wartosc - 200) * 0.05);                              
            }
            if (wartosc >= 6001 && wartosc <= 20000)
            {
                okno = (200 * 0.1) + (400 * 0.05) + ((wartosc - 600) * 0.01);                
            }

            suma = Math.Round(okno / 100) * 100;  
            wynik = "okno przed zaokrągleniem " + okno + "\n" +
                    "okno " + suma;

            return wynik;
        }
        static void Main(string[] args)
        {
            Console.WriteLine(wyswietl(1500));
            Console.Read();
        }
1

Może tak:

        struct SizeMul { public int value,promile;  };
        static SizeMul[] sizemul = new SizeMul[]
        {
            new SizeMul() { value =  2000, promile = 100 },
            new SizeMul() { value =  4000, promile =  50 },
            new SizeMul() { value = 99999, promile =  10 }
        };

        static void Main(string[] args)
        { 
            int wartosc = 2000;
            double okno = 0;
            int value = wartosc;
            for (int i = 0; (value>0)&&(i < sizemul.Length); ++i)
            {
                int currvalue = sizemul[i].value;
                int usevalue = Math.Min(value, currvalue);
                okno += 0.001 * usevalue * sizemul[i].promile;
                value -= currvalue;
            }
            Console.WriteLine("okno przed zaokrągleniem " + okno + Environment.NewLine +"okno " + Math.Round(okno / 100) * 100);
            Console.ReadKey();
        }
1

Mozna tak:

        public static double CustomRound(int wartosc)
        {
            double okno = 0;

            if (wartosc >= 1000)
            {
                okno = wartosc * 0.1;
            }
            if (wartosc >= 2001)
            {
                okno = okno + ((wartosc - 200) * 0.05);
            }
            if (wartosc >= 6001 && wartosc <= 20000)
            {
                okno = okno + ((wartosc - 600) * 0.01);
            }

            return Math.Round(okno / 100) * 100;
        }

        static void Main(string[] args)
        {
            int input = 1500;
            Console.WriteLine("okno przed zaokrągleniem {0}\n okno {1}", input, CustomRound(input));
            Console.Read();
        }
0

Dziękuje wam wszystkim, będę miał teraz na czym się uczyć ^^
dziękuje jeszcze raz

0

a co zrobić w przypadku gdy:

            int wartosc = 1500;
            double okno1;
            double okno2;
            double suma1;
            double suma2;
 
            if (wartosc >= 1000 && wartosc <= 2000)
            {
                okno1 = wartosc * 0.1;
                okno2 = wartosc * 0.342;

                suma1 = Math.Round(okno1 / 100) * 100;
                suma2 = Math.Round(okno2 / 100) * 100;
 
                Console.WriteLine("okno1 przed zaokrągleniem " + okno1);
                Console.WriteLine("okno2 przed zaokrągleniem " + okno2);
                Console.WriteLine("okno1 " + suma1);
                Console.WriteLine("okno2 " + suma2);
                Console.ReadKey();
            }
            if (wartosc >= 2001 && wartosc <= 6000)
            {
                okno1 = (200 * 0.1) + ((wartosc - 200) * 0.05);
                okno2 = (200 * 0.43) + ((wartosc - 200) * 6.66);

                suma1 = Math.Round(okno1 / 100) * 100;
                suma2 = Math.Round(okno2 / 100) * 100;
 
                Console.WriteLine("okno1 przed zaokrągleniem " + okno1);
                Console.WriteLine("okno2 przed zaokrągleniem " + okno2);
                Console.WriteLine("okno1 " + suma1);
                Console.WriteLine("okno2 " + suma2);
                Console.ReadKey();
            }
            if (wartosc >= 6001 && wartosc <= 20000)
            {
                okno1 = (200 * 0.1) + (400 * 0.05) + ((wartosc - 600) * 0.01);
                okno2 = (200 * 0.1) + (400 * 0.24) + ((wartosc - 600) * 0.14);
 
                suma1 = Math.Round(okno1 / 100) * 100;
                suma2 = Math.Round(okno2 / 100) * 100;
 
                Console.WriteLine("okno1 przed zaokrągleniem " + okno1);
                Console.WriteLine("okno2 przed zaokrągleniem " + okno2);
                Console.WriteLine("okno1 " + suma1);
                Console.WriteLine("okno2 " + suma2);
                Console.ReadKey();
            }
 

Staram się zrobić waszymi sposobami ale mi nie wychodzi... ;/

0

wyjdz sobie od tego... zrob z tego funkcje, stale i pomysl jak lepiej jeszcze to usprawnic

int wartosc = 1500;
double okno1;
double okno2;
double suma1;
double suma2;

if (wartosc >= 1000 && wartosc <= 2000)
{
    okno1 = wartosc * 0.1;
    okno2 = wartosc * 0.342;
}
if (wartosc >= 2001 && wartosc <= 6000)
{
    okno1 = (200 * 0.1) + ((wartosc - 200) * 0.05);
    okno2 = (200 * 0.43) + ((wartosc - 200) * 6.66);

}
if (wartosc >= 6001 && wartosc <= 20000)
{
    okno1 = (200 * 0.1) + (400 * 0.05) + ((wartosc - 600) * 0.01);
    okno2 = (200 * 0.1) + (400 * 0.24) + ((wartosc - 600) * 0.14);
}
suma1 = Math.Round(okno1 / 100) * 100;
suma2 = Math.Round(okno2 / 100) * 100;

Console.WriteLine("okno1 przed zaokrągleniem " + okno1);
Console.WriteLine("okno2 przed zaokrągleniem " + okno2);
Console.WriteLine("okno1 " + suma1);
Console.WriteLine("okno2 " + suma2);
Console.ReadKey(); 
0

ale niestety to nie działa prawidłowo jest walidacja dla suma1, suma2; dla sekcji

 
suma1 = Math.Round(okno1 / 100) * 100;
suma2 = Math.Round(okno2 / 100) * 100;

próbowałem takie kombinacje

1
class Program
    {
      
        public static double Suma(double okno)
        {
            return Math.Round((okno / 100) * 100);
        }
        public static string Wyswietl(int wartosc)
        {
            string wynik = string.Empty;
            double oknoA = 0, oknoB = 0;

            if (wartosc >= 1000 && wartosc <= 2000)
            {
                oknoA = wartosc * 0.1;
                oknoB = wartosc * 0.342;

            }
            else if (wartosc >= 2001 && wartosc <= 6000)
            {
                oknoA = (200 * 0.1) + ((wartosc - 200) * 0.05);
                oknoB = (200 * 0.43) + ((wartosc - 200) * 6.66);
            }
            else if (wartosc >= 6001 && wartosc <= 20000)
            {
                oknoA = (200 * 0.1) + (400 * 0.05) + ((wartosc - 600) * 0.01);
                oknoB = (200 * 0.1) + (400 * 0.24) + ((wartosc - 600) * 0.14);
            }
            
            wynik = String.Format("Okno {0} przed zaokrągleniem = {1} \nOkno {0} = {2}\n", "A", oknoA, Suma(oknoA));
            wynik += String.Format("Okno {0} przed zaokrągleniem = {1} \nOkno {0} = {2}\n", "B", oknoB, Suma(oknoB));
            return wynik;
        }

        
        static void Main(string[] args)
        {
            Console.WriteLine(Wyswietl(1500));
            Console.Read();
        }
    }

1 użytkowników online, w tym zalogowanych: 0, gości: 1