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.
- Przy trójmianie kwadratowym zawsze miejsca zerowe wychodzą 0
- 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.