deninho Δημοσ. 17 Μαΐου 2016 Δημοσ. 17 Μαΐου 2016 βλέποντας τον αρχικό κώδικα, και χωρίς να ξέρω αν το έχεις διορθώσει... Αν ο χρήστης δώσει a=0, τι θα βγάλει το πρόγραμμα;
savra19 Δημοσ. 17 Μαΐου 2016 Μέλος Δημοσ. 17 Μαΐου 2016 Ανεβασε λιγο κωδικα να σε βοηθησουμε #include<iostream> #include<math.h> using namespace std; int main(){ int a,b,g,y,i,j; double tbl[3][2]; double d,x,x1,x2,rsq; cout<<"dwse arithmo exiswsewn: "; cin>> y; cout<<"dwse mou to a gia tis exiswseis:"; cin>> a; cout<<"dwse mou to b gia tis exiswseis:"; cin>>b; cout<<"dwse mou to g gia tis exiswseis:"; cin>>g; for(i=0; i<3; i++){ for (j=0; j<2; j++){ d=b*b-4*a*g; rsq=sqrt(d); if(d>0){ x1 = (-b+sqrt(d)) / (2*a); x2 = (-b-sqrt(d)) / (2*a); cout<<"x1= " << x1 << "x2= " << x2<< endl; } else if(d==0){ x1 = -b / (2*a); cout<<"x1= " << x1 << "x2= " << x2<< endl; } else { cout<<"adinato apotelesma " << endl; } } } }
mentoras28 Δημοσ. 17 Μαΐου 2016 Δημοσ. 17 Μαΐου 2016 Για το μαθηματικο θεμα εχει δικιο ο deninho οτι αν δωσεις 0 για το a εχεις προβλημα. Βλεπεις συνεχεια τις ιδιες τιμες γιατι εχεις βαλει το διαβασμα των τιμων εκτος της επαναληψης . Οποτε οι τιμες για τα a,b,c δεν αλλαζει ποτε και αρα υπολογισμοι ειναι ιδιοι. Ο πινακας που οριζεις δεν εχει νοημα. Αν εγω θελω να λυσω 4,10, 100 εξισωσεις τι θα κανεις( Την λυση θα την βρεις αν διαβασεις εδω http://www.cplusplus.com/doc/tutorial/dynamic/ Απλα σε πρωτη φαση κοιτα να κανεις σωστα την επαναληψη και μετα βλεπεις που θα αποθηκευεις τις τιμες. 1
savra19 Δημοσ. 19 Μαΐου 2016 Μέλος Δημοσ. 19 Μαΐου 2016 Δεν ξέρω με ποιον τρόπο πρέπει να χρησιμοποιήσω την δυναμική μνήμη στο πρόβλημα μου.Άλλαξα και την επανάληψη και τώρα μου βγάζει για κάθε εξίσωση το δικό της αποτέλεσμα σωστά,βέβαια με το α=0 έχω πάλι πρόβλημα και δεν το βρήκα.Απλά έτσι όπως τρέχει τώρα δεν έχω το επιθυμητό αποτέλεσμα αφού εγώ θέλω για κάθε εξίσωση να δίνω πρώτα τις τιμές ,μετα να τις αποθηκεύει σε έναν πίνακα 2σδιάστατο και στο τέλος να μου εμφανίζει όλα τα αποτελέσματα μαζί. #include<iostream> #include<math.h> using namespace std; int main(){ int a,b,g,y,i,j,n; double d,x1,x2,rsq; cout<<"dwse arithmo exiswsewn: "; cin>> y; for(n=0; n<y; n++){ cout<<"dwse mou to a gia tis exiswseis:"; cin>> a; cout<<"dwse mou to b gia tis exiswseis:"; cin>>b; cout<<"dwse mou to g gia tis exiswseis:"; cin>>g; d=b*b-4*a*g; rsq=sqrt(d); if(d>0){ x1 = (-b+sqrt(d)) / (2*a); x2 = (-b-sqrt(d)) / (2*a); cout<<"x1= " << x1 << "x2= " << x2<< endl; } else if(d==0){ x1 = -b / (2*a); cout<<"x1= " << x1 << "x2= " << x2<< endl; } else { cout<<"adinato apotelesma " << endl; } } }
mentoras28 Δημοσ. 19 Μαΐου 2016 Δημοσ. 19 Μαΐου 2016 Σκεψου οτι εχεις μια εξισωση με α=0 ( ας πουμε την 2χ+4=0) αυτην πως θα την ελυνες? Αποτυπωσε τωρα την σκεψη σου στο κωδικα. Αυτο που πρεπει να κανεις ειναι πριν τον υπολογισμο της διακρινουσας να δεις να αν χρειαζεται οντως να υπολογισεις διακρινουσα. Θελεις να μου πεις οτι διαβασες αυτο που σου εστειλα και δεν καταλαβες ποια ειναι η χρησιμοτητα της δυναμικης δεσμευσης μνημης στο προβλημα σου. Το πρωτο παραδειγμα δηλαδη που εχει εκει δεν μοιαζει με την περιπτωση σου?
M2000 Δημοσ. 19 Μαΐου 2016 Δημοσ. 19 Μαΐου 2016 με a = 0 έχουμε διαιέρεση με το μηδέν...(αδύντατη). δες (-b+sqrt(d)) / (2*a);
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα