• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Program w C i kłopot z default

Object Storage Arubacloud
0 głosów
195 wizyt
pytanie zadane 27 września 2015 w C i C++ przez Armando Obywatel (1,870 p.)
zamknięte 28 września 2015 przez event15

Cześć,

Miałem za zadanie przerobić program z C++ na C i nawet mi się udało ale chciałbym się dowiedzieć dlaczego cokolwiek bym w programie nie wykonał to zawsze wyświetli się treść z default "Nie wybrano funkcji". Z góry dzięki ;)

#include <stdio.h>
#include <stdlib.h>
#include <math.h>


void p_troj()
{
    float a,b,c,p,S;
    printf("Wpisz dlugosci bokow");
    printf("\na= ");
    scanf("%f",&a);
    printf("\nb= ");
    scanf("%f",&b);
    printf("\nc= ");
    scanf("%f",&c);
    p=(a+b+c)/2;
    S=sqrt(p*(p-a)*(p-b)*(p-c));
    printf("\n\nPole trojkata wynosi: %f",S,"\n");


};
void p_trap()
{
    float a,b,h,S;
    printf("Podaj pierwsza podstawe trapezu ");
    printf("\na= ");
    scanf("%f",&a);
    printf("Podaj druga podstawe trapezu ");
    printf("\nb= ");
    scanf("%f",&b);
    printf("Podaj wysokosc trapezu ");
    printf("\nh= ");
    scanf("%f",&h);
    S=((a+b)*h)/2;
    printf("\n\nPole trapezu wynosi: %f",S,"\n");

};
void p_kola()
{
    float r,S;
    printf("Podaj pierwszy promion kola ");
    printf("nr= ");
    scanf("%f",&r);
    S=3.14*r*r;
    printf("\n\nPole kola wynosi: %f",S,"\n");

};
int main()
{
    char w;
	do
	{
		system("CLS");
		printf("Wybierz co chcesz obliczyc:");
		printf("\n1. Pole trojkata - P");
		printf("\n2. Pole trapezu - T");
		printf("\n3. Pole kola - S");
		printf("\n4. Koniec - K\n");
		scanf("%c",&w);
		switch (w)
		{
			case 'P' : case 'p' :p_troj();break;

			case 'T' : case 't' :p_trap();break;

			case 'S' : case 's' :p_kola();break;

			default : printf("Nie wybrano funkcji\n");break;

		}
		system ("PAUSE");
	}
    while (w!='K'&&w!='k');
    return 0;
}

 

komentarz zamknięcia: problem rozwiązany

1 odpowiedź

+1 głos
odpowiedź 27 września 2015 przez Patrycjerz Mędrzec (192,320 p.)
wybrane 28 września 2015 przez Armando
 
Najlepsza

Co?! Dwa case'y na raz? Zmieniaj to jak najszybciej. Do takiego czegoś są ify, nie switch.

komentarz 27 września 2015 przez Armando Obywatel (1,870 p.)
Z tego co wiem to w C++ taki zapis jest raczej prawidłowy i działa bez problemów. Wiem, że C różni się od C++ ale żeby aż tak ? Chyba, że to jest błędny zapis niezależnie od języka w tym wypadku. Oczywiście mogę się mylić. Jeśli tak to proszę o wytłumaczenie.
komentarz 27 września 2015 przez Patrycjerz Mędrzec (192,320 p.)

Z tego, co się uczyłem, nie istnieje taka składnia. Nie wiem, może jestem niedouczony, ale jeśli ci to nie działa, to chyba nie istnieje.

Nawet jeśli, to czy podasz np. p, czy P, to program ci nie wejdzie do danej funkcji, ponieważ jeden z case'ów nie będzie spełniony.

Tutaj zastosuj ify z operatorami logicznymi ||.

komentarz 27 września 2015 przez Armando Obywatel (1,870 p.)

Program działa bez zarzutu i wykorzystuje właśnie owe case'y, więc taka składnia jest raczej poprawna. Problem polegał na tym, że zawsze wyświetlał się napis z funkcji default nawet przy prawidłowym wyborze. Dzięki za odpowiedź, teraz już wiem dlaczego tak się działo ;)
Czyli muszę wyrzucić z programu tego default'a.

komentarz 27 września 2015 przez adrian17 Ekspert (344,860 p.)

Z tego, co się uczyłem, nie istnieje taka składnia. 

Jak najbardziej jest, to tak zwany fallthrough. To właśnie jedna z sytuacji w których switch może być potencjalnie lepszy od łańcuszka ifów.

Podobne pytania

0 głosów
0 odpowiedzi 360 wizyt
pytanie zadane 24 marca 2018 w C i C++ przez Mateusz Tocha Bywalec (2,560 p.)
0 głosów
1 odpowiedź 180 wizyt
+1 głos
1 odpowiedź 532 wizyt
pytanie zadane 15 listopada 2017 w C i C++ przez Kamil Kukła Nowicjusz (160 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...