Uloha v C++

Programovacie jazyky, rady, poradňa...
jorg22
Medium Professional
Medium Professional
Používateľov profilový obrázok
Príspevky: 1087
Registrovaný: 12 aug 2006, 20:39
Kontaktovať používateľa:

Uloha v C++

Príspevok od používateľa jorg22 »

Pls potrebujem pomoc s domacou ulohou.Nejdú mi vnorit do seba dva switche.Nevypise ziadnu chybu ale ide mi vybrat si moznost len z prveho switchu z ostatnych mi vzdy vypise defaultnu hodnotu.

Kód: Vybrať všetko

#include <stdio.h>
#include <conio.h>

void main()
 {  
	char H,N,I,l,B,L,S,u,U,A,co,menu,coo,cooo,coooo,cooooo;
	printf("Pre vyber stlac:\n1.Z-zadanie\n2.R-vzorove riesenie\n3.V-vypocet\n4.S-skusanie\n5.P-potrebne vzorce.\n");
	scanf("%c",&menu);
	switch(menu)
	{
	case'Z':
	printf("\nUrcte vlastnu indukcnost cievky, ak prechadza vinutim prud:\na)0.5 A\nb)0.2 A\nCievka je navinuta na feromagnetickom jadre s prierezom 3 cm˛\nz elektrotechnickych plechov, ktore maju specificke straty 1.3 W.kg-1. Cievka ma 400 zavitou, dlzka strednej silovej ciary je 20cm.");
	break;
	case'R':
	printf("Vypocet pre prud 0.5A:\nH=NI/l=400*0.5/2*10-1=1 000A\nZ magnetizacnej krivky urcime magneticku indukciu\nB=1.4T\nPomerna 			permeabilita\nur=B/u0H=1.4/4*p*10-7*103=1 114\nVlastna indukcnost\nL=N2A=N2u0urS/l=4002*4*p*10-7 1 114*3*10-4/2*10-1=0.336");
	break;
	case'V':
	printf("Co chces vypocitat(H,N,I,l,B,L,S,permeabilita vo vakuu=u,relativna permeabilita=U,A)?:\n");
	scanf("%c\n",&co);
	printf("%c",co);
	switch(co)
		{
		case'72':
			printf("N=");
			scanf("%5.2f",&N);
			printf("I=");
			scanf("%5.2f",&I);
			printf("l=");
			scanf("%5.2f",&l);
			H=(N*I)/l;
			printf("H=(N*I)/l=%5.2f\n",H);
		break;
		case'78':
			printf("H=");
			scanf("%5.2f",&H);
			printf("l=");
			scanf("%5.2f",&l);
			printf("I=");
			scanf("%5.2f",&I);
			N=(H*l)/I;
			printf("N=(H*l)/I=%5.2f\n",N);
		break;
		case'73':
			printf("H=");
			scanf("%5.2f",&H);
			printf("l=");
			scanf("%5.2f",&l);
			printf("N=");
			scanf("%5.2f",&N);
			I=(H*l)/N;
			printf("I=(H*l)/N=%5.2f\n",I);	
		break;
		case'108':
			printf("N=");
			scanf("%5.2f",&N);
			printf("I=");
			scanf("%5.2f",&I);
			printf("H=");
			scanf("%5.2f",&H);
			l=(N*I)/H;
			printf("l=(N*I)/H=%5.2f\n",l);
		break;
		case'66':
			printf("B=");
			scanf("%5.2f",&B);
			printf("u=");
			scanf("%5.2f",&u);
			printf("H=");
			scanf("%5.2f",&H);
			U=B/(u*H);
			printf("U=B/(u*H)=%5.2f\n",U);
		break;
		case'76':
			printf("Akym vzorcol chces vypocitat L?\na)L=N2*A\nb)L=(N2u*U)*S/l\n");
			scanf("%d",&coo);
			switch(coo)
			{
			case'97':
			 printf("N=");
			 scanf("%5.2f",&N);
			 printf("A=");
			 scanf("%5.2f",&A);
			 L=N*N*A;
			 printf("L=N2*A=%5.2f\n",L);
			break;
			case'98':
			 printf("N=");
			 scanf("%5.2f",&N);
			 printf("u=");
			 scanf("%5.2f",&u);
			 printf("U=");
			 scanf("%5.2f",&U);
			 printf("S=");
			 scanf("%5.2f",&S);
			 printf("l=");
			 scanf("%5.2f",&l);
			 L=N*N*u*U*(S/l);
			 printf("L=N2*u*U*(S/l)=%5.2f\n",L);
			break;
			default:
			 printf("Zlý výber");
			}
		break;
		case'83':
			printf("L=");
			scanf("%5.2f",&L);
			printf("l=");
			scanf("%5.2f",&l);
			printf("N=");
			scanf("%5.2f",&N);
			printf("u=");
			scanf("%5.2f",&u);
			printf("U=");
			scanf("%5.2f",&U);
			S=(L*l)/(N*N*u*U);
			printf("S=(L*l)/(N2*u*U)=%5.2f\n",S);
		break;
		case'117':
			printf("Akym vzorcom chces vypocitat u?\na).u=B/(H*U)\nb)u=L/(N2*U*(S/l))\n");
			scanf("%d",&cooo);
			switch(cooo)
			{
            case'97':
			 printf("B=");
			 scanf("%5.2f",&B);
			 printf("H=");
			 scanf("%5.2f",&H);
			 printf("U=");
			 scanf("%5.2f",&U);
			 u=B/(H*U);
			 printf("u=B/(H*U)=%5.2f\n",u);	
			break;
			case'98':
			 printf("N=");
			 scanf("%5.2f",&N);
			 printf("U=");
			 scanf("%5.2f",&U);
			 printf("S=");
			 scanf("%5.2f",&S);
			 printf("l=");
			 scanf("%5.2f",&l);
			 printf("L=");
			 scanf("%5.2f",&L);
			 u=L/(N*N*U*(S/l));
			 printf("u=L/(N2*U*(S/l))=%5.2f\n",u); 
			break;
			default:
			 printf("Zly vyber");
			}
		break;
		case'U':
			printf("Akym vzorcom chces vypocitat U?\na)U=B/(u*H)\nb)U=L/(N2*u*(S/l))\n");
			scanf("%d",&coooo);
			switch(coooo)
			{
            case'97':
			 printf("B=");
			 scanf("%5.2f",&B);
			 printf("u=");
			 scanf("%5.2f",&u);
			 printf("H=");
			 scanf("%5.2f",&H);
			 U=B/(u*H);
			 printf("U=B/(u*H)=%5.2f\n",U);	
			break;
			case'98':
			 printf("N=");
			 scanf("%5.2f",&N);
			 printf("u=");
			 scanf("%5.2f",&u);
			 printf("S=");
			 scanf("%5.2f",&S);
			 printf("l=");
			 scanf("%5.2f",&l);
			 printf("L=");
			 scanf("%5.2f",&L);
			 U=L/(N*N*u*(S/l));
			 printf("U=L/(N2*u*(S/l))=%5.2f\n",U); 
			break;
			default:
			 printf("Zly vyber");
			}
		break;
		case'65':
			printf("Akym vzorcom chces vypocitat A?\na)A=L/N2\nb)A=u*U*(S/l)\n");
			scanf("%d",&cooooo);
			switch(cooooo)
			{
            case'97':
			 printf("L=");
			 scanf("%5.2f",&L);
			 printf("N=");
			 scanf("%5.2f",&N);
			 A=L/N*N;
			 printf("A=L/N*N=%5.2f\n",A);	
			break;
			case'98':
			 printf("u=");
			 scanf("%5.2f",&u);
			 printf("U=");
			 scanf("%5.2f",&U);
			 printf("S=");
			 scanf("%5.2f",&S);
			 printf("l=");
			 scanf("%5.2f",&l);
			 A=u*U*(S/l);
			 printf("A=u*U*(S/l)=%5.2f\n",A); 
			break;
			default:
			 printf("Zly vyber");
			}
		break;
		default:
			printf("Toto nieje spravny vyber.");
		}
	break;
	case'83':
	printf("LOL nefim co mam robit:)");
	break;
	case'80':
	printf("H=NI/l\nur=B/u0H\nL=N2u0urS/l");	
	break;		
	default:
	printf("%c nieje spravny vyber.",menu);
	}
	getche();
}
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Prečo máš v prvom scanf %c a v ostatných %d (%d očakáva číslo a nie znak).
jorg22
Medium Professional
Medium Professional
Používateľov profilový obrázok
Príspevky: 1087
Registrovaný: 12 aug 2006, 20:39
Kontaktovať používateľa:

Príspevok od používateľa jorg22 »

jj to som len dacoskusal mne ide zatial iba o tie dva switche.Vyberiem si "V" cize vypocet.Opyta sa ma: "Co chces vypocitat(H,N,I,l,B,L,S,permeabilita vo vakuu=u,relativna permeabilita=U,A)?:" ja zadam "H" a vyhodimi defaultnu hodnotu ze "%c nieje spravny vyber.".To cislo 72 v "case'72':" je kod z ascii tabulky pre znak "H".Skusal som aj "case'H':" ale to iste.
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Zmeň to char H,N... na int H,N...
'78' nie je to isté ako 'H' (to má byť 78 bez apostrofov).
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Ešte upresním: ak použiješ scanf na načítanie jedného znaku, tak v buffri ostane ten enter, a pri ďalšom znaku sa ten enter načíta. Ak to nechceš riešiť, namiesto 'H', 'N'... použi čísla 1, 2 (teda %d).
PS: O funkciách si nepočul (napr. to kde je "Akym vzorcol chces vypocitat" daj do nejakaj funkcie).
jorg22
Medium Professional
Medium Professional
Používateľov profilový obrázok
Príspevky: 1087
Registrovaný: 12 aug 2006, 20:39
Kontaktovať používateľa:

Príspevok od používateľa jorg22 »

Kua aj tak mi to nejde. :cry: .Co s tym je?
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Tu je príklad:

Kód: Vybrať všetko

#include <stdio.h>

void volba_tri()
{
	int	menu;

	printf("1 - aaa\n2 - bbb\n\n");
	printf("???: ");
	scanf("%i", &menu);

	switch (menu) {
	case 1:
		printf("Zvolil si prvu polozku\n");
		break;
	case 2:
		printf("Zvolil si druhu polozku\n");
		break;
	default:
		printf("Neznama volba %i\n", menu);
		break;
	}
}

int main(void)
{
	int	menu;

	printf("1 - Prva polozka\n2 - Druha polozka\n3 - Tretia (submenu)\n\n");
	printf("Co chces: ");
	scanf("%i", &menu);
	switch (menu) {
	case 1:
		printf("Zvolil si prvu polozku\n");
		break;
	case 2:
		printf("Zvolil si druhu polozku\n");
		break;
	case 3:
		volba_tri();
		break;
	default:
		printf("Neznama volba %i\n", menu);
		break;
	}
	return 0;
}
jorg22
Medium Professional
Medium Professional
Používateľov profilový obrázok
Príspevky: 1087
Registrovaný: 12 aug 2006, 20:39
Kontaktovať používateľa:

Príspevok od používateľa jorg22 »

Ale ja potrebujem aby si vybral pismena bo cisla to mi ide ale pismena nie.
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

jorg22 napísal:Ale ja potrebujem aby si vybral pismena bo cisla to mi ide ale pismena nie.
A máš dôvod nepoužiť getche()? (teda niečo ako menu=getche(); )
jorg22
Medium Professional
Medium Professional
Používateľov profilový obrázok
Príspevky: 1087
Registrovaný: 12 aug 2006, 20:39
Kontaktovať používateľa:

Príspevok od používateľa jorg22 »

Velllllmi ti dakujem :P .Konecne funguje.Ma nenapadlo skusit getche :oops: .A v c++ som este len zaciatocnik :oops: thx
gwixt
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3912
Registrovaný: 24 sep 2005, 16:50
Bydlisko: Trash-Can

Príspevok od používateľa gwixt »

jorg22 napísal:A v c++ som este len zaciatocnik :oops: thx
este ze ten kod je ciste C :wink:
jorg22
Medium Professional
Medium Professional
Používateľov profilový obrázok
Príspevky: 1087
Registrovaný: 12 aug 2006, 20:39
Kontaktovať používateľa:

Príspevok od používateľa jorg22 »

:lol: Tak to som nevedel bo kazdy mi hovori daco ine.Raz ze programujeme v C++ a raz zeto je C.No thx uz mam v tom jasno
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

jorg22 napísal::lol: Tak to som nevedel bo kazdy mi hovori daco ine.Raz ze programujeme v C++ a raz zeto je C.No thx uz mam v tom jasno
C++ vie to čo vie aj C. Navyše má aj podporu pre objektové programovanie (okrem iných vecí). Takže ten program je aj C, ale aj C++ (aj keď nevyužíva nič z toho, čo ponúka C++ navyše oproti C). :D
Napísať odpoveď