Problem z prostym matematycznym programem [C]

0

Mój kod jest następujący

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

main()
{
 float promien,wysokosc,bok1,bok2,bok,pole,podstawa,delta,a,b,c,f,h; //zmienne dla figur i trojmianu
 char x,y,z; // zmienne dla binarnego
 int figura,m[15][15], i, j, rows, num = 25, k; // zmienne dla trojkatu pascala i figura
 char znak,menu,menu1;
 
 
	poczatek:
	printf("-------------------------\n");
	printf(" Wybierz opcje\n");
	printf("1- Pola figur\n");
	printf("2- Trojmian kwadratowy\n");
	printf("3- Zamiana na system binarny\n");
	printf("4- Trojkat Pascala\n");
	printf("-------------------------\n");
	scanf("%c",&znak);
	
	switch(znak)
	{
	case '1': goto pola;break;
	case '2': goto trojmian;break;
	case '3': goto binarny;break;
	case '4': goto trojkat;break;
	}
	
	pola: 
		printf("-------------------------\n");
	printf(" 1 --> Okrag\n");
	printf(" 2 --> Prostokat\n");
	printf(" 3 --> Trojkat\n");
	printf(" 4 --> Kwadrat\n");
	printf("-------------------------\n");

	printf("Podaj numer figury\n");
	scanf("%d",&figura);

	switch(figura)
	{
		case 1:  printf("Podaj promien\n");
					scanf("%f",&promien);
					pole=3.142*promien*promien;
					printf("Pole okregu =%f\n", pole);
					goto menu1;
					

		case 2:  printf("Podaj bok1 i bok2\n");
					scanf("%f %f",&bok1, &bok2);
					pole=bok1 *bok2;
					printf("Pole prostokata=%f\n", pole);
					goto menu1;

		case 3:  printf("Podaj podstawe i wysokosc\n");
					scanf("%f %f",&podstawa,&wysokosc);
					pole=0.5 *podstawa*wysokosc;
					printf("Pole trojkata=%f\n", pole);
					goto menu1;

		case 4:  printf("Podaj bok\n");
					scanf("%f",&bok);
					pole=bok * bok;
					printf("Pole kwadratu=%f\n", pole);
					goto menu1;
					

		default: printf("Blad\n");
					goto menu1;

	}   /* koniec switch */
	
	trojmian:
	
                //clrscr();
                printf("\n Rozwiazywanie rownania kwadratowego \n\n");
                do
                {
                        printf(" Podaj a: \n a = ");
                        h=scanf("%lf",&a);
                        fflush(stdin);
                        }
                while(h==0);
                do
                {
                        printf(" Podaj b: \n b = ");
                        h=scanf("%lf",&b);
                        fflush(stdin);
                }
                while(h==0);
                do
                {
                        printf(" Podaj c: \n c = ");
                        h=scanf("%lf",&c);
                        fflush(stdin);
                }
                while(h==0);
                if(a==0)
                        if(b==0)
                                if(c==0)
                                        printf("\n Rownanie samoistne.");
                                else
                                        printf("\n Podane wspolczynniki tworza sprzecznosc.");
                        else
                        {
                                f=-c/b;
                                printf("\n Rownanie jest rownaniem liniowym.");
                                printf("\n Jego rozwiazaniem jest \n X = %lf ",f);
                        }
                else
                {
                        delta=b*b-4*a*c;
                        if(delta==0)
                        {
                                f=-b/(2*a);
                                printf("\n Rownanie posiada jedno rozwiazanie: \n X0 = %lf",f);
                        }
                        else
                                if(delta > 0)
                                {
                                        printf("\n Rownanie posiada dwa rozwiazania:");
                                        f=(-b-sqrt(delta))/(2*a);
                                        printf("\n X1 = %lf",f);
                                        f=(-b+sqrt(delta))/(2*a);
                                        printf("\n X2 = %lf",f);
                                }
                                else
                                {
                                        delta=fabs(delta);
                                        printf("\n Rownanie posiada dwa pierwiastki zespolone:");
                                        printf("\n X1 = %lf + j%lf",-b/(2*a),sqrt(delta)/(2*a));
                                        printf("\n X2 = %lf - j%lf",-b/(2*a),sqrt(delta)/(2*a));
                                }
                
                
				}
				goto menu1;
				
	binarny:
		printf("Wpisz liczbe calkowita\n");
  scanf("%d", &x);
 
  printf("%d Ta liczba w systemie binarnym wynosi:\n", x);
 
  for (y = 31; y >= 0; y--)
  {
    z = x >> y;
 
    if (z & 1)
      printf("1");
    else
      printf("0");
  }
 
  printf("\n");
  
  goto menu1;
  
  trojkat:
		
		 printf("\n Enter the number of rows:");
         scanf("%d", &rows);
        for (i = 0; i < rows; i++) 
               for (k = num - 2 * i; k >= 0; k--)
                      printf(" ");
               for (j = 0; j <= i; j++) {
                     if (j == 0 || i == j) {
                          m[i][j] = 1;
                      } else {
                          m[i][j] = m[i - 1][j - 1] + m[i - 1][j];
                      }
                      printf("%4d", m[i][j]);
                }
                printf("\n");
   
   	
   	goto menu1;
	

	menu1:
	printf("\nNacisnij 'z' aby zakonczyc program lub 'p' aby powrocic do menu glownego");
	menu=getch();
	fflush(stdin);
	
	switch(menu)	
	{
		case 'z': goto koniec;break;
		case 'p':
			printf("/n/n");
			goto poczatek;break;
			}
			koniec: 
				return 0;
}
	

Mam dwa problemy.

  1. Przy trójmianie kwadratowym zawsze miejsca zerowe wychodzą 0
  2. Przy trójkącie Pascala program nic nie wyświetla, tak jakby sie zwiesza.

Bardzo będę wdzięczny za pomoc, gdyż to moje początki z programowaniem.

0

Kod nadaje sie do kosza. Wywal go. Przeczytaj z kursu c++ co to są funkcje i co to są pętle. Wtedy wróć.

0

Za dużo asemblera może... :P

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