Προς το περιεχόμενο

προβλημα σε γλωσσα C


koala56

Προτεινόμενες αναρτήσεις

Δημοσ.

δεν μπορω να καταλαβω τι πρεπει να κανω???

Σχεδιάστε ένα πρόγραμμα που θα διαβάζει πραγματικούς αριθμούς από το πληκτρολόγιο και θα υπολογίζει

1. Τον μέγιστο από αυτούς,

2. Τον ελάχιστο από αυτούς,

3. Το άθροισμά τους, και

4. Το μέσο όρο τους.

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

περίπου πώς να αρχίσω

αν μπορείτε να βοηθήσετε

ευχαριστώ!!

Δημοσ.
δεν μπορω να καταλαβω τι πρεπει να κανω???

Σχεδιάστε ένα πρόγραμμα που θα διαβάζει πραγματικούς αριθμούς από το πληκτρολόγιο και θα υπολογίζει

1. Τον μέγιστο από αυτούς,

2. Τον ελάχιστο από αυτούς,

3. Το άθροισμά τους, και

4. Το μέσο όρο τους.

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

περίπου πώς να αρχίσω

αν μπορείτε να βοηθήσετε

ευχαριστώ!!

 

Είναι απλό, πρέπει να διαβάσεις! :-)

Δημοσ.

Μια πρώτη προσέγγιση από το κρεβάτι μου,

 

Έχεις αρχικά σιγουρα

max=0

min=0

Avrg=0

Sum=0

Συν ότι βγει παρακάτω extra

 

 

Το προγραμματακι σου θα ζητάει από τον user αρχικά το πόσους αριθμούς θα δεχθεί .

 

Printf scanf

 

Πλέον σε μια μεταβλητή ,έστω Plithos έχεις το πόσες φορές θελουμε να τρέξει .

 

Έπειτα με μια δομή επανάληψης ( επιλέγεις οποία νομίζεις ποιο κοντά στην σκέψη σου ) κάνεις απλά τα παρακάτω!

 

Ζητάς & Διαβάζεις τον αριθμό που σου δίνει ο user

 

Ελλατωνεις το Plithos προφανώς ,

Athrizeis sto sum

Συγκρίνεις με τα min max κάνοντας αλλαγές αν χρειαστεί

 

Μεχρις ότου το plithos να πάρει τιμή κατάλληλη

 

Στο τέλος το avrg είναι απλά μαθηματικά έχεις ότι θα θες σε μεταβλητές.

 

Στο sum έχεις άθροισμα στο min max τα ελάχιστα μέγιστα

 

Εμφανίζεις και τέλος

 

 

Ο τύπος κάθε μεταβλητης είναι εύκολο , όσο για τα8 ψηφία ψάξου λίγο ας πούμε κανε print έναν float όπου αντί για %f βάλε %.2f ή %2.6f δοκίμασε και σε αλλους τύπους (πχ int )να δεις αν γίνει και τι θα γίνει.

 

Η δομή επανάληψης που θα διαλέξεις μπορεί να φέρει μικροαλλαγές στην σειρά που προανέφερα , αν έπισες την λογική και τον τρόπο σκέψης δεν νομίζω να εχεις κανένα προβληαματακι!

 

Ότι θες μπορούμε να το συζητήσουμε

Ελπίζω να σου άνοιξα λίγο τα μάτια και να ψάξεις την άκρη με διάβασμα.

 

 

Σε δεύτερο επίπεδο Αν θέλεις κάνεις ελέγχους τιμών (πλαίσιο αμυντικού προγραμματισμού) αρχικά πρώτα καλύτερα προσπάθησε να καταλάβεις το βασικό κορμό της άσκησης και την ανάπτυξη της

Αποστολή από iPhone με το Insomnia.app

Δημοσ.

Δεν θα ξεκινήσει με όλα 0 αλλά οι πρώτες τιμές που θα διαβαστούν θα είναι απαραίτιτα μιν, μαξ κτλπ. Απλά επιδή μπορεί να μείνει το 0 ως μιν για παράδειγμα. Επίσης εχω την αίστηση ότι λέγεται βρόγχος επανάληψης και όχι δομή επανάληψης...

Δημοσ.

Χαίρετε.

 

Είπα να μην ανοίξω νέο θέμα γιατί είναι στα πλαίσια μια άσκησης και αυτή.Ειλικρινά δεν ξέρω γιατί δε δουλεύει αυτό που έγραψα.

 

Υπολογίζω μια μαθηματική σειρά και σε κάποιο σημείο γράφω τον τύπο της,στη συνάρτηση που έχω ορίσει:

double pi_calc(int x)

{

int i;

double product;

product=1.0;

for(i=2;i<=x;i+=2)

product*=(i*i)/((i-1)*(i+1));

return(product);

}

 

Μου επιστρέφει συνέχεια 1.0 ενώ αν αντικαταστήσω το (i*i) με pow(i,2) επιστρέφει την αναμενόμενη τιμή.

 

Έχει κανείς ιδέα γιατί το κάνει αυτό;Ευχαριστώ για το χρόνο σας.

Δημοσ.
Χαίρετε.

 

Είπα να μην ανοίξω νέο θέμα γιατί είναι στα πλαίσια μια άσκησης και αυτή.Ειλικρινά δεν ξέρω γιατί δε δουλεύει αυτό που έγραψα.

 

Υπολογίζω μια μαθηματική σειρά και σε κάποιο σημείο γράφω τον τύπο της,στη συνάρτηση που έχω ορίσει:

double pi_calc(int x)

{

int i;

double product;

product=1.0;

for(i=2;i<=x;i+=2)

product*=(i*i)/((i-1)*(i+1));

return(product);

}

 

Μου επιστρέφει συνέχεια 1.0 ενώ αν αντικαταστήσω το (i*i) με pow(i,2) επιστρέφει την αναμενόμενη τιμή.

 

Έχει κανείς ιδέα γιατί το κάνει αυτό;Ευχαριστώ για το χρόνο σας.

 

>
........
product*=[color="Red"](double)[/color](i*i)/((i-1)*(i+1));
...............

Δημοσ.

Πράγματι,παράλειψις.Αυτό το type casting...Απλό αλλά λόγω απειρίας...Ευχαριστώ θερμά!Καλό Πάσχα με υγεία.

Δημοσ.

Αν κάποιος μπορεί να βοηθήσει, παρακαλώ πολύ...

 

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

 

Με ποιον τρόπο μπορώ να το κάνω να ζητά συνέχεια τον αριθμό και με το μηδέν να σταματά χωρίς να γίνονται οι λειτουργίες τουλάχιστον μία φορά;

 

Ευχαριστώ.

Δημοσ.

ο κώδικας μέχρι τώρα που είναι?

πως ζητάς τον αριθμό

πως αποφασίζεις ποια συνάρτηση θα εκτελέσει το πρόγραμμα σου

με βάση τον αριθμό.

 

στείλε τον κώδικα να σου κάνω τις διορθώσεις.

Δημοσ.

Άυτός με την εύρεση των πρώτων αριθμών είναι κάτι που θα με βοηθήσει και θα βρω και την άκρη στ άλλα μόνος μου ( για να μάθω )΄.

 

main()

{

int ar,i,a,found=0;

 

 

printf("Enter a number:");

scanf("%d",&ar);

if(ar!=0)

{

for(i=2;i<ar;i++)

if(ar%i==0)

{

a=ar/i;

found=1;

}

if(found)

printf("Den einai prwtos.Brethike diairetis:%d\n",a);

else

printf("Einai prwtos!\n");

}

else

printf("You pressed ZERO!Bye Bye!\n");

 

 

system("PAUSE");

}

 

Απλά θέλω να το τρέχει επαναληπτικά μέχρι να πατήσω 0.Θέλω όμως και στην πρώτη επανάληψη να βγεις εκτός με μηδέν,οπότε do while κτλ δεν έπαιξε.

 

Ευχαριστώ πολύ για τη βοήθεια σου,είναι χρήσιμη για μένα.:)

Δημοσ.

δες τον κώδικα έχει αναλυτικά σχόλια

 

 

>
#include <stdio.h>

int main(){//πάντα int main() συνήθισε το τώρα που είναι αρχή ακόμα
int ar=1,i=0,a=0,found=0;//είναι καλό να αρχικοποιείς τις τιμές των μεταβλητών σου

while (ar!=0){//όσο το ar δεν είναι ίσο με 0 κάνε... στο ar έδωσα αρχική τιμή=1 για να εκτελεστεί ο βρόγχος τουλάχιστον 1 φορά
   found=0;//οι μεταβλητές που επηρεάζουν το πρόβλημα πρέπει να αρχικοποιοούνται σε κάθε κύκλο του βρόγχου
   printf("Enter a number:");
   scanf("%d",&ar);
   getchar();//πάντα μετά απο scanf για να μαζεύεις τα "σκουπίδια"
   if(ar!=0){//χρήση της στοίχισης με εσοχής κάνει πιο ευανάγνωστο τον κώδικα και εντοπίζεις πιο ευκολα τυχόν λάθη
       for(i=2;i<ar;i++)
           if(ar%i==0){
               a=ar/i;
               found=1;
           }
       if(found)
           printf("Den einai prwtos.Brethike diairetis:%d\n",a);
       else
           printf("Einai prwtos!\n");
   }else
       printf("You pressed ZERO!\n");

}
//system("PAUSE");
getchar();//για pause καλύτερα να κάνεις την χρήση της getchar()
return 0;//πάντα στο τέλος της main βάζε ένα return
}

Δημοσ.

Χρήσιμες οι παρατηρήσεις σου.Η στοίχιση μου ήταν όπως πρέπει αλλά έτσί όπως το δημοσίευσα,χάνεται.

 

Θα λάβω υπόψιν μου τα λοιπά ,μαζί με ό,τι έχω μαζέψει.Ελπίζω να μη σε κούρασα.Σ'ευχαριστώ πολύ.

Δημοσ.
Χρήσιμες οι παρατηρήσεις σου.Η στοίχιση μου ήταν όπως πρέπει αλλά έτσί όπως το δημοσίευσα,χάνεται.

 

Θα λάβω υπόψιν μου τα λοιπά ,μαζί με ό,τι έχω μαζέψει.Ελπίζω να μη σε κούρασα.Σ'ευχαριστώ πολύ.

 

τον κώδικα σου όταν τον στέλνεις εδώ να τον βάζεις μέσα σε code tags

χρησιμοποίησε το σύμβολο # από την μπάρα εργαλείων πάνω από εκεί που γράφεις

τα μηνύματα σου.

Δημοσ.

Έχω έναν πολύ μεγάλο αριθμό και θέλω να κάνω κάποιες πράξεις μεταξύ των ψηφίων του.Πως θα καταφέρω να τ'απομονώσω;Μόνο διαιρώντας κάτι έκανα,αλλά για μικρούς αριθμούς.Ευχαριστώ.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...