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.
- Rejestracja:ponad 9 lat
- Ostatnio:około 4 lata
- Postów:22
- Rejestracja:ponad 9 lat
- Ostatnio:około 4 lata
- Postów:22
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
- Rejestracja:ponad 10 lat
- Ostatnio:8 miesięcy
- Postów:194
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 :/


- Rejestracja:ponad 10 lat
- Ostatnio:ponad 6 lat
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.


- Rejestracja:ponad 13 lat
- Ostatnio:prawie 3 lata
- Postów:4882
napisanie gotowego kodu z komentarzami....
A ile placisz? Bo dla mnie to wyglada jak praca

- Rejestracja:prawie 14 lat
- Ostatnio:dzień
- Postów:2512
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 !

- Rejestracja:ponad 9 lat
- Ostatnio:prawie 9 lat
- Postów:87
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...
- Rejestracja:prawie 10 lat
- Ostatnio:ponad 9 lat
- Postów:1
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?

- Rejestracja:ponad 9 lat
- Ostatnio:około 4 lata
- Postów:22
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

- Rejestracja:ponad 9 lat
- Ostatnio:prawie 9 lat
- Postów:87
@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ę.
- Rejestracja:ponad 9 lat
- Ostatnio:około 4 lata
- Postów:22
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 :
a102 * 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
