[Newbie] Czy mogę umieścić dwa niezależne "ify" w jednej pętli for

0

Cześć,

Przerabiam książkę "Wstęp do programowania w C#" Autorstwa Państwa Anny Kempy oraz Tomasza Stasia (bardzo mi się podoba ta publikacja, chwała autorom za darmową książkę). Uczę się swoim tempem i dotychczas jest wszystko jasne i przejrzyste.
Ale pojawiło mi się jedno pytanie, zapewne banalne, ale mnie nurtuje, otóż w zadaniu dotyczącym wyświetleniu wartości maksymalnej i minimalnej mam skorzystać z poznanych dotychczas pętli oraz instrukcji warunkowych. Stąd moje pytanie czy da się jakoś umieścić dwie niezależne instrukcje warunkowe w jednej pętli for ? Poniżej mój kod oraz screen z zamysłem.

namespace Aplikacja_1
{
    class Program
    {
        public static void Main(string[] args)
        {

            int n, min, max; // Liczba elementów tablicy jednowymiarowej, minimum z tablicy, maksimum z tablicy                        
            Console.WriteLine("Podaj liczbę elementów: ");
            n = Convert.ToInt32(Console.ReadLine()); // deklaracja rozmiaru tablicy
            int[] tab1 = new int[n];            
            Console.WriteLine("Wpisz poszczególne wartości tablicy: ");
            for (int count = 0; count < tab1.Length; count++) // pętla dla określenia wartości w tablicy
            {
                tab1[count] = Convert.ToInt32(Console.ReadLine());
            }
            min = tab1[0]; //Definuje początkową wartość min
            max = tab1[0]; //Definuje początkową wartość max
            for (int licznik = 1; licznik <tab1.Length;licznik++) // pętla dla minimum
            {
                if (max < tab1[licznik])
                {
                    max = tab1[licznik];
                }                            
            }
            for (int licznik = 1; licznik < tab1.Length; licznik++) // pętla dla maksimum
            {
                if (min > tab1[licznik])
                {
                    min = tab1[licznik];
                }
            }
            foreach (int x in tab1)
                Console.Write("{0},",x); 
            Console.WriteLine();
            Console.WriteLine("Maksimum wynosi: {0}, Minimum wynosi: {1}", max,min);           

            Console.ReadKey();
                                          
           
        }
    }
}

screenshot-20190218195800.png

2

Spróbuj to się przekonasz :)

0

Heh, dzięki za wyczerpującą odpowiedź :P Jak próbuję to wywala mi błąd i się po prostu zastanawiam czy dla takiego typy muszę definiować oddzielną pętlę, pełniącą tę samą rolę.
Czyli mam rozumieć, że się nie da ?

3

Oczywiście, że się da.

1

W tej chwili zadziałało i nie wywala mi błędu (wcześniej próbowałem chyba z godzinę i cały czas było coś nie tak). Choć mam wrażenie, że wszystko zrobiłem tak jak poprzednio. Przepraszam za zamieszanie.

namespace Aplikacja_1
{
    class Program
    {
        public static void Main(string[] args)
        {

            int n, min, max; // Liczba elementów tablicy jednowymiarowej, minimum z tablicy, maksimum z tablicy                        
            Console.WriteLine("Podaj liczbę elementów: ");
            n = Convert.ToInt32(Console.ReadLine()); // deklaracja rozmiaru tablicy
            int[] tab1 = new int[n];            
            Console.WriteLine("Wpisz poszczególne wartości tablicy: ");
            for (int count = 0; count < tab1.Length; count++) // pętla dla określenia wartości w tablicy
            {
                tab1[count] = Convert.ToInt32(Console.ReadLine());
            }
            min = tab1[0]; //Definuje początkową wartość min
            max = tab1[0]; //Definuje początkową wartość max
            for (int licznik = 1; licznik <tab1.Length;licznik++) // pętla dla minimum
            {
                if (max < tab1[licznik])
                {
                    max = tab1[licznik];
                }

                if (min > tab1[licznik])
                {
                    min = tab1[licznik];
                }

            }
           
            foreach (int x in tab1)
                Console.Write("{0},",x); 
            Console.WriteLine();
            Console.WriteLine("Maksimum wynosi: {0}, Minimum wynosi: {1}", max,min);           

            Console.ReadKey();
                                          
           
        }
    }
}
3

Tu nie ma żadnej magii, po prostu telepatycznie naprawiłem Twój komputer. Nie ma za co.

3

Choć mam wrażenie, że wszystko zrobiłem tak jak poprzednio.

To złudne wrażenie. W 99.99% przypadków jeśli coś nie działa, to z winy programisty. Tak samo nie daj się łudzić myślom typu "To co zmieniłem w ogóle nie powinno wpłynąć na ten błąd który się pojawia, to musi być coś innego czego ja nie zrobiłem". Taka drobna rada na dalszą drogę nauki ;)

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