GRY-Online.pl --> Archiwum Forum

C pytanie dotyczące programu

09.12.2010
21:56
[1]

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 ?

09.12.2010
22:01
[2]

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.

09.12.2010
22:03
[3]

Marcio [ Legend ]

[...]
int a = 2, b = 3;
char c;
printf("podaj operator: ");
scanf("%s", &c);
if (c == '+')

[...]

else if (c == '-')

i tak dalej

09.12.2010
22:20
[4]

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

09.12.2010
22:21
[5]

BlackBolt [ Senator ]

Kategoria -> szkoła.

09.12.2010
22:23
[6]

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)

09.12.2010
22:25
[7]

Piotrus1pan [ ZbiQ2 ]

Sanchin możesz podac przykład ? czyli mam dodać int c; i switch(c) ?

09.12.2010
22:29
[8]

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.

09.12.2010
22:29
[9]

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;


09.12.2010
22:31
[10]

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 "

09.12.2010
22:45
[11]

Piotrus1pan [ ZbiQ2 ]

up

09.12.2010
22:47
[12]

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.

09.12.2010
22:53
[13]

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


C pytanie dotyczące programu - Piotrus1pan
09.12.2010
22:56
[14]

pecet007 [ Fallout NV ]

tip: po każdym case musi być break, inaczej od tego case'a przechodzi po kolei każdą następna etykietę

09.12.2010
22:57
smile
[15]

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.

09.12.2010
22:59
smile
[16]

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 ^^

10.12.2010
10:10
[17]

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).

10.12.2010
10:37
[18]

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ą.

© 2000-2026 GRY-OnLine S.A.