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

Ερωτήσεις για C


capoelo

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

...

Επίσης-"Να θυμάστε ότι εάν μία μεταβλητή χρησιμοποιείται σαν όρισμα σε μία συνάρτηση,αυτή δεν έχει καμία σχέση με την τυπική παράμετρο που δέχεται την τιμή της".

Τι εννοεί;

...

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

 

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

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Απαντ. 1,6k
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

#include <stdio.h>

 

#include<stdlib.h>

 

int main(void)

{

int num;

 

printf("Give a number: \n");

scanf("%d:",&num);

 

if (num>0) printf("The number is positive \n");

if (num<0) printf("The number is negative \n");

if (num==0) printf("The number is 0 you idiot \n");

 

system("pause");

 

return ;

 

printf("This is never printed!!!");

}

 

Αυτό το πρόγραμμα μου βγάζει ως λάθος το ότι "main function must return a value".Η return όμως μπορεί να χρησιμοποιηθεί απ'ότι ξέρω χωρίς τιμή για να υποχρεώσει την συνάρτηση να τερματίσει πριν το δεξιό άγκιστρο.Δεν ισχύει για την main;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

>
#include <stdio.h>
int main(void)
{
int num;

printf("Give a number: \n");
scanf("%d:",&num);

if (num>0) 
  printf("The number is positive \n");
if (num<0) 
  printf("The number is negative \n");
if(num==0)
  printf("The number is 0 you idiot \n");


return 0;

}

 

Έχει ορισθει η main να επιστρέφει μια ακέραια τιμή. Oποτε και

σου δινει warning αν την παραλείψεις.

 

Μια ερωτηση... ο ':' τι δουλεια έχει μεσα στο format string της scanf? :P

Την μπερδεψες με την printf???

 

Δες το και έτσι (αν θες να αποφυγεις την 3η συγκριση)

 

>
#include <stdio.h>
int main(void)
{
int num;

printf("Give a number: \n");
scanf("%d:",&num);

if (num>0) 
  printf("The number is positive \n");

else if (num<0) 
  printf("The number is negative \n");

else
  printf("The number is 0 you idiot \n");

return 0;

}

 

p.s1 Τον ':' δεν τον χρειαζεται η scanf.

 

p.s2 Έβγαλα στην system γιατι παιζω απο Linux.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ευχαριστώ πολύ Star_Light για την απάντηση σου.

 

Υ.Γ.Το : στην scanf είναι απλά λάθος βιασύνης.

 

 

Anytime my friend :P

 

>
#include <stdio.h>

int main(void)
{
int num,num1;

printf("Dwse enan arithmo: \n");
scanf("%d",&num);

printf("Dwse akoma enan arithmo: \n");
scanf("%d",&num1);

printf("To athroisma einai:%d \n",num+num1);
printf("H diafora einai:%d \n",num-num1);
printf("To ginomeno einai:%d \n",num*num1);
printf("To upoloipo einai:%d \n",num%num1);

getchar();

return 0;

}

 

Το παραπάνω μπορεις να το μαζέψεις λιγο

 

>
#include <stdio.h>

int main(void)
{
int num1,num2;

printf("Δώστε δύο αριθμούς χωρισμένους με κενά: \n");
scanf("%d%d",&num1 , &num2);

printf("Άθροισμα :%d \n Διαφορά :%d \n Γινόμενο : %d ",(num1+num2),(num1-num2),(num1*num2));
printf("Διαίρεση :%.2f \n", (float)num1/num2);

return 0;

}

 

Στο τελευταιο θες υπολοιπο ή διαιρεση??? Αν θες υπολοιπο δεν χρειαζεται το casting που εχω βαλει :P

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Anytime my friend :P

 

>
...

 

Το παραπάνω μπορεις να το μαζέψεις λιγο

 

>
...

 

Στο τελευταιο θες υπολοιπο ή διαιρεση??? Αν θες υπολοιπο δεν χρειαζεται το casting που εχω βαλει :P

 

Και τα 2 αυτά παραδείγματα κρασάρουν για num2 = 0

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

 

Ναι ρε συ. Το σκεφτηκα αλλα λεω αστο τωρα , αφου ουτως η αλλως δεν ζητησε

να του σουλουπωσει κανεις τον κωδικα... μονο γιατι δεν δουλευει η getchar που του το απαντησες εσυ ουτως η αλλως.

Τελοςπαντων εγω θα σκεφτομουν και αλλη λυση ομως...

βαζεις ενα μηνυματακι μεσα στην printf και τελος... "Οχι 0 σαν δευτερη τιμη!!!!!!"

και αμα το πατησει.... αααα φιλαρακι εγω σε προειδοποιησα! Ριχνεις στο χρηστη το μπαλακι :D

εκτος και αν στην πεσει κανας χακερόνης aahahha .

 

By the way επ' ευκαιρια αξιζει κανεις να αφιερωσει πανω απο μια αναγνωση

στο κεφαλαιο με τα implicit conversions? Με κουρασανε πραγματικα. Πολυ βαρετη παραγραφος. :/

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

...

Τελοςπαντων εγω θα σκεφτομουν και αλλη λυση ομως...

βαζεις ενα μηνυματακι μεσα στην printf και τελος... "Οχι 0 σαν δευτερη τιμη!!!!!!"

και αμα το πατησει.... αααα φιλαρακι εγω σε προειδοποιησα! Ριχνεις στο χρηστη το μπαλακι :D

εκτος και αν στην πεσει κανας χακερόνης aahahha .

Αυτό δεν αποτελεί λύση. Αντίθετα είναι δείγμα βαρεμάρας, άγνοιας ή/και και μη σοβαρότητας (πόσο δύσκολο είναι να μπει ένα έξτρα if για την περίπτωση μηδενικού παρανομαστή).

 

By the way επ' ευκαιρια αξιζει κανεις να αφιερωσει πανω απο μια αναγνωση

στο κεφαλαιο με τα implicit conversions? Με κουρασανε πραγματικα. Πολυ βαρετη παραγραφος. :/

Εξαρτάται, στον καθένα είναι διαφορετικά. Έχε το πάντως στο μυαλό σου ώστε να ξέρεις που να βρεις τις σχετικές πληροφορίες όταν σου χρειαστεί ;)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αυτό δεν αποτελεί λύση. Αντίθετα είναι δείγμα βαρεμάρας, άγνοιας ή/και και μη σοβαρότητας (πόσο δύσκολο είναι να μπει ένα έξτρα if για την περίπτωση μηδενικού παρανομαστή).

 

 

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

 

Δεν ξέρω εάν γίνεται στο συγκεκριμένο task. Δεν έχω κάτσει να δω τον κώδικα.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αυτό δεν αποτελεί λύση. Αντίθετα είναι δείγμα βαρεμάρας, άγνοιας ή/και και μη σοβαρότητας (πόσο δύσκολο είναι να μπει ένα έξτρα if για την περίπτωση μηδενικού παρανομαστή).

 

 

Διαβασες πουθενα οτι ειναι δυσκολο ?

Δεν υπαρχει καμια αγνοια και καμια μη σοβαροτητα οπως γραφεις

σου εξηγησα και πιο πανω πως δεν ζητηθηκε τιποτα απο τον φιλο μας.

 

Που ειναι η άγνοια? Οτι δεν ξερω πως οταν μπαινει 0 στον παρανομαστη παει απειρο το αποτελεσμα?

για εξηγησε μου.Αυτο το ξερουν μεχρι και οι μαθητες της Α λυκειου. Το ριξα στην πλακα

αλλα μαλλον δεν το καταλαβες και μου λες για αγνοιες κτλπ.

 

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

 

Δεν ξέρω εάν γίνεται στο συγκεκριμένο task. Δεν έχω κάτσει να δω τον κώδικα.

 

Ναι να του δώσω κωδικα 50 γραμμες να εχει ελεγχους μεσα

μηπως δωσει και χαρακτηρα ο χρηστης αντι για αριθμο και κρασαρει

η scanf.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Διαβασες πουθενα οτι ειναι δυσκολο ?

Δεν υπαρχει καμια αγνοια και καμια μη σοβαροτητα οπως γραφεις

σου εξηγησα και πιο πανω πως δεν ζητηθηκε τιποτα απο τον φιλο μας.

 

Που ειναι η άγνοια? Οτι δεν ξερω πως οταν μπαινει 0 στον παρανομαστη παει απειρο το αποτελεσμα?

για εξηγησε μου.Αυτο το ξερουν μεχρι και οι μαθητες της Α λυκειου. Το ριξα στην πλακα

αλλα μαλλον δεν το καταλαβες και μου λες για αγνοιες κτλπ.

Μόνος σου λες ότι κάνεις πλάκα και αυτό που προτείνεις δεν είναι σοβαρή λύση!

 

Ναι να του δώσω κωδικα 50 γραμμες να εχει ελεγχους μεσα

μηπως δωσει και χαρακτηρα ο χρηστης αντι για αριθμο και κρασαρει

η scanf.

Ένα σωστά γραμμένο πρόγραμμα δε νοείται να κρασάρει από λάθος input του χρήστη imho, οπότε δεν καταλαβαίνω πού είναι η ένστασή σου!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Μόνος σου λες ότι κάνεις πλάκα και αυτό που προτείνεις δεν είναι σοβαρή λύση!

 

 

Ένα σωστά γραμμένο πρόγραμμα δε νοείται να κρασάρει από λάθος input του χρήστη imho, οπότε δεν καταλαβαίνω πού είναι η ένστασή σου!

 

Ναι ρε συ πλακα κανω. Eξαρχης το ειπα... αλλα

δεν βλεπω να αντιμετωπιζεται σαν πλακα :S

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Διαβασες πουθενα οτι ειναι δυσκολο ?

Δεν υπαρχει καμια αγνοια και καμια μη σοβαροτητα οπως γραφεις

σου εξηγησα και πιο πανω πως δεν ζητηθηκε τιποτα απο τον φιλο μας.

Ενώ τα buggy παραδείγματα κώδικα που του έγραψες είχαν ζητηθεί από τον φίλο μας;

 

Που ειναι η άγνοια? Οτι δεν ξερω πως οταν μπαινει 0 στον παρανομαστη παει απειρο το αποτελεσμα?

για εξηγησε μου.Αυτο το ξερουν μεχρι και οι μαθητες της Α λυκειου. Το ριξα στην πλακα

αλλα μαλλον δεν το καταλαβες και μου λες για αγνοιες κτλπ.

Για αυτό ακριβώς έπρεπε να υπάρχει εξαρχής στον κώδικα των παραδειγμάτων.

 

Ναι να του δώσω κωδικα 50 γραμμες να εχει ελεγχους μεσα

μηπως δωσει και χαρακτηρα ο χρηστης αντι για αριθμο και κρασαρει

η scanf.

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

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

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