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

Ξέρει κανείς απο C....(HELP)


reniaenoia

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

Δημοσ.

Γεια σας παιδιά,

Χρειάζομαι επειγόντος τη βοήθεια σας. Εχω την παρακάτω εργασία και πρέπει να την παραδώσω μέχρι την ερχόμενη τρίτη. Είμαι τελείως άσχετη με την C και για να πω την αλήθεια δεν καταλαβαίνω τι δουλειά έχει η C στο μαθηματικό που είμαι.Περιμένω τις συμβουλές σας και την βοήθεια σας please!!!(και το κακό είναι ότι θα έχω και άλλες)

Σας ευχαριστώ πολύ!!!

 

 

 

Πρώτη Εργασία

Άσκηση 1η: Να γραφεί πρόγραμμα που θα διαβάζει τις καρτεσιανές συντεταγμένες ενός σημείου στο επίπεδο στη μορφή (x, y) και θα υπολογίζει και θα τυπώνει τις πολικές συντεταγμένες του σημείου στη μορφή (r, θ) με την γωνία θ στο διάστημα [0, 2π). Το πρόγραμμα δεν θα υπολογίζει τις πολικές συντεταγμένες για τα σημεία που βρίσκονται στον άξονα y, δηλαδή όταν x=0.

 

Άσκηση 2η: Να γραφεί πρόγραμμα που θα κωδικοποιεί την ακολουθία χαρακτήρων (plaintext string) “Attack at Dawn” σύμφωνα με την συνάρτηση f(x) = 65 + (5x+4) mod 26 όπου x είναι o ASCII κωδικός κάθε χαρακτήρα της ακολουθίας και θα τυπώνει την κωδικοποιημένη ακολουθία (ciphered string). Δεν θα κωδικοποιούνται οι λευκοί χαρακτήρες και δεν θα εμφανίζονται στην έξοδο.

 

Άσκηση 3η: Να γραφεί πρόγραμμα που θα δέχεται ως είσοδο δύο μη προσημασμένους ακέραιους αριθμούς x και n, θα περιστρέφει τα bits του αριθμού x κατά n θέσεις αριστερά και θα τυπώνει τον ακέραιο x και τον αριθμό που προκύπτει από την εν λόγω περιστροφή των bits σε δεκαεξαδική μορφή. Κατά την αριστερή περιστροφή των bits ενός ακέραιου αριθμού κατά n θέσεις, ο αριθμός μετατοπίζεται αριστερά κατά n θέσεις και στα λιγότερα σημαντικά bits εισέρχονται τα περισσότερα σημαντικά bits που εξέρχονται κατά την μετατόπιση όπως φαίνεται στο παρακάτω σχήμα.

 

Άσκηση 4η: Ένας πρακτικός αλγόριθμος για την εύρεση της αναπαράστασης συμπληρώματος ως προς 2 ενός ακέραιου αριθμού είναι η εύρεση αρχικά του πρώτου μη μηδενικού bit ξεκινώντας την αναζήτηση από το ελάχιστο σημαντικό bit, και στη συνέχεια η αντιστροφή των bits του αριθμού που βρίσκονται μετά από το πρώτο αυτό μη μηδενικό bit.

Στο αριθμητικό σύστημα αναπαράστασης n-bit ακέραιων αριθμών υπο μορφή συμπληρώματος ως προς 2, οι θετικοί αριθμοί (από 0 έως 2n-1) αναπαριστάνονται ως μη προσημασμένοι ακέραιοι και οι αρνητικοί αριθμοί αναπαριστάνονται με το συμπλήρωμα ως προς 2 του αντίστοιχου θετικού αριθμού.

Δημοσ.

Δεν είναι και παρα πολύ δύσκολες αλλά θέλουν την ώρα τους που δυστηχώς για εσένα τώρα δεν έχω

  • Moderators
Δημοσ.

Κατ'αρχή καλώς όρισες στο forum.

 

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

 

Ελπίζω να μην υπονοείς ότι η βοήθειά μας θα είναι να τις λύσουμε εμείς. :-)

Δημοσ.

Δεν είναι πολύ δύσκολες?Εμένα πάντως μου φαλινονται βουνό!Παρακάτω έχω ξεκινήσει να λύνω την άσκηση 1 αλλά μου βγάζει σφάλματα.Μήπως μπορεί κάποιος να με ξεμπλοκάρει?

 

 

#include<stdio.h>

main()

{

printf("dose arithmo x:");

scanf("%d", x );

printf("dose arithmo y:");

scanf("%d", y );

 

if (y/=0)

{

poliko_r = sqrt((x**2)+(y**2)) ;

poliko_theta = atan(x/y);

}

printf("polikes syntetagmenes= %d,%d" r,theta );

}

Δημοσ.

scanf("%d", x );

scanf( "%d", &x );

Ομοίως για το y

 

if (y/=0)

if( y!=0)

 

sqrt((x**2)

sqrt(x*x);

 

Αυτά για αρχή. Προσπάθησε να κοιτάξεις και κανένα εγχειρίδιο για C!

Καλή συνέχεια!

Δημοσ.
Είμαι τελείως άσχετη με την C και για να πω την αλήθεια δεν καταλαβαίνω τι δουλειά έχει η C στο μαθηματικό που είμαι.

 

Η βάση των υπολογιστών είναι τα μαθηματικά από θεωρητικής απόψεως.

Δημοσ.
Δεν είναι πολύ δύσκολες?Εμένα πάντως μου φαλινονται βουνό!Παρακάτω έχω ξεκινήσει να λύνω την άσκηση 1 αλλά μου βγάζει σφάλματα.Μήπως μπορεί κάποιος να με ξεμπλοκάρει?

 

 

#include<stdio.h>

main()

{

printf("dose arithmo x:");

scanf("%d", x );

printf("dose arithmo y:");

scanf("%d", y );

 

if (y/=0)

{

poliko_r = sqrt((x**2)+(y**2)) ;

poliko_theta = atan(x/y);

}

printf("polikes syntetagmenes= %d,%d" r,theta );

}

 

Συνάδελφε έχουμε πρόβλημα

1. Δεν δηλώνεις πουθενά μεταβλητές.

2. Δεν πρέπει να χρησιμοποιήσεις integer αλλά float (τι νόημα έχει να επιστρέφεις μια τιμή σε ακτίνια με ακέραιο; ). Άρα πρώτη δουλεία μέσα στη main να ορίσεις τις μεταβλητές σου ως αριθμούς κινητής υποδιαστολής (float x,y,r,theta; )

Μην ξεχάσεις να αλλάξεις τις scanf (scanf("%f", &x))

3. Δεν είναι atan(x/y) αλλά atan(y/x) και συγκρίνεις το x αν είναι μηδέν. Επειδή το χ είναι float, δεν είναι σωστό το if(χ != 0) (δεν υπάρχει 0 στους float αλλά ένας πολύ μικρός αριθμός). Γιαυτό το λόγο θα ορίσουμε μια μικρή τιμή (επάνω από την main : #define ZERO_APROX 0.0001f) και θα κάνουμε την σύγκριση if (fabs(x)>ZERO_APROX) δηλαδή θεωρούμε το "χ=0" όταν βρίσκεται στο διάστημα (-0.0001,0.0001). Όπως βλέπεις το ZERO_APROX δεν είναι πολύ μικρό για έναν επιπλέον λόγο. Με ένα πολύ μικρό χ και σχετικά μεγάλο y, θα έχουμε overflow στην διαίρεση y/x.

(*όλα αυτά θα μπορούσαμε να τα αποφύγουμε, αν χρησιμοποιούσαμε την atan2, αλλά πιστεύω ότι είναι εκτος σκοπού της άσκησης)

4. Το r = sqrt(x*x+y*y) όπως αναφέρθηκε παραπάνω και το #include <math.h> (όπως επίσης αναφέρθηκε) και τις printf για float (printf("polikes syntetagmenes= %f,%f" r,theta ); ή printf("polikes syntetagmenes= %.3f,%.3f" r,theta ); για να γράφει τα αποτελέσματα με ακρίβεια τριων δεκαδικών)

Φτιάχτο λοιπόν και πάμε παρακάτω.

Δημοσ.

Σας ευχαριστώ πολύ όλους για τις συμβουλές και τις υποδείξεις σας.¨Ολα εντάξει με την πρώτη άσκηση!¨Οσον αφορά την δεύτερη άσκηση τώρα, δεν έχω καταλάβει τι σχέση έχει ο κώδικας ASCII με την δεδομένη συνάρτηση!¨Εχω κατεβάσει το κώδικα και ξέρω τι περιέχει αλλά δεν έχω καταλάβει πως συνδυάζονται όλα αυτά!Για άλλη μία φορά σας ευχαριστώ πάρα πολύ !!!

  • Super Moderators
Δημοσ.

Τα "παράπονα" περί διαγραφέντων μηνυμάτων μόνο με pm!

 

 

Για τα ζητήματα των διαφόρων ασκήσεων που "έσκασαν" πρόσφατα, το ζήτημα συζητάται. Μέχρι να αποσαφηνιστεί η "γραμμή του forum", το thread κλειδώνεται.

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

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

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