wiem, że z=pewnie coś banalnego, lecz mam wielkie braki w programowaniu z c. mam program, który liczy pierwiastki trójmianu i po policzeniu chcę żeby pytał czy ma liczyć pierwiastki nastepnej funkcji, lecz nie wiem jak to napisać. domyślam się, że trzeba użyć pętli etc.
Potwierdzam, trzeba użyć pętli. Najwygodniej while lub do..while.
własnie nie wiem zbytnio jak to zapisać, tzn warunki kiedy ma liczyć dalej a kiedy skończyć pracę programu. dobrze będzie zapisać to na końcu? po policzeniu pierwiastków równania?
#include <iostream>
#include <string>
using namespace std;
#define HUH 0
int main(){
PROGRAMMING_BY_THE_HARD_WAY:
string choice;
/* your program */
cin >> choice;
if((choice == "surprise")? !HUH : HUH){
cout << "Surprise, mothafucka." << endl;
goto PROGRAMMING_BY_THE_HARD_WAY;
}
}
coś mi nie chce szaleć ta pętla, błędy w kompilowaniu. mój program bez tej pętli działa dobrze, jego kod bez tej ostatniej pętli :
#include <stdio.h>
#include <math.h>
int main()
{
double a,b,c;
double delta,x1,x2;
printf("Podaj a \n");
scanf("%lf",&a);
if(a==0)
{
printf(" Wspolczynnik a nie moze byc 0 \n");
}
else {
printf("Podaj b\n");
scanf("%lf",&b);
printf("Podaj c\n");
scanf("%lf",&c);
delta=((b*b)-(4.0*a*c));
if(delta>0)
{
x1=(-b+sqrt(delta))/(2.0*a);
x2=(-b-sqrt(delta))/(2.0*a);
printf("x1=%lf, x2=%lf", x1, x2);
printf(" \n");
}
else if(delta==0){
x1=(-b/(2.0*a));
printf("x1=%lf", x1);
}
else if(delta<0)
printf("Rownanie nie ma pierwiastkow \n");
}
printf("Czy chcesz policzyc pierwiastki kolejnego trojmianu? \n");
return 0;
}
Pokaż jak dodałeś pętlę.
Radzę zapoznać się z pojęciem formatowania kodu.
Bez tego poprawne dodanie do kodu pętli, warunku lub czegokolwiek innego zawsze będzie graniczyć z cudem.
daj caly program w petle do ... while (//sprawdzenie czy zmienna w ktorej zapisywany jest przycisk == temu znakowi ktory wybrales jako zakonczenie programu)
Próbowałem czegoś takiego, niestety dalej błąd bo po prostu po policzeniu pierwiastków się wyłącza.
#include <stdio.h>
#include <math.h>
int main()
{
printf("Program liczy pierwiastki funkcji kwadratowej \n");
int a,x;
do
{
double a,b,c;
double delta,x1,x2;
printf("Podaj a \n");
scanf("%lf",&a);
if(a==0)
{
printf(" Wspolczynnik a nie moze byc 0 \n");
}
else {
printf("Podaj b\n");
scanf("%lf",&b);
printf("Podaj c\n");
scanf("%lf",&c);
delta=((b*b)-(4.0*a*c));
if(delta>0)
{
x1=(-b+sqrt(delta))/(2.0*a);
x2=(-b-sqrt(delta))/(2.0*a);
printf("x1=%lf, x2=%lf", x1, x2);
printf(" \n");
}
else if(delta==0){
x1=(-b/(2.0*a));
printf("x1=%lf", x1);
}
else if(delta<0)
printf("Rownanie nie ma pierwiastkow \n");
}
printf("Jesli chcesz zakonczyc prace programu jako wspolczynnik a wpisz 'x' \n");
}
while(a=x);
return 0;
}
Do porównywania używamy operatora ==. Po drugie tworzysz dwie zmienne o tej samej nazwie (niechcąco), a jeśli chcesz sprawdzić czy użytkownik podał 'x' to użyj typu char. Może coś w ten deseń:
#include <stdio.h>
#include <math.h>
int main()
{
printf("Program liczy pierwiastki funkcji kwadratowej \n");
char answer;
do
{
double a,b,c,delta,x1,x2;
printf("Podaj a\n"); scanf("%lf",&a);
if (a==0)
printf("Wspolczynnik a nie moze byc 0 \n");
else
{
printf("Podaj b\n"); scanf("%lf",&b);
printf("Podaj c\n"); scanf("%lf",&c);
delta=((b*b)-(4.0*a*c));
if (delta>0)
{
x1=(-b+sqrt(delta))/(2.0*a);
x2=(-b-sqrt(delta))/(2.0*a);
printf("x1=%f, x2=%f\n", x1, x2);
}
else if (delta==0)
{
x1=(-b/(2.0*a));
printf("x1=%f\n", x1);
}
else
printf("Rownanie nie ma pierwiastkow \n");
}
printf("Podaj \'x\' jesli program ma sie zakonczyc: "); getchar();
scanf("%c", &answer);
}while (answer != 'x');
return 0;
}