Menu w programie C

Rraaffkkaa
Użytkownik
Użytkownik
Posty: 28
Rejestracja: 29 lis 2010, o 00:13
Płeć: Mężczyzna
Lokalizacja: Krk/Pionki
Pomógł: 3 razy

Menu w programie C

Post autor: Rraaffkkaa »

mam pytanko dla doświadczonych programistów i tych mniej doświadczonych też
mam za zadanie zrobić program liczący np pole trójkąta,koła itp;ale żeby dawał możliwość wyboru tego czego chcemy liczyć coś w rodzaju menu.chciałbym użyć do tego odzielnych funkcjii a funkcja główna main()tylko by sobie pobierała zwracane wartości i nie wiem jak to zrobić
z góry dzięki za podpowiedzi
Awatar użytkownika
kadiii
Użytkownik
Użytkownik
Posty: 642
Rejestracja: 20 gru 2005, o 21:04
Płeć: Mężczyzna
Lokalizacja: Wrocław
Pomógł: 130 razy

Menu w programie C

Post autor: kadiii »

Tak w skrócie to schemat może wyglądać tak :

Kod: Zaznacz cały

double poleKola()
{
 pobierzDane(...) /// pobierasz dane do obliczeń -  można również w funkcji głównej pobrać wszystkie możliwe jeśli wolisz
 algorytm obliczania pola
}
double poleTrojkata()
{
 pobierzDane(...)
 algorytm obliczania pola
}
int main()
{
 double Pole;
 printf("Podaj wybor: 1  - Pole kola, 2 -  Pole trojkata ... ");
 scanf("%d",&wybor);
 switch(wybor)
 {
  case 1:
    Pole = poleKola();
  break;
 
  case 2:
    Pole = poleTrojkata();
  break;

  ...
 
  default:
    printf("Blad wyboru opcji");
 }
printf("Pole wynosi %f",Pole);
return 0;
}
Rraaffkkaa
Użytkownik
Użytkownik
Posty: 28
Rejestracja: 29 lis 2010, o 00:13
Płeć: Mężczyzna
Lokalizacja: Krk/Pionki
Pomógł: 3 razy

Menu w programie C

Post autor: Rraaffkkaa »

wielkie dzieki już troche kapuje ale dopiero sie ucze wiec jeszcze raz dzieki
zaraz spróbuje napisać

-- 1 gru 2010, o 18:43 --

cos takiego wykminiłem ale sporo błędów jakby ktoś mógł mi wytłumaczyć co jest źle to byłbym wdzięczny

Kod: Zaznacz cały

#include<stdio.h>
#include<math.h>
#define PI = 3.14

double pkolo()
{
 float r;
 printf("Obliczam pole kola,podaj promien
");
 scanf("%f",&r);
 printf("Pole wynosi %.2f
",PI*r);
 return 0;
}
double pkwadrat()
{
 float a;
 printf("Obliczam pole kwadratu,podaj dl boku");
 scanf("%f",&a);
 printf("Pole wynosi %.2f",a*a);
 return 0;
}
double ptrojkont()
{
 float b,h;
 printf("Obliczam pole trojkata,podaj wysokosc i dl podstawy");
 scanf("%f %f",&b,&h);
 printf("Pole wynosi %.2f",(b*h)/2);
 return 0;
}

int main()
{
 int koniec;
 double Pole,wybor;
 printf("Podaj czego pole chcesz liczyć:
1-pole koła
2-pole kwadratu
3-pole trojkonta
4-koniec
");
 scanf("%d",&wybor);
 while(koniec!=4)
 {
  switch wybor
   {
     case 1: Pole = pkolo();
          break;

     case 2: Pole = pkwadrat();
          break;

     case 3: Pole = ptrojkont();
          break;
   }//zamykam switch
 scanf("%d",&koniec);
 }//zamykam while
 return 0;
 }//zamykam main
Ostatnio zmieniony 1 gru 2010, o 21:55 przez Anonymous, łącznie zmieniany 1 raz.
Powód: Kod w [code][\code]!
Awatar użytkownika
kadiii
Użytkownik
Użytkownik
Posty: 642
Rejestracja: 20 gru 2005, o 21:04
Płeć: Mężczyzna
Lokalizacja: Wrocław
Pomógł: 130 razy

Menu w programie C

Post autor: kadiii »

troszkę namieszałeś - pomyłki w składnii oraz nie do końca złapałeś ideę jak to ma wyglądać. przeanalizuj kod i porównaj ze swoim. A i wzór na pole koła jaki jest?! edit: zmieniłem jeszcze nazwe funkcji obliczającej pole trójkąta - wstyd nazywać funkcję popełniając błąd ortograficzny

Kod: Zaznacz cały

#include<stdio.h>
#include<math.h>
#define PI  3.14

float pkolo()
{
float r;
printf("Obliczam pole kola,podaj promien
");
scanf("%f",&r);
return PI*r*r;
}
float pkwadrat()
{
float a;
printf("Obliczam pole kwadratu,podaj dl boku
");
scanf("%f",&a);
return a*a;
}
double ptrojkat()
{
float b,h;
printf("Obliczam pole trojkata,podaj wysokosc i dl podstawy
");
scanf("%f %f",&b,&h);
return (b*h)/2;
}

int main()
{
int koniec;
float Pole;
int wybor;

do{
 printf("Podaj czego pole chcesz liczyć:
1-pole koła
2-pole kwadratu
3-pole trojkonta
4-koniec
");
 scanf("%d",&wybor);
  switch (wybor)
  {
   case 1: Pole = pkolo();
   break;
   case 2: Pole = pkwadrat();
   break;
   case 3: Pole = ptrojkat();
   break;
   case 4: printf("Koncze
");
   break;
   default : printf("Bledna opcja
");
  }
 if(wybor!=4) printf("Pole wynosi %.2f",Pole);
}while(wybor!=4);

 return 0;
}
Rraaffkkaa
Użytkownik
Użytkownik
Posty: 28
Rejestracja: 29 lis 2010, o 00:13
Płeć: Mężczyzna
Lokalizacja: Krk/Pionki
Pomógł: 3 razy

Menu w programie C

Post autor: Rraaffkkaa »

dzieki powoli zaczynam rozumieć

-- 1 gru 2010, o 22:54 --

Kod: Zaznacz cały

float pkolo()
{
float r;
printf("Obliczam pole kola,podaj promien
");
scanf("%f",&r);
return PI*r*r;
}
czyli mając np to
to przedostatnia linijka return PI*r*r zwraca nam wartość tak?
a nie mogło być tak jak ja miałem skompilowałem i też działa czy ma to jakieś znaczenie
ja miałem

Kod: Zaznacz cały

double pkolo()
{
float r;
printf("Obliczam pole kola,podaj promien
");
scanf("%f",&r);
printf("Pole wynosi %.2f
",PI*r*r);
return 0;
}
???-- 1 gru 2010, o 23:06 --i jeszcze sorry że zapytam ale mam pare pytań(związane z C) :

1)co to znaczy ??

FILE *f,g
f=fopen("dane","r);
g=fopen("wynik","w");
while(!feof(f))

2)..................
if(w!=NULL) nie wiem co to znaczy NULL
3)
int x[] to chyba tablica czy coś takiego ale nie wiem z czym się to je

jakbyś mógł co kolwiek po krótce mi wytłumaczyć
Ostatnio zmieniony 1 gru 2010, o 21:56 przez Anonymous, łącznie zmieniany 1 raz.
Powód: Kod w [code][\code]!
Awatar użytkownika
kadiii
Użytkownik
Użytkownik
Posty: 642
Rejestracja: 20 gru 2005, o 21:04
Płeć: Mężczyzna
Lokalizacja: Wrocław
Pomógł: 130 razy

Menu w programie C

Post autor: kadiii »

to przedostatnia linijka return PI*r*r zwraca nam wartość tak?
tak
a nie mogło być tak jak ja miałem skompilowałem i też działa czy ma to jakieś znaczenie
tak jest trochę ładniej - jeśli chcesz swoją wersję to zwracaj void(czyli "nic")

Ad. 1 Jest to otwarcie plików. f,g to wskażniki na zmienną plikową - funkcja fopen zwraca adres wczytanego pliku. Eof - koniec pliku.
Ad. 2 NULL = 0
Ad. 3 jest to oznaczenie tablicy

Ogólnie polecam poczytać jakiś kurs o jezyku - jest tego dużo zarówno w bibliotekach(księgarniach) jak i w necie.
ODPOWIEDZ