zadanie domowe z c#, studia inf. Niemcy

0

Witam , kilka tygodni temu zaczalem studia Informatyczne w Niemczech. Jeden z poczatkowych tematow to podstawy programowania w c#, dostalem kilka zadan domowych z ktorymi chcialbym sie z Wami podzielic i w pewnych kwestiach uzyskac od Was odpowiedzi na pytania ( na poczatku pewnie prymitywne , no ale kazdy kiedys zaczyna )
Jedno z tych zadan przedstawie ponizej :
W pewnej drogerii klient kupil w sklepie 4 przedmioty , sprzedawca zapisal ceny na kartce jedna pod druga i zapytal klienta czy ma dodac te ceny czy moze pomnozyc . Klient dla zabawy powiedzial , zeby je pomnozyc . Okazalo sie , ze cena wyszla taka sama jak w przypadku dodawania : 7,11 zl . Pytanie brzmi ile kosztowaly pojedyncze przedmioty .
W ksiazce zwracaja uwage na to , zeby liczyc w groszach oraz zeby nie pisac programu ktory liczy od 1 do 711 groszy bo zajetoby to za duzo czasu .
Prosilbym Was o napisanie odpowiedniego kodu z komentarzami dla begginera :)
Z gory dzieki za pomoc , pozdrawiam .
Ps. Rozwiazanie ze strony z odpowiedziami moge wrzucic na forum dla porownania z waszymi kodami.

0

Mam gotowy kod ale pokaże go dopiero jak ktoś inny pokaże swój z opisami? Nie lepiej od razu wrzucić kod z odpowiedzi i podjąć próbę jego analizy i przesłać nam tą analizę abyśmy potwierdzili Twój tok rozumowania ?

0

ok wrzuce go zaraz . nie napisalem tego kodu , to gotowe rozwiazanie z ksiazki . Poki co nie wpadlem nawet na pomysl jak ten kod mialby wygladac i jakie tresci zawierac , zeby rozwiazac problem zadania . Chcialbym zobaczyc inny tok postepowania w tym zadaniu., kogos kto siedzi w tym dluzej i dla kogo takie zadanie to zaden problem :) pozdrawiam

0

kod z ksiazki

0

prosilbym ktoregos z Was o krotka analize tego kodu , badz inne pomysly na napisanie tego zadania . Dzieki !

4

Piękny przykład, Idealny przyklad jak nie pisać kodu :D
3 zagnieżdżone pętle.
Nic nie mówiące zmienne k, l ,j i, ll. Swoją drogą z początku myślałem że ll to 11.
Używanie goto zamiast zwykłego return.
Zmienianie wartości zmiennych wykorzystywanych w ramach warunków pętli FOR

Leszej jakości kod pisałem jak miałem 10 lat :/

0

Zaciekawił mnie program studiów skoro programowanie zaczyna się od C#.
Najczęściej spotykałem się z takimi programami C, sh => C++, Python => Java, C# itd.

Och. Zobaczyłem kod. Jest okropny. Jaka to książka? Wewnętrzne wydawnictwo, coś jak zeszyty szkoleniowe z przykładami?
Ja bym się tym przykładowym rozwiązaniem w ogóle nie przejmował. Najlepiej zapomnieć i wyrwać stronę by nie siała w mózgowiu spustoszenia.

1

napisanie gotowego kodu z komentarzami....

A ile placisz? Bo dla mnie to wyglada jak praca

0

z tego co wyglada to tak bede musial zrobic ;) najlepiej kupic chyba jakas polska ksiazke i rozwiazywac te zadania ze studiow po swojemu...
ten kod jes okropny.

0

Polską? W sensie tłumaczoną? Nie. Polecam w j. angielskim, tłumaczenia na polski bywają koszmarne.
C# in nutshell jest ciekawa pozycją. Tu na stronie tez jest kursoksiążka dość obszerna (i po polsku jeśli to duża zaleta dla Ciebie) która na początek można polecić.

0

kolego Fasadin ... Ile place ? moge Ci wyslac 2 czekolady niemieckie i paczke zelkow Haribo skoro tak podchodzisz to sprawy . To nie jest zadne platne zlecenie tylko zapytanie ludzi , ktorzy sie znaja o rade.

0

kolego Fasadin ... Ile place ? moge Ci wyslac 2 czekolady niemieckie i paczke zelkow Haribo skoro tak podchodzisz to sprawy . To nie jest zadne platne zlecenie tylko zapytanie ludzi , ktorzy sie znaja o rade.

to

Prosilbym Was o napisanie odpowiedniego kodu z komentarzami dla begginera

nie wygląda jak prośba o radę, ale wnioskuję, że kolega nie doczytał tego postu

prosilbym ktoregos z Was o krotka analize tego kodu , badz inne pomysly na napisanie tego zadania . Dzieki !

0

no tak , moze zle to sformuowalem . W kazdym razie nie chodzilo mi o jakies platne zlecenie tylko wymiane refleksji na temat tego zadania. Pozdrawiam !

0

W tym rozwiązaniu jest goto......

0

Kod został napisany w ten sposób, abyś nie mógł go użyć pomimo iż rozwiązuje problem. Sam pisałeś, że w książce zwracają uwagę na to jak nie pisać programu. Musisz znaleźć 4 liczby (a,b,c,d) takie, że abc*d = 7,11 && a+b+c+d = 7,11. Nie jest to aż takie trudne. Zwłaszcza, że ten przykładowy program powinien zwrócić Ci odpowiedni wynik...

0

Nie trudne? 711 ma 5 dzielników: 1,3,9,79,237. Moja implementacja c# mówi "nie ma takich liczb" które spełniają powyższe warunki jednocześnie. Coś jest nie tak z tym zadaniem. Chciałbym zobaczyć prawidłowe rozwiązanie, bo nie wiem jak się do tego zabrać nie robiąc rzeźni z pętlami for.

Jestem początkujący (1msc) prosze o wyrozumiałość:)
int k = 0; //wspolczynnik dla rozmiaru tablicy dzielnikow
for(int i=1;i<711;i++)
{
if (711 % i == 0)
k++;
}

        double[] tabA = new double[k];//tablica dzielnikow (mozliwosci na 4 kartach A,B,C,D)
        double[] tabB = new double[k];
        double[] tabC = new double[k];
        double[] tabD = new double[k];
        int roz = 0;
        for (int i = 1; i < 711; i++)
        {
            if (711 % i == 0)
            {
                tabA[roz] = (double)i;
                roz++;
            }
        }
        for (int i = 0; i < k;i++ )
        {
            tabA[i] = tabA[i] *0.1;
        }
            foreach (double s in tabA)
                Console.WriteLine(s);
        Array.Copy(tabA, tabB, tabA.Length);
        Array.Copy(tabA, tabC, tabA.Length);
        Array.Copy(tabA, tabD, tabA.Length);
        
        for(int i=0;i<k;i++)
        {
            for(int j=0;j<k;j++)
            {
                for(int l=0;l<k;l++)
                {
                    for(int m=0;m<k;m++)
                    {
                        if (tabA[i] * tabB[j] * tabC[l] * tabD[m] == 7.11 && (tabA[i] + tabB[j] + tabC[l] + tabD[m]) == 7.11)
                        {
                            Console.WriteLine("Szukane wartosci to {0}, {1}, {2}, {3}", tabA[i], tabB[j], tabC[l], tabD[m]);
                            goto lab;
                        }
                    }
                }
            }
        }
        Console.WriteLine("Nie ma takich liczb");
        lab:
        Console.ReadLine();

Czy jest możliwe wygenerowanie wszystkich 4 czterocyfrowych kombinacji z jednej tablicy z poziomu klasy Array albo korzystając z jakiegoś innego rozwiązania "wbudowanego"? Można jakoś skrócić powyższy kod? I zadam nurtujące pytanie o możliwość deklaracji tablicy bez podawania rozmiaru, wiem że Array jest klasą abstrakcyjną ale może jest jakiś inny sposób?

0

niestety w moim stopniu wtajemniczenia w c# jeszcze nie odkrylem takich znakow :) ale dzieki za probe podjecia zadania . dalej nie mam innego pomyslu na ten kod a na forum szkoly autorzy zapewniaja mnie , ze ten kod z ksiazki nalezy do najprostszych... pozdrawiam

0

@kozanostra_pl, skompilowałeś ten program z obrazka? :)
Wiesz skąd tam było 711.000.000 w ifach?
Nie ma możliwości aby a+b+c+d==abc*d jeżeli są to liczby całkowite i różne od 0.

Możesz próbować używać liczb zmiennoprzecinkowych wtedy a+b+c+d==abc*d może być prawdziwe.

Zrób jedną pętle, sprawdzaj od razu czy suma a, b, c, d =7,11/711 (zależnie od typu zmiennych jakich użyjesz).
Możesz od razu odrzucić przypadki gdzie a/b/c/d < 1,0 (chyba wiesz co się stanie przy mnożeniu 3 zmiennych *0,01/0,99) i gdzie a/b/c/d > 3,56 (jadę pociągiem i nie mogę żadnego PoC ułożyć, ale ufam instynktowi xd jak coś będzie źle jutro poprawię.
Dalej możesz zrobić pętle w petlach ale ilość iteracji będzie wynosić ~256? ch.. wie ale chyba tak :P Spróbujcie coś napisać jutro wieczorem się tym zajmę.

0

mecze sie nad tym ale nie daje za wygrana :) doszedlem do wniosku , ze liczba 711000000 wziela sie z tego , zeby dzielic i dodawac z liczbami calkowitymi . abcd=7,11
Musimy te 4 ceny pomnozyc przez 10² zeby zniknal nam przecinek. Ale jak to w matematyce , po drugiej stronie rownania tez musimy miec odpowiednia liczbe :
a
102 * b102 * c102 * d*102 =
7,11 * 102 *102 *102 *102 = 7,11 * 10^8 = 711000000.

wydaje mi sie ze autorowi zadania chodzilo wlasnie o to

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