πρόβλημα με if σε C++  Το θέμα επιλύθηκε

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

Συντονιστής: konnn

πρόβλημα με if σε C++  Το θέμα επιλύθηκε

Δημοσίευσηαπό lekiman » 24 Οκτ 2013, 18:01

καλησπέρα, είμαι αρχάριος στον προγραμματισμό, και βρίσκομαι στο 1ο εξάμηνο πληροφορικής, μου έχει ανατεθεί ένα project σε c++ το οποίο θα επιλύει thn 2oβαθμια εξίσωση μπορεί να μου πει κάποιος που έχω κάνει λαθος, και πέρνω λάθος αποτελέσματα, π.χ αν δώσω 4χ+6ψ+2 θα μου εμφανίσει μιγαδικές ρίζες , που δεν ίσχύει διότι Δ>0 ,εδώ είναι ο κώδικας μου, ευχαριστώ εκ των προτέρων
Μορφοποιημένος Κώδικας: Επιλογή όλων
#include <stdio.h>
#include <math.h>
void main()
{
int a,b,c,x,x1,x2;
float D;
printf("dwste tous 3 suntelestes ths deuterovathmias exiswshs sas me th seira x,y,statheros arithmos\n");
scanf("%d%d%d",&a,&b,&c);
if (a != 0) {
D = b^2 - 4 * a * c;
if (D > 0) {
x1 = (-b + sqrt(D)) / (2*a);
x2 = (-b - sqrt(D)) / (2*a);
}
else if (D = 0) {
x = -b / (2*a);
}
else
printf("\nmigadikes rizes\n");
}
else
if (b != 0) {
x = -c / b;
printf ("\nh lush einai: %d\n",x);
}
else /*b=o*/
if (c = 0) {
printf ("\naoristh\n");
}
else {
printf ("\nadunath\n");
}
}
Τελευταία επεξεργασία από konnn και 24 Οκτ 2013, 18:15, έχει επεξεργασθεί 1 φορά/ες συνολικά
Αιτία: z_code tags
1 Γνώσεις Linux: Πρώτα βήματα ┃ Προγραμματισμού: Καθόλου ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 12.04 precise 3.5.0-39-generic 32bit (el_GR.UTF-8, Unity ubuntu), Ubuntu 3.5.0-23-generic, Windows 7
3 Pentium Dual-Core CPU E5700 3.00GHz ‖ RAM 1982 MiB ‖ ASUS INC. P5G41T-M LX2/GB/LPT
4 Intel 4 Series Chipset Integrated Graphics [8086:2e32] {i915}
5 eth0: Realtek RTL8111/8168B PCI Express Gigabit Ethernet controller [10ec:8168] (rev 03)
lekiman
babeTUX
babeTUX
 
Δημοσιεύσεις: 30
Εγγραφή: 24 Αύγ 2013, 05:28
Εκτύπωση

Re: πρόβλημα με if σε C++

Δημοσίευσηαπό konnn » 24 Οκτ 2013, 18:31

Δοκίμασε
Μορφοποιημένος Κώδικας: Επιλογή όλων
b*b
και όχι
Μορφοποιημένος Κώδικας: Επιλογή όλων
b^2
ή τη συνάρτηση
Μορφοποιημένος Κώδικας: Επιλογή όλων
pow(b,2)
.

επίσης, η σύγκριση στα if k else δεν είναι πχ c=0 αλλά c==0.To πρώτο είναι ανάθεση τιμής.
1 Linux: Μέτριος ┃ Προγραμματισμός: Μέτριος ┃ Αγγλικά: Προχωρημένος
2 Desktop : Ubuntu 16.04 64bit
a Intel Core i3 CPU 530 2.93GHz ‖ RAM 3824 MiB ‖ Intel DH55HC -
b nVidia Device [10de:1040] (rev a1)
c eth0: Intel 82578DC Gigabit Network Connection
3 Notebook : Ubuntu 16.04 64 bit
a Intel Core i3-2365M CPU @ 1.40GHz ‖ RAM 3854 MiB ‖ LENOVO 20197
b Intel 2nd Generation Core Processor Family Integrated Graphics Controller
c 5 wlan0: Intel Centrino Wireless-N 2230 ⋮ eth0: Realtek RTL8101E/RTL8102E

Αυτόματη υπογραφή.
Άβαταρ μέλους
konnn
Συντονιστής
Συντονιστής
 
Δημοσιεύσεις: 3568
Εγγραφή: 12 Ιούλ 2010, 17:54
Τοποθεσία: Καλαμάτα
Launchpad: konnn
Εκτύπωση

Re: πρόβλημα με if σε C++

Δημοσίευσηαπό evolgen » 24 Οκτ 2013, 18:35

Μεταφέρθηκε στην κατάλληλη ενότητα

Το να μειώνεις ένα έργο ελεύθερου λογισμικού, επειδή θεωρείς το δικό σου καλύτερο,
είναι απαράδεκτη συμπεριφορά και δε συμβαδίζει με τις αρχές του ελεύθερου λογισμικού.

Γνώσεις Linux: Μέτριο++ ┃ Προγραμματισμός: Perl, R, Python, SQL, C, Common Lisp, BashΑγγλικά: Άριστα

1. Ubuntu 14.04 trusty
2. Intel Core i7-3520M CPU @ 2.90GHz ‖ RAM 7892 MiB
3. Intel 3rd Gen Core processor Graphics Controller [8086:0166] {i915}
4. eth0: Broadcom NetXtreme BCM57765 Gigabit Ethernet PCIe [14e4:16b4] (rev 10) ⋮ eth1: Broadcom BCM4331 802.11a/b/g/n [14e4:4331] (rev 02)
Άβαταρ μέλους
evolgen
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1031
Εγγραφή: 28 Ιούλ 2010, 14:22
Τοποθεσία: UK
IRC: bioevolgenec
Εκτύπωση

Re: πρόβλημα με if σε C++

Δημοσίευσηαπό lekiman » 24 Οκτ 2013, 18:59

πάλι βγάζει λάθος απότελεσματα, κατα τη γνώμη μου πιστεύω πως κάποια if έχω κλείσει λάθος αλλά δεν μπορώ να καταλάβω πια
1 Γνώσεις Linux: Πρώτα βήματα ┃ Προγραμματισμού: Καθόλου ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 12.04 precise 3.5.0-39-generic 32bit (el_GR.UTF-8, Unity ubuntu), Ubuntu 3.5.0-23-generic, Windows 7
3 Pentium Dual-Core CPU E5700 3.00GHz ‖ RAM 1982 MiB ‖ ASUS INC. P5G41T-M LX2/GB/LPT
4 Intel 4 Series Chipset Integrated Graphics [8086:2e32] {i915}
5 eth0: Realtek RTL8111/8168B PCI Express Gigabit Ethernet controller [10ec:8168] (rev 03)
lekiman
babeTUX
babeTUX
 
Δημοσιεύσεις: 30
Εγγραφή: 24 Αύγ 2013, 05:28
Εκτύπωση

Re: πρόβλημα με if σε C++

Δημοσίευσηαπό lekiman » 24 Οκτ 2013, 19:32

βασικά τα κατάφερα , το λαθος μου ήταν πως ειχα ξεχάσει να βάλω 2 printf μετα απο τις εκχωρήσεις των x1,x2 γι αυτο έβγαζε ότι να νε αυτοσ είναι ο σωστος κώδικας
Μορφοποιημένος Κώδικας: Επιλογή όλων
#include <stdio.h>
#include <math.h>
void main()
{
int a,b,c;
float D,x,x1,x2;
printf("dwste tous 3 suntelestes ths deuterovathmias exiswshs sas me th seira x,y,statheros arithmos\n");
scanf("%d%d%d",&a,&b,&c);
if (a != 0) {
D = (b*b) - (4 * a * c);
if (D > 0) {
x1 = (-b + sqrt(D)) / (2*a);
x2 = (-b - sqrt(D)) / (2*a);
printf ("%f\n",x1);
printf ("%f\n",x2);
}
else if (D = 0) {
x = -b / (2*a);
printf("%d",&x);
}
else
printf("\nmigadikes rizes\n");
}
else
if (b != 0) {
x = -c / b;
printf ("\nh lush einai: %d\n",x);
}
else /*b=o*/
if (c == 0) {
printf ("\naoristh\n");
}
else {
printf ("\nadunath\n");
}
}
Τελευταία επεξεργασία από eliasps και 24 Οκτ 2013, 19:47, έχει επεξεργασθεί 1 φορά/ες συνολικά
Αιτία: Aντικατάσταση του code με z_code
1 Γνώσεις Linux: Πρώτα βήματα ┃ Προγραμματισμού: Καθόλου ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 12.04 precise 3.5.0-39-generic 32bit (el_GR.UTF-8, Unity ubuntu), Ubuntu 3.5.0-23-generic, Windows 7
3 Pentium Dual-Core CPU E5700 3.00GHz ‖ RAM 1982 MiB ‖ ASUS INC. P5G41T-M LX2/GB/LPT
4 Intel 4 Series Chipset Integrated Graphics [8086:2e32] {i915}
5 eth0: Realtek RTL8111/8168B PCI Express Gigabit Ethernet controller [10ec:8168] (rev 03)
lekiman
babeTUX
babeTUX
 
Δημοσιεύσεις: 30
Εγγραφή: 24 Αύγ 2013, 05:28
Εκτύπωση

Re: πρόβλημα με if σε C++

Δημοσίευσηαπό eliasps » 24 Οκτ 2013, 19:39

lekiman έγραψε:αν δώσω 4χ+6ψ+2 θα μου εμφανίσει μιγαδικές ρίζες

lekiman έγραψε:printf("dwste tous 3 suntelestes ths deuterovathmias exiswshs sas me th seira x,y,statheros arithmos\n");

Αρχικά, κάθε δευτεροβάθμια εξίσωση είναι της μορφής:

Δεν έχεις δύο μεταβλητές μέσα (x,y), μόνο το x.
Oπότε σου συνιστώ να αλλάξεις την πρόταση στο printf και παρακάτω να βάλεις μία συνθήκη αν το για a εισαχθεί το 0 να βγάζει ένα μήνυμα που να λέει πως αν το a=0 τότε δεν υπάρχει δευτεροβάθμια εξίσωση και να ξαναδιαβάζει το a.

Γενικά, γιατί έχεις μπλέξει να εξετάζεις τις τιμές των a,b,c; Δεν χρειάζεται να λύσεις τη γραμμική εξίσωση που προκύπτει αν a=0.
Ο μόνος έλεγχος που χρειάζεται να γίνει είναι για το a που πρέπει να είναι διάφορος του 0, για το λόγο που σου έγραψα παραπάνω.
Υπάρχουν παράμετροι στα ζητούμενα της άσκησης που σε αναγκάζουν να κάνεις κάτι τέτοιο;
Άβαταρ μέλους
eliasps
antiwinTUX
antiwinTUX
 
Δημοσιεύσεις: 4017
Εγγραφή: 16 Δεκ 2011, 22:25
Τοποθεσία: Αθήνα, Αττική
Launchpad: eliasps
IRC: eliasps
Εκτύπωση

Re: πρόβλημα με if σε C++

Δημοσίευσηαπό lekiman » 24 Οκτ 2013, 19:45

το project ελεγε να το προγραμμα να επιλυει τη δευτεροβαθμια εξισωση και αν δ>0 να εμφανιζει τις δυο ριζες, αν δ=ο τη μοναδικη ριζα , και αν δ<ο ενα μυνημα που να λεει πως δεν υπραχουν ρίζες στο R , η τελευταία μου απόπειρα με βάση τις προηγούμενες αποτυχίες πιστεύω πως λειτουργει, δοκιμασα μερικα νουμερα με χαρτι και μολυβι και μετά στον Η/Υ και πήρα τα ιδια αποτελέσματα
Μορφοποιημένος Κώδικας: Επιλογή όλων
#include <stdio.h>
#include <math.h>
void main()
{
int a,b,c;
float D,x,x1,x2;
printf("dwste ta a,b,c\n");
scanf("%d%d%d",&a,&b,&c);
if (a != 0) {
D = (b*b) - (4 * a * c);
if (D > 0) {
x1 = (-b + sqrt(D)) / (2*a);
x2 = (-b - sqrt(D)) / (2*a);
printf ("%f\n",x1);
printf ("%f\n",x2);
}
else if (D = 0) {
x = -b / (2*a);
printf("%d",&x);
}
else
printf("\nmigadikes rizes\n");
}
else
if (b != 0) {
x = -c / b;
printf ("\nh lush einai: %d\n",x);
}
else /*b=o*/
if (c == 0) {
printf ("\naoristh\n");
}
else {
printf ("\nadunath\n");
}
}
Τελευταία επεξεργασία από eliasps και 24 Οκτ 2013, 19:47, έχει επεξεργασθεί 1 φορά/ες συνολικά
Αιτία: Aντικατάσταση του code με z_code
1 Γνώσεις Linux: Πρώτα βήματα ┃ Προγραμματισμού: Καθόλου ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 12.04 precise 3.5.0-39-generic 32bit (el_GR.UTF-8, Unity ubuntu), Ubuntu 3.5.0-23-generic, Windows 7
3 Pentium Dual-Core CPU E5700 3.00GHz ‖ RAM 1982 MiB ‖ ASUS INC. P5G41T-M LX2/GB/LPT
4 Intel 4 Series Chipset Integrated Graphics [8086:2e32] {i915}
5 eth0: Realtek RTL8111/8168B PCI Express Gigabit Ethernet controller [10ec:8168] (rev 03)
lekiman
babeTUX
babeTUX
 
Δημοσιεύσεις: 30
Εγγραφή: 24 Αύγ 2013, 05:28
Εκτύπωση

Re: πρόβλημα με if σε C++

Δημοσίευσηαπό konnn » 24 Οκτ 2013, 20:51

lekiman έγραψε:βασικά τα κατάφερα , το λαθος μου ήταν πως ειχα ξεχάσει να βάλω 2 printf μετα απο τις εκχωρήσεις των x1,x2 γι αυτο έβγαζε ότι να νε αυτοσ είναι ο σωστος κώδικας


όχι, δεν είναι αυτό το λάθος σου.το λάθος είναι όπως σου το εξήγησα . άσχετα τις printf .
1 Linux: Μέτριος ┃ Προγραμματισμός: Μέτριος ┃ Αγγλικά: Προχωρημένος
2 Desktop : Ubuntu 16.04 64bit
a Intel Core i3 CPU 530 2.93GHz ‖ RAM 3824 MiB ‖ Intel DH55HC -
b nVidia Device [10de:1040] (rev a1)
c eth0: Intel 82578DC Gigabit Network Connection
3 Notebook : Ubuntu 16.04 64 bit
a Intel Core i3-2365M CPU @ 1.40GHz ‖ RAM 3854 MiB ‖ LENOVO 20197
b Intel 2nd Generation Core Processor Family Integrated Graphics Controller
c 5 wlan0: Intel Centrino Wireless-N 2230 ⋮ eth0: Realtek RTL8101E/RTL8102E

Αυτόματη υπογραφή.
Άβαταρ μέλους
konnn
Συντονιστής
Συντονιστής
 
Δημοσιεύσεις: 3568
Εγγραφή: 12 Ιούλ 2010, 17:54
Τοποθεσία: Καλαμάτα
Launchpad: konnn
Εκτύπωση


  • ΣΧΕΤΙΚΑ ΘΕΜΑΤΑ
    ΑΠΑΝΤΗΣΕΙΣ
    ΠΡΟΒΟΛΕΣ
    ΣΥΓΓΡΑΦΕΑΣ

Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι

cron