Rozpatrzenie przypadku czy delta równania jest większa czy mniejsza od zera

0

Witam napisałem program w języku C, majacy za zadanie rozpatrzenie przypadku czy delta rownania jest większa czy mniejsza od zera ale gdy skompiluje program nic mie się nie wyświetla. Gdyby ktoś był tak miły i powiedział mi gdzie zrobiłem błąd.
Oto rówanie: y = 2x 2 - 3x - 4

Oraz mój program:

#include <stdio.h>
#include <math.h>
	int main (){
	float a,b,c,x,d;
	a=2;
	b=-3;
	c=0;
	if(d>){
	printf("twoje rowananie ma 2 rozwiazania:%f i %f", (-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a),}
	else (d==0.0){
	printf('twoje rowananie ma jedno rozwiazanie: %f", -2b/(2*a),}
	return 0;
}

poprawienie tytułu i tagów wątku, dodanie znacznika - @furious programming

2
  1. Co to znaczy if(d>)? "Jeśl d jest większe od..."? Od czego? o_O
  2. NIGDZIE nie przypisałeś wartości swojemu d. Czego ty się niby spodziewasz? Że program sie domyśli co ma tam przypisać? Jasnowidz?
  3. else (d==0.0) takiej konstrukcji w ogóle nie ma. Moze chodziło o else if? Poza tym porównywanie floatów/doubli z 0 to bardzo zły pomysł.
  4. Nawet kolorowanie składni na forum pokazuje że nie domknąłeś ' a co więcej stringi wpisuje się w podwójnych cudzysłowach.
  5. Kłamiesz bo ten kod nie ma prawa się nawet skompilować.
0

Sory wiem, że robie głupie błędy ale dopiero sie ucze. Poprawiłem to co potrafiłem teraz lepiej ?

#include <stdio.h>
#include <math.h>
	int main (){
	float a,b,c,x,d;
	a=2;
	b=-3;
	c=0;
	d=b*b-(4*a*c);
	if(d>0){
	printf("twoje rowananie ma 2 rozwiazania:%f i %f", (-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a),}
	else if (d==0.0){
	printf("twoje rowananie ma jedno rozwiazanie: %f", -2b/(2*a),}
	return 0;
}
1

Dlaczego nie sprawdzisz, czy się kompiluje? (podpowiedź: nie)
http://melpon.org/wandbox/permlink/rFmMY2WkAYd8Zcu2

,}

Co robi ten przecinek? Gdzie zamykasz nawias otwierający listę argumentów printf?

0

@Poncio, zacznij od przeczytania pierwszych kilku stron byle jakiego kursu.
Wygląda na to że piszesz metodą Monte Carlo niestety ten algorytm nigdy nie daje precyzyjnych wyników, zawsze będzie mniej więcej.
Z powyższego wynika - programów za pomocą tego algorytmu z góry skazane na porażkę.

0

Pisze tak jak nas uczą ;p. Staram się czytać różne kursy ale cieżko idzie mi to zrozumieć dlatego staram się też próbować w praktyce.

 #include <stdio.h>
#include <math.h>
	int main (){
	float a,b,c,d;
	a=2;
	b=-3;
	c=0;
	d=b*b-(4*a*c);
	if(d>0){
	printf("twoje rowananie ma 2 rozwiazania:%f i %f", (-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)}
	else if (d==0.0){
	printf("twoje rowananie ma jedno rozwiazanie: %f", -2b/(2*a))}
	return 0;
}

Wydaje mi się, że pozamykałem teraz nawiasy i usunąłem ten przecinek. I cały czas patrze czy sie kompiluje, gdyby działało bym tu nie pisał ;p.

dodanie znacznika <code class="c"> - @furious programming

1

Gdzie zamykasz nawias od funkcji oraz od if (d>0)?'

Poprawnie sformatowany kod od Ciebie wygląda tak:

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

int main (
{
    float a,b,c,d;
    a=2;
    b=-3;
    c=0;
    d=b*b-(4*a*c);
    if(d>0){
        printf("twoje rowananie ma 2 rozwiazania:%f i %f", (-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)}
        else if (d==0.0){ // <- przy czym to 'else' jest wzięte znikąd, bo nie ma klamry zamykającej właśnie
            printf("twoje rowananie ma jedno rozwiazanie: %f", -2b/(2*a))}
            return 0;
        }
0

Taki kod powienien już działać?

0

I cały czas patrze czy sie kompiluje, gdyby działało bym tu nie pisał ;p.
Niemożliwe - ten kod nie ma prawa się kompilować.

Nie pisz od razu całego programu - widać, że jeszcze to dla Ciebie za trudne. Spróbuj pierw poprawnie wypisać coś (powinieneś zauważyć, że wyrażenia oddzielane są średnikami, których u Ciebie po printfie brakuje). Potem spróbuj wypisać różne rzeczy w zależności od warunku itd. Małymi krokami, bo teraz zrobiłeś zbyt wiele rzeczy źle.

0

Nie, to jest wciąż dokładnie ten sam kod, tyle że dodałem do niego formatowanie.
Sądziłem, że to da Ci do zrozumienia, że "coś tu jest nie tak z klamrami".

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