Piotrus1pan [ ZbiQ2 ]
C pytanie dotyczące programu
"Stwórz program, który wczyta dwie liczby podane przez użytkownika, a następnie o
rodzaj działania (1 – suma, 2 – różnica, 3 – iloczyn, 4 – iloraz, 5 – reszta z dzielenia, 6
– średnia). Po wyborze działania ma ono zostać wykonane, a wynik wyświetlony na
ekran."
Nie wiem jak wykonać żeby wybierało się czy ma dodawać,mnożyć,odejmować itd... Jak to zrobić w języku C ?
Likfidator [ Generaďż˝ ]
Zapisz podany rodzaj działania do zmiennej np.
int rodzajDzialania;
potem skorzystaj ze:
switch(rodzajDzialania)
‹
case 1:
wynik=a+b;
break;
case 2:
wynik=a-b;
break;
case 3:
wynik= a*b;
break;
case 4:
wynik= a/b;
break;
//itd...
›
EDIT: Tutaj masz składnie:
Oczywiście to można również zrobić za pomocą kilku "if", ale switch ładniej wygląda i działa szybciej.
Marcio [ Legend ]
[...]
int a = 2, b = 3;
char c;
printf("podaj operator: ");
scanf("%s", &c);
if (c == '+')
[...]
else if (c == '-')
i tak dalej
Piotrus1pan [ ZbiQ2 ]
Myślę nad tymi switch ;P Od razu mówię że jestem bardzo słaby w programowaniu :(
#include <stdio.h>
#include <conio.h>
int main();
int a;
int b;
printf("Podaj 1 liczbe :");
scanf("%i",&a);
printf("Podaj 2 liczbe :");
scanf("%i",&b);
printf("Co chcesz zrobic z tymi liczbami ?/n 1-dodac/n 2-odjac/n 3-podzielic/n 4-pomnozyc/n 5-podzielic z reszta/n 6-srednia/n);
switch(a,b);
‹
case 1:
wynik=a+b;
break;
case 2:
wynik=a-b;
break;
case 3:
wynik=a/b;
break;
case 4:
wynik=a*b;
break;
case 5:
wynik=a%b;
case 6:
wynik=a+b/2;
›
getch();
return 0;
na razie tyle utworzyłem... co mam źle i co dalej mam zrobić ?
Blackbolt --> Po za tematem to było... Ale jak tak to Cię razi w oczy to zmieniłem
BlackBolt [ Senator ]
Kategoria -> szkoła.
Sanchin [ Orchid Samurai ]
switch(a,b) nic ci nie da w tym przypadku. Wprowadź dodatkową zmienną (cokolwiek), zrób scanfa do niej i po tym switch(zmienna)
Piotrus1pan [ ZbiQ2 ]
Sanchin możesz podac przykład ? czyli mam dodać int c; i switch(c) ?
DEXiu [ Senator ]
Likfidator podał Ci przykład. Dorzuć do niego swoje wczytywanie zmiennych a i b a na końcu wypisanie wyniku i będzie cały program. Instrukcja switch jako argument przyjmuje zmienną, której wartość ma przyrównywać do poszczególnych "case-ów" - nie wiem po co podajesz a i b.
Likfidator [ Generaďż˝ ]
W switch podajesz zmienną, której różne przypadki będziesz rozpatrywał.
Najpierw musisz zapisać wybór użytkownika do jaki typ działania wykonać tj.:
//dodaj dwie zmienne na początku
int rodzajDzialania;
int wynik;
//później zapytaj użytkownika o typ działania
printf("Co chcesz zrobic z tymi liczbami ?/n 1-dodac/n 2-odjac/n 3-podzielic/n 4-pomnozyc/n 5-podzielic z reszta/n 6-srednia/n);
scanf("%i",&rodzajDzialania); // czasem zamiast %i nie należy wpisać %d ?
switch(rodzajDzialania) //po switch nie ma średnika!
case 1:
wynik=a+b;
break;
case 2:
wynik=a-b;
break;
case 3:
wynik=a/b;
break;
case 4:
wynik=a*b;
break;
case 5:
wynik=a%b;
case 6:
wynik=a+b/2;
Piotrus1pan [ ZbiQ2 ]
DEXiu--> za bardzo nie rozumiem o co chodzi "Likfidator podał Ci przykład. Dorzuć do niego swoje wczytywanie zmiennych a i b a na końcu wypisanie wyniku i będzie cały program."
likfidator -- >Dzięki za podpowiedź :)
#include <stdio.h>
#include <conio.h>
int main();
int a;
int b;
int rodzajDzialania;
int wynik;
printf("Podaj 1 liczbe :");
scanf("%i",&a);
printf("Podaj 2 liczbe :");
scanf("%i",&b);
printf("Co chcesz zrobic z tymi liczbami ?/n 1-dodac/n 2-odjac/n 3-podzielic/n 4-pomnozyc/n 5-podzielic z reszta/n 6-srednia/n");
switch(rodzajDzialania)
case 1:
wynik=a+b;
break;
case 2:
wynik=a-b;
break;
case 3:
wynik=a/b;
break;
case 4:
wynik=a*b;
break;
case 5:
wynik=a%b;
case 6:
wynik=a+b/2;
printf("Oto twoj wynik: %i",wynik);
getch();
return 0;
czyli tak program ma wyglądać ? tylko że w 8 linijce (samo "" ) wyskakuje mi błąd "8 expected unqualified-id before '' token "
Piotrus1pan [ ZbiQ2 ]
up
Likfidator [ Generaďż˝ ]
Błąd wyskakuje, gdyż pominąłeś nawias klamrowy zaraz za funkcją main.
Podstawowy program w C wygląda następująco:
#include <stdio.h>
int main()
Ten program nie robi nic, bo w funkcji main nie ma żadnych instrukcji. Widzę, że nie rozumiesz znaczenia nawiasów klamrowych, co powinno być wyjaśnione w pierwszej kolejności. Programowanie nie jest trudne, ale wymaga zrozumienia wszystkiego od samego początku. Jeśli zgubisz się w pewnym momencie, to potem sobie nie poradzisz. Niestety nie mam siły tłumaczyć wszystkiego na forum, ale poszukaj jakiegoś kursu dla początkujących i sobie poradzisz.
Piotrus1pan [ ZbiQ2 ]
#include <stdio.h>
#include <conio.h>
int main()
int a;
int b;
int rodzajDzialania;
int wynik;
printf("Podaj 1 liczbe :");
scanf("%i",&a);
printf("Podaj 2 liczbe :");
scanf("%i",&b);
printf("Co chcesz zrobic z tymi liczbami ?\n 1-dodac\n 2-odjac\n 3-podzielic\n 4-pomnozyc\n 5-podzielic z reszta\n 6-srednia\n");
switch(rodzajDzialania)
case 1:
wynik=a+b;
break;
case 2:
wynik=a-b;
break;
case 3:
wynik=a/b;
break;
case 4:
wynik=a*b;
break;
case 5:
wynik=a%b;
case 6:
wynik=a+b/2;
printf("Oto twoj wynik: %i",wynik);
getch();
return 0;
Tylko że mam ograniczenie co do zrobienia tego programu do 24...
eee i nie wiem co się dzieje skąd mu taki wynik wyszedł T_T
pecet007 [ Fallout NV ]
tip: po każdym case musi być break, inaczej od tego case'a przechodzi po kolei każdą następna etykietę

Likfidator [ Generaďż˝ ]
#include <stdio.h>
#include <conio.h>
int main()
‹
int a;
int b;
int rodzajDzialania;
int wynik;
printf("Podaj 1 liczbe :");
scanf("%i",&a);
printf("Podaj 2 liczbe :");
scanf("%i",&b);
printf("Co chcesz zrobic z tymi liczbami ?\n 1-dodac\n 2-odjac\n 3-podzielic\n 4-pomnozyc\n 5-podzielic z reszta\n 6-srednia\n");
scanf("%i",&rodzajDzialania);
switch(rodzajDzialania)
‹
case 1:
wynik=a+b;
break;
case 2:
wynik=a-b;
break;
case 3:
wynik=a/b;
break;
case 4:
wynik=a*b;
break;
case 5:
wynik=a%b;
break;
case 6:
wynik=a+b/2;
break;
›
printf("Oto twoj wynik: %i",wynik);
getch();
return 0;
›
Teraz powinno działać jak należy.
EDIT: Nawet sprawdziłem w kompilatorze i działa... Mam nadzieję, że powtórzysz sobie podstawy, bo dalej będzie coraz trudniej.

Piotrus1pan [ ZbiQ2 ]
pecet007->dodałem breaky ale nadal robi te samo obliczenie...
#include <stdio.h>
#include <conio.h>
int main()
int a;
int b;
int x;
int wynik;
printf("Podaj 1 liczbe :");
scanf("%i",&a);
printf("Podaj 2 liczbe :");
scanf("%i",&b);
printf("Co chcesz zrobic z tymi liczbami ?\n 1-dodac\n 2-odjac\n 3-podzielic\n 4-pomnozyc\n 5-podzielic z reszta\n 6-srednia\n");
scanf("%i",&x);
switch(x)
case 1:
wynik=a+b;
break;
case 2:
wynik=a-b;
break;
case 3:
wynik=a/b;
break;
case 4:
wynik=a*b;
break;
case 5:
wynik=a%b;
break;
case 6:
wynik=a+b/2;
break;
printf("Oto twoj wynik: %i",wynik);
getch();
return 0;
ok mój program już działa :))
Dzięki wszystkim za pomoc ^^
MOD [ Generaďż˝ ]
Masz błąd w liczeniu średniej, powinno być (a+b)/2
Pamiętaj o kolejności wykonywania działań(bardziej zaawansowanie to się nazywa priorytety operatorów).
Sainim [ Centurion ]
Musisz zdać sobie jeszcze sprawę, że Twój kod i tak będzie błędny (przy np. dzieleniu, liczeniu średniej) dla pewnych danych, dla których wynik nie będzie liczbą całkowitą.