w jednym programie kilka innych

0

Czy da się w C zrobić tak, żeby w jednym programie było kilka innych? Na zasadzie, że po uruchomieniu programu wyswietla sie komunikaty:

Nacisnij 1, aby wybrac program nr 1.
Nacisnij 2, aby wybrac program nr 2
Nacisnij 3, aby wybrac program nr 3
Nacisnij 0, aby zakonczyc dzialanie programu.
itd.

I takich możliwości załóżmy 5 w zależności ile bym chciał zamieścić programów.

Jak napisać coś takiego?

Bardzo proszę o pomoc!

0

Najprościej będzie instrukcją swith, zakładając naturalnie że tych "kilka" programów będzie w twoim kodzie. No chyba że chodzi o programy zewnętrzne, wtedy musiał byś szukać jak uruchomić je z konsoli.

0

Te kilka programów ma być po prostu w jednym kodzie. Czyli jak by wyglądała taka instrukcja?

Najpierw printf z programami
Potem switch i do każdego z case'ów mam po prostu wprowadzić kod poszczególnych programów, tak? I to wszystko? a czy int main() ma się pojawiać przy każdym kodzie nowego programu, czy wystarczy na samym początku?

0

@malizator - coś kombinujesz strasznie.

Opcja 1) robisz wspomniany switch, w case 1 wykonujesz to co miałby robić program 1, w case 1 wykonujesz to co miałby robić program 2, itd.

Opcja 2) na 99.9% prawdopodobnie niepotrzebna komplikacja - tworzysz i kompilujesz te 3 inne programy, wrzucasz .exe do folderu z głównym programem i w głównym programie je uruchamiasz.

0

W takim razie Switch. Main starczy jeden, zaś co do końca to najprościej będzie w main-ie coś takiego:

int wyjsc=0;
while (wyjsc==0)
{
 //tutaj wyświetlanie opcji, swithh i casey a jak wybierze opuszczenie programu to  zmieniasz wartość zmiennej wyjsc np na 1
}
 
0

Wprowadziłem sobie kawałek tego mojego wymysłu. Niestety nie działa mi program w case i nie wiem jak zrobić coś takiego, żeby printfy z wyborem programu wyświetlały się wszystkie na raz.

#include <stdio.h>

int wybor;

int main ()
{
printf("Witaj! \n\n\n");
printf("Nacisnij dowolny klawisz, aby rozpoczac...\n");
getchar();

printf("1. Aby wybrac program sprawdzajacy czy dany rok jest przestepny - wcisnij 1.\n");
scanf("%d", &wybor);
printf("2. Aby wybrac program obliczajacy zarobki - wcisnij 2. \n");
scanf("%d", &wybor);

switch (wybor) {
	case 1:	{
	
		char line[100];
		int rok;
		int przes;

		int main ()	
			{
	printf("Nacisnij enter i wprowadz rok, aby sprawdzic czy jest przestepny: \n");
	fgets(line, sizeof(line), stdin);
	sscanf(line, "%d", &rok);

		while(scanf("%d", &rok) != 1) {
			printf("Nie wprowadziles cyfr ani liczb! \n");
  		while
			((rok = getchar()) != 'c' && rok != EOF); 
		}

	if (rok % 4 == 0 && rok % 100 != 0 || rok % 400 == 0)
		printf("Wprowadzony rok jest przestepny.\n");
	else 
		printf("Wprowadzony rok nie jest przestepny.\n");

return (0);
			}
		}
	}
return (0);
}
0

To proste i logiczne najpierw dajesz printf-y a potem jednego scanf-a czyli coś takiego

 
printf("1. Aby wybrac program sprawdzajacy czy dany rok jest przestepny - wcisnij 1.\n");
printf("2. Aby wybrac program obliczajacy zarobki - wcisnij 2. \n");
// i tak póki co funkcji starczy
scanf("%d", &wybor);
// i tu switch/case
0

Ahaaa! Faktycznie, jeden scanf.

Ale co z tym, że nie działa mi case. Wybieram 1 i program kończy działanie :/

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