Tak jak w temacie prośba o pomoc w napisaniu programu liczącego deltę i pokazującego liczbę rozwiązań równania kwadratowego,jednak ma on nie wyświetlać jakie to są rozwiązania(ma wyświetlać jedynie ich liczbę).Nie może zawierać instrukcji warunkowych tj.if,else itp.
No próbowałem,jednak nie wychodzi mi to bez instrukcji warunkowych,to chyba musi być jakoś opisane na operatorach logicznych (delta>0||delta>=0||delta<0),ale utknąłem jak możesz to napisz bede wdzieczny : )
Wdzięczność okaż zleceniobiorcy, bo taką "prośbę" powinieneś umieścić w dziale oferty pracy. Wdzięcznością powinno być konkretne wynagrodzenie pieniężne. Nie piszemy gotowców za kogoś przy zerowym wysiłku własnym. No chyba, że to płatne zlecenia.
...
Ale ja potrzebuję trzech warunków z tego co słyszałem to operator ? : warunek1:warunek2;
ale ok poszukam poszperam,może coś jeszcze podpowiecie?jakieś tipy inne?
Endrju cóż ma oznaczać twoja emotka ; d?
Poza tym mam jakieś krzaki w kodzie bo przy kompilacji są błędy,ja pierdziele...
rozw=(((delta>0)*2)+delta==0);
poza tym robisz błąd taki jak większość początkujących. Zapis a = b nie jest regułą, a instrukcją. Wykona się w miejscu jego postawienia i nigdzie indziej. Chodzi o twoje wyliczanie delty, które jest przed wczytaniem danych.
dodanie znaczników <code class="c"> - fp
...
Teraz z kolei ilość rozwiązań wyliczasz zanim wyliczysz deltę. Idź się porządnie poucz podstaw, bo na zgadywaniu daleko nie zajdziesz.
Tia... najpierw korzystasz float rozw=(((delta>0)*2)+delta==0);
a dopiero parę linijek dalej to liczysz delta=b*b-4*a*c;
... A jakbyś tak zmienił tę kolejność :D
Zmieniłem to może faktycznie głupi błąd,no ale co z resztą?
float delta = b*b-4*a*c;
unsigned int liczba_rozwiazan = 1 + (delta > 0) + (delta < 0);
// lub
unsigned int liczba_rozwiazan = 1 + (delta != 0);
I po problemie (przyjmując, że wliczamy w to rozwiązania znajdujące się w dziedzinie liczb zespolonych).
Dzięki za chęć pomocy,lecz po pierwsze mają to być rozwiązania w zbiorze liczb rzeczywistych,po drugie wyskakuje coś na chwile i od razu gaśnie,.
...
Problem rozwiązany : ),ostateczna wersja.Nie bede zmieniał na long itd.jak ktos bedzie chciał obliczać jakieś mega liczby to mu wywali,to jest czepialstwo,to jest zwykły amatorski program,który liczy równania tylko w zbiorze liczb rzeczywistych,jak bym chciał full professional to bym dodał jeszcze rozwiązania w zbiorze liczb zespolonych,tyle w temacie : )
Oto rozwiązanie:
#include<stdlib.h>
#include<stdio.h>
#include<math.h>
#include<conio.h>
int main(void)
{
double a;
double b;
double c;
double rozw;
printf("Program liczacy delte i pokazujacy ilosc rozwiazan rownania kwadratowego w zbiorze liczb rzeczywistych\n\n");
printf("podaj a\n");
scanf("%lf",&a);
a==0?printf("Przerywam obliczanie,gdyz a nie moze byc rowne 0\n"):printf("podaj b\n")&&scanf("%lf",&b)&&printf("podaj c\n")&&scanf("%lf",&c);
a==0?getch():printf("");
a==0?exit(EXIT_FAILURE):printf("");
double delta=b*b-4*a*c;
printf("Delta wynosi %.0lf\n",delta);
rozw=((delta>0)*2)+(delta==0);
a!=0?printf("Liczba rozwiazan:%.0lf\n",rozw):printf("");
system("pause");
return 0;
}
Rozwiązania równania kwadratowego są ZAWSZE 2, czasem jest jednak podwójne (czyli oba są takie same).
Edytowałem,teraz chyba dobrze ; )
Ja bym nie męczył użytkownika programu pytaniami o b
i c
gdy a
jest zerem.
@bogdans, a jeżeli b
jest też zerem zaś c
nie jest?
a co jesli uzytkownik poda liczbe wieksza niz moze zmiescic sie w floatcie?
http://images.wikia.com/theamazingworldofgumball/images/f/f9/Famous-characters-Troll-face-Troll-face-poker-45046.png
(musialem :()
Po pierwsze niektórzy z was się czepiają-float mogę zmienić na double,ależ takiej dokładności nie trzeba,jak dla mnie jest to szczegół,po drugie nie mogę używać instrukcji warunkowych,jedynie operatorów,lecz pokombinuje może za pomocą nich i faktycznie dodam może jakoś sytuację a=0-przerwanie dalszego obliczania.Poza tym trochę wyluzujcie ludzie,bo się za bardzo spinacie,piszę w dziale newbie nie jestem masterem ; ).
Powyżej napisany program,którego nie będę już zmieniał,poprawiłem i jest ok.Wg mnie bez sensu jest dalsza jego modyfikacja,to sa mało istotne detale.
wersja by program ochraniał przed wpisaniem za duzej liczby dla double ;) jezeli bedzie ktos chcial skorzystac to musi dopisac klasy + obsluzyc wyjatki w razie w