TABLICE Zliczanie ilości liczb które dzielą sie przez pięć bez reszty

0

Witam
Ostatnio intensywnie "programuję" ;) w cudownym języku C# ;)
I też jestem aktywny tutaj na forum, zakładając wątki;)
Mam kolejne pytanie Tworzę programik który losuje liczby w tablicy i wypisuje te które są podzielne przez pięć bez reszty
Teraz nie wiem jak zrobić aby ten programik zliczył mi ile jest tych liczb podzielnych przez pięć A o to kod:
static void Main(string[] args)
{
int min = 100, max = 999, i;
int[] tab = new int[10];
Random losowanie = new Random();
for (i = 0; i < tab.Length; i++)
{
tab[i] = losowanie.Next(min, max);
Console.WriteLine("index[{0}] ma wartość {1}", i, tab[i]);
}
Console.WriteLine();
for (i = 0; i < tab.Length; i++)
{
if (tab[i] % 5 == 0) //sprawdzany jest warunek czy są liczby podzielne przez 5
{
Console.WriteLine("Liczb podzielnych przez piec jest " + tab[i]);
}
}

    }
}

Proszę o mała radę, jak to można rozwiązać.

1

Nie wiem czy to jest podchwytliwe pytanie, ale można to zrobić np. tak:

 
       static void Main(string[] args)
        {            
            int min = 100, max = 999, i=0, j=0;
            int[] tab = new int[10];
            Random losowanie = new Random();
            for (i = 0; i < tab.Length; i++)
            {
                tab[i] = losowanie.Next(min, max);
                Console.WriteLine("index[{0}] ma wartość {1}", i, tab[i]);
            }
            Console.WriteLine();
            for (i = 0; i < tab.Length; i++) 
            {
                if (tab[i] % 5 == 0) //sprawdzany jest warunek czy są liczby podzielne przez 5 
                {
                    j++;
                }
            }
            Console.WriteLine("Liczb podzielnych przez piec jest " + j.ToString());


        }
    }
0

shifttab no dzięki, właśnie o to chodziło:)
Teraz się zastanawiam jak działa metoda ToString()
;)

0

A jest jakaś różnica zapisu
miedzy ..."+j); a ..."+j.ToString()); Bo jak się nie mylę, visual automatycznie do j dodaje metodę ToString() taka niejawna konwersja to jest ?

I różnice miedzy ...",j); a ..."+j);

O co z tym chodzi i jakieś znaczące różnice są ?

0

Nie Visual, tylko kompilator. Nie dodaje, tylko wywołuje metodę ToString() dla wszystkich obiektów, które są konkatenowane (a wiadomo o tym, bo jednym z nich jest string).

Można budować stringi w ten sposób: string s = "abc " + 1 + " xyz " + 8 + " w" - w pewnym momencie to robi się nieczytelne. Dlatego można też i tak: string s = string.Format("abc {0} xyz {1} w", 1, 8). Z metody Console.WriteLine można też korzystać w ten sposób.

0

Bo jak się nie mylę, visual automatycznie do j dodaje metodę ToString()
Nie Visual, tylko kompilator. Nie dodaje, tylko wywołuje metodę ToString() dla wszystkich obiektów
Czyli Visual. Czyli dodaje. Początkującemu należy upraszczać, i przytakiwać jeśli ma 95% racji bez nadmiernego wnikania w szczegóły.

Można budować stringi w ten sposób
Jestem ciekaw, który z podanych przez ciebie sposóbów będzie szybszy: konkatenacja tworzy nowego stringa po dodaniu każdego elementu (kopiując wszystko co złożono do tej pory). z drugiej strony, "abc " + 1 + " xyz " + 8 + " w" to wyrażenie stałe, więc teoretycznie może być zamienione na "abc 1 xyz 8 w" już w czasie kompilacji.

1

Tak w ogóle do takich zadań świetny jest LINQ i wyrażenia lambda:

tab.Where(nr => nr % 5 == 0).Count()
0
pan kuba napisał(a)

Tak w ogóle do takich zadań świetny jest LINQ i wyrażenia lambda:

tab.Where(nr => nr % 5 == 0).Count()

Faktycznie, dla początkującego może być to trudne, wiem bo sam tego nie rozumiałem. Nie wiem jak inne książki do nauki ale Troelsen opisywał to w sposób, który początkującemu raczej miesza w głowie niż wyjasnia (proste wyjasnienie to dla niego cos w stylu "wyrażenie lambda to zwięzły sposób tworzenia metod anonimowych upraszczający tworzenie delegatów".
Przede wszystkim - na początku nie trzeba wiedzieć "czym są" wyrażenia lambda, trzeba tylko wiedzieć jak ich używać. Łatwo można to przetłumaczyć w ten sposób:
(nr => nr%5==0) - "dla takiego danego 'nr', że nr jest podzielny bez reszty przez 5'. I w zasadzie tyle, można używać.

0
somekind napisał(a)

Myślę, że początkującym trzeba często powtarzać, że kompilator i IDE to co innego.

C:\>csc
Kompilator Microsoft (R) Visual C# 2008 w wersji 3.5.30729.1
dla programu Microsoft (R) .NET Framework w wersji 3.5
Copyright (C) Microsoft Corporation. Wszelkie prawa zastrzeżone.

więc chyba możemy kompilator C# nazywać w uproszczeniu „vizualem”? (choć nie takie znaczenie miał pewnie pytający na myśli)

0

Nie Visual, tylko kompilator. Nie dodaje, tylko wywołuje metodę ToString() dla wszystkich obiektów, które są konkatenowane (a wiadomo o tym, bo jednym z nich jest string).

Można budować stringi w ten sposób: string s = "abc " + 1 + " xyz " + 8 + " w" -

Czyżby?

Działa to tylko dlatego, że klasa System.String ma przeładowany operator +, i wykonuje metodę String.Concat Method (Object, Object). Metoda ta dla tych dwóch obiektów wykonuje toString().

Jednak taki kod nie będzie działał:

string a = 1 + 2;

Ponieważ operator+ musi zwrócić int w tym przypadku.

Natomiast poniższy kod:

string b=1+1+"a";

Nie zwróci "11a" tylko "2a".

0
Deti napisał(a)

Jednak taki kod nie będzie działał:

string a = 1 + 2;

A dlaczego miałby działać? Przecież tu jest dodawanie, a nie konkatenacja.

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