Drobne usprawnienie programu ćwiczeniowego.

0

Witam.
Miałem napisać program, który wyświetla datę w zależności od podanej przez użytkownika daty(używając instrukcji switch...case...) Zadanie wykonałem jednak mam 2 pytania odnośnie jego usprawnienia oraz poprawności.
Oto "program":


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

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
	float numer;
	do
	{
	printf("Podaj numer miesiaca: ");
	scanf("%f",&numer);
	if(numer!=1&&numer!=2&&numer!=3&&numer!=4&&numer!=5&&numer!=6&&numer!=7&&numer!=8&&numer!=9&&numer!=10&&numer!=11&&numer!=12)puts("Podana zla liczbe.");
	}while(numer!=1&&numer!=2&&numer!=3&&numer!=4&&numer!=5&&numer!=6&&numer!=7&&numer!=8&&numer!=9&&numer!=10&&numer!=11&&numer!=12);
	switch((int)numer)
	{
		case 1: printf("styczen");
		break;
		case 2: printf("luty");
		break;
		case 3: printf("marzec");
		break;
		case 4: printf("kwiecien");
		break;
		case 5: printf("maj");
		break;
		case 6: printf("czerwiec");
		break;
		case 7: printf("lipiec");
		break;
		case 8: printf("sierpien");
		break;
		case 9: printf("wrzesien");
		break;
		case 10: printf("pazdziernik");
		break;
		case 11: printf("listopad");
		break;
		case 12: printf("grudzien");
		break;
	}
	return 0;
}
  1. Czy ten operator rzutowania w tym "switchu" może tak być?
    2.Czy te warunki z koniunkcją i liczbami da się jakoś sprawniej przedstawić, tak by nie zajmowały tyle miejsca?
    Z góry dziękuję.
0
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    char months[12][32 + 1] = { "styczen", "luty", "marzec", "kwiecien", "maj", "czerwiec",
                                "lipiec", "sierpien", "wrzesien", "pazdziernik", "listopad",
                                "grudzien" };
    int num = 0;

    printf("Podaj numer miesiaca: ");
    scanf_s("%d", &num);
    printf("%s \n", months[num-1]);

    system("pause"); //debug only
    return EXIT_SUCCESS;
}
2

Pytanie za sto punktów: czy na matematyce słyszałeś o nierównościach, takich jak x>0 oraz x<=12? Użyj ich.

0

@spartanPAGE nie musi tego używać, zobacz na moje rozwiązanie ;)

0

Świetny kod, mało oczopląsu nie dostałem patrząc na ten warunek xD
A teraz na poważnie:

#include <stdio.h>

int main(int argc, char *argv[])
{
    int numer;
    while (true)
    {
        printf("Podaj numer miesiaca: ");
        scanf("%d", &numer);
        if (numer > 0 && numer < 13) break;
        else printf("podano zla liczbe \n");
    }
    const char * miesiac[] = {"styczen", "luty", "marzec", "kwiecien", "maj", 
    "czerwiec", "lipiec", "sierpien", "wrzesien", "pazdziernik", "listopad", "grudzien"};
    printf(miesiac[numer-1]);
    return 0;
}

Krócej już się chyba nie da.
Skąd taki pomysł z takimi warunkami?

1 użytkowników online, w tym zalogowanych: 0, gości: 1