Το e-steki είναι μια από τις μεγαλύτερες ελληνικές διαδικτυακές κοινότητες με 66,083 εγγεγραμμένα μέλη και 2,387,821 μηνύματα σε 74,635 θέματα. Αυτή τη στιγμή μαζί με εσάς απολαμβάνουν το e-steki άλλα

Καλώς ήρθατε στο e-steki!

Εγγραφή Βοήθεια

Η γλώσσα προγραμματισμού C

teo (Θοδωρής)

Δραστήριο Μέλος

Το avatar του χρήστη teo
Ο Θοδωρής αυτή τη στιγμή δεν είναι συνδεδεμένος Επαγγέλεται Φοιτητής/τρια . Έχει γράψει 426 μηνύματα.

O teo έγραψε στις 23:42, 13-12-07:

#1
Η ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C
  • H C δημιουργήθηκε το 1972 στα Bell Labs από τον Dennis Ritchie καθώς, μαζί με τον Ken Thompson, σχεδίαζαν το λειτουργικό σύστημα UNIX. Στην ουσία, η C προήλθε από την γλώσσα B που είχε επινοήσει ο Thompson.
  • Αν και οι περισσότερες γλώσσες στοχεύουν στο να είναι χρήσιμες, συχνά επινοούνται και για άλλους λόγους. Για παράδειγμα, η Pascal σχεδιάσθηκε κυρίως για εκπαιδευτικούς σκοπούς(διδασκαλία αρχών προγραμματισμού) ενώ η BASIC σχεδιάσθηκε ως μια φιλική γλώσσα που μαθαίνεται εύκολα ακόμη και αν δεν υπάρχει εξοικείωση με τους Η/Υ.
  • Σε αντίθεση με τα παραπάνω, η C σχεδιάσθηκε για να αποτελέσει ένα χρήσιμο εργαλείο για προγραμματιστές. Η ραγδαία εξάπλωσή της και η καθιέρωσή της ως μιας από τις πιο σημαντικές γλώσσες προγραμματισμού οφείλεται στους εξής λόγους:
1.Περιλαμβάνει χαρακτηριστικά που η υπολογιστική επιστήμη θεωρεί ότι είναι επιθυμητά (π.χ η C επιτρέπει, με φυσικό τρόπο, στους χρήστες να χρησιμοποιούν αναλυτικό-εκ των άνω προς τα κάτω-ή/και δομημένο προγραμματισμό καθώς και αρθρωτό σχεδιασμό λογισμικού. Το αποτέλεσμα είναι ένα πιο αξιόπιστο και κατανοητό πρόγραμμα.)
2.Η C είναι μια αποτελεσματική γλώσσα που επωφελείται από τις δυνατότητες των σύγχρονων Η/Υ (τα C προγράμματα έχουν την τάση να είναι πιο συμπαγή και να εκτελούνται πιο γρήγορα).

3.Η C είναι μια μεταφέρσιμη(portable) γλώσσα (o C κώδικας που έχει γραφεί σε κάποιο σύστημα μπορεί να χρησιμοποιηθεί αυτούσιος και σε άλλα συστήματα)

4.Η C είναι ένα πανίσχυρο και ευέλικτο προγραμματιστικό εργαλείο (π.χ το 94%, περίπου, του λειτουργικού συστήματος UNIX είναι γραμμένο σε C συμπεριλαμβανομένων και μεταγλωττιστών και διερμηνευτών για άλλες γλώσσες όπως, η FORTRAN, η APL, η PASCAL, η LISP, η LOGO και η BASIC).

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

6.H C είναι μια φιλική δομημένη γλώσσα που ενθαρρύνει τις καλές προγραμματιστικές συνήθειες



Προγραμματιστικές Πρακτικές
1)Αναλυτικός Προγραμματισμός(top-down programming)

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

2)Δομημένος Προγραμματισμός(structured programming)
Προγραμματισμός που παράγει προγράμματα με σαφή ροή και διαφανή σχεδιασμό. Συνήθως είναι ιεραρχικής δομής ή έχει και κάποιο βαθμό διαίρεσης σε υπομονάδες.
3)Αρθρωτός Προγραμματισμός(modular programming)
Αναλύουμε το πρόγραμμα σε πολλές, ανεξάρτητα μεταγλωττιζόμενες, υπομονάδες (modules). Η κάθε υπομονάδα εξάγει συγκεκριμένα στοιχεία (π.χ σταθερές,μεταβλητές,συναρτήσεις,διαδικασίες) που μπορούν να χρησιμοποιηθούν από τις άλλες υπομονάδες. Οι υπομονάδες κάνουν διαυγέις και ομαλές τις σχέσεις μεταξύ των κυριοτέρων τμημάτων ενός προγράμματος διευκολύνοντας τις ομαδικές προγραμματιστικές εργασίες.

ΣΤΑΔΙΑ ΔΗΜΙΟΥΡΓΙΑΣ ΚΑΙ ΕΚΤΕΛΕΣΗΣ ΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΕ C
  • Χρησιμοποιούμε έναν συντάκτη (editor) για να γράψουμε το πρόγραμμά μας σε ένα ʽ.cʼ αρχείο.
  • Υποβάλουμε το πρόγραμμά μας σε μεταγλώττιση χρησιμοποιώντας τον φιλικό μεταγλωττιστή (compiler) της C. Ο μεταγλωττιστής αρχικά θα ελέγξει το πρόγραμμά μας για πιθανά συντακτικά και σημασιολογικά σφάλματα. Αν δεν βρει σφάλματα, θα μεταφράσει το πρόγραμμα σε συμβολική γλώσσα και ο συμβολομεταφραστής θα δημιουργήσει ένα παράγωγο πρόγραμμα (object program) σε ʽ.οʼ αρχείο.
  • Στη συνέχεια, γίνεται η σύνδεση του παράγωγου προγράμματός μας με άλλα παράγωγα προγράμματα καθώς και με τις βιβλιοθήκες του συστήματος μέσω του συνδέτη(linker) και καταλήγουμε στη μορφή ενός εκτελέσιμου αρχείου (a.out).
  • Εκτελούμε το πρόγραμμά μας πληκτρολογώντας το όνομα του εκτελέσιμου αρχείου.
ΕΝΑ ΑΠΛΟ ΠΡΟΓΡΑΜΜΑ
Έστω το παρακάτω στο αρχείο test.c:

#include<stdio.h>
main()
{
printf(“Ena poly aplo C-programma.\n”);
}

Το πρόγραμμα είναι γνωστό και ως “πηγαίος κώδικας”(source code) ενώ το αρχείο στο οποίο αποθηκεύεται ονομάζεται “πηγαίο αρχείο” (source file).

Για να δημιουργήσουμε εκτελέσιμο αρχείο με χρήση του μεταγλωττιστή cc του UNIX:

Cc test.c

Αν δεν υπήρχαν σφάλματα στο πρόγραμμά μας τότε το αποτέλεσμα είναι να δημιουργηθεί ένα εκτελέσιμο αρχείο με όνομα a.out. Πληκτρολογώντας τώρα

a.out

Θα εμφανισθεί στην οθόνη του υπολογιστή μας το:

Ena poly aplo C-programma.
  • #include<stdio.h>
Πριν από κάθε C-πρόγραμμα εμφανίζονται οδηγίες προς τον μεταγλωττιστή μέσω του C-προεπεξεργαστή (C-preprocessor). Η παραπάνω οδηγία υποχρεώνει τον C-μεταγλώττιστή να διαβάσει και να μεταγλωττίσει το αρχείο επικεφαλίδας (header file) stdio.h που έχει σχέση με τη βιβίοθήκη Εισόδου/Εξόδου στην οποία βρίσκεται η συνάρτηση printf().
  • main()
Ένα C-πρόγραμμα αποτελείται από μια ή περισσότερες συναρτήσεις. Η βασική συνάρτηση που υπάρχει σε κάθε C-πρόγραμμα είναι η main(). Μέσα στις παρενθέσεις τοποθετούνται τα ορίσματα (arguments) τις συνάρτησης. Οι παρενθέσεις πρέπει πάντα να υπάρχουν ακόμη και αν δεν υπάρχουν ορίσματα. Ότι υπάρχει ανάμεσα στα άγκιστρα {}, αποτελεί το σώμα της συνάρτησης.
  • printf(“Ena poly aplo C-programma.\n”);
Η γραμμή αυτή αποτελεί μια δήλωση (statement) που καταλήγει (όπως άλλωστε όλες οι δηλώσεις της C) στο σύμβολο ʽ;ʼ. Η δήλωση αυτή είναι στην ουσία μια κλήση της συνάρτησης βιβλιοθήκης printf() με όρισμα τη συμβολοσειρά (δηλαδή, την ακολουθία χαρακτήρων) “Ena poly aplo C-programma.\n”. Οι συμβολοσειρές πρέπει να περικλείονται από διπλά εισαγωγικά. Ο ειδικός χαρακτήρας ʽ\nʼ ανήκει στις λεγόμενες ακολουθίες διαφυγής (escape sequences) και ονομάζεται χαρακτήρας νέας γραμμής (newline character). Το αποτέλεσμα αυτής της δήλωσης είναι να εμφανισθεί στην οθόνη το

Ena poly aplo C-programma.

Με τον δρομέα (Cursor) να τοποθετείται στην αρχή της επόμενης γραμμής.
ΑΠΛΑ ΠΡΟΓΡΑΜΜΑΤΑ ΣΕ C.

Σημείωση: Το μήνυμα αυτό γράφτηκε πάνω από 10 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

edited Τελευταία επεξεργασία από το χρήστη Γιώργος : 27-11-11 στις 17:13. Αιτία: Spoiler tag added.
2 Δεν μπορείτε να αξιολογήσετε αρνητικά το μήνυμα αυτόΔεν μπορείτε να αξιολογήσετε θετικά το μήνυμα αυτό
Παράθεση

Subject to change (Λία)

Founder

Το avatar του χρήστη Subject to change
H Λία αυτή τη στιγμή δεν είναι συνδεδεμένη. Επαγγέλεται Web developer . Έχει γράψει 9,471 μηνύματα.

H Subject to change έγραψε στις 00:02, 14-12-07:

#2
Πολύ ενδιαφέρον το άρθρο, αλλά είναι δικό σου;
Αν όχι, πρέπει να βάλεις πηγή.
Επίσης, ίσως θα ήταν καλύτερο και πιο ξεκούραστο, αντί να αναφέρεις ορισμένες ασκήσεις μαζί με τις λύσεις τους, να δίνεις πχ μια κάθε εβδομάδα και να γίνεται σαν "διαγωνισμός" για τη λύση της! Έτσι πιστεύω θα είναι πιο χρήσιμο και πιο διασκεδαστικό, ενώ τώρα δύσκολα θα διαβάσει κάποιος όλο αυτό μονομιάς.

Σημείωση: Το μήνυμα αυτό γράφτηκε πάνω από 10 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

0 Δεν μπορείτε να αξιολογήσετε αρνητικά το μήνυμα αυτόΔεν μπορείτε να αξιολογήσετε θετικά το μήνυμα αυτό
Παράθεση

teo (Θοδωρής)

Δραστήριο Μέλος

Το avatar του χρήστη teo
Ο Θοδωρής αυτή τη στιγμή δεν είναι συνδεδεμένος Επαγγέλεται Φοιτητής/τρια . Έχει γράψει 426 μηνύματα.

O teo έγραψε στις 12:09, 14-12-07:

#3
Ειναι καποιες ασκησεις που εχω κανει εγω για να μαθω καποια πραγματα στη C.

Οι πληροφοριες(η ιστορια της C) για τη C ειναι απο το TEI αθηνας του τμηματος πληροφορικης απο καποιες διαφανειες που βρισκονται στην διευθυνση ECLASS.CS.TEIATH.GR

σορι αλλα δεν εχω το χρονο για να τις παρουσιασω μια καθε εμβδομαδα. καλυτερα για μενα να τις παρουσιασω μονομιας.

Θα βαλω και αλλες ασκησεις αμα εχω το χρονο!
Αυτες οι ασκησεις θα εχουν να κανουν με αρχεια και δομες.

Σημείωση: Το μήνυμα αυτό γράφτηκε πάνω από 10 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

edited Τελευταία επεξεργασία από το χρήστη teo : 14-12-07 στις 17:03.
0 Δεν μπορείτε να αξιολογήσετε αρνητικά το μήνυμα αυτόΔεν μπορείτε να αξιολογήσετε θετικά το μήνυμα αυτό
Παράθεση

pantelis1992

Νεοφερμένος

Το avatar του χρήστη pantelis1992
Ο pantelis1992 αυτή τη στιγμή δεν είναι συνδεδεμένος Έχει γράψει 31 μηνύματα.

O pantelis1992 έγραψε στις 16:59, 27-11-11:

#4
Λοιπον παιδια μια ερωτηση για τη c.εκανα μια αναδρομικη συναρτηση (για τους αριθμους fibonachi)και θελω να βαλω εναν μετρητη οχι στη main αλλα στη συναρτηση fib για να μετρησω ποσες φορες εγινε η αναδρομικη κλιση(αναλογα με τον αριθμο που βαζουμε καθε φορα δλδ).Καμια βοηθεια??

Σημείωση: Το μήνυμα αυτό γράφτηκε πάνω από 6 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

0 Δεν μπορείτε να αξιολογήσετε αρνητικά το μήνυμα αυτόΔεν μπορείτε να αξιολογήσετε θετικά το μήνυμα αυτό
Παράθεση

Γιώργος

Επιφανές Μέλος

Το avatar του χρήστη Γιώργος
Ο Γιώργος αυτή τη στιγμή δεν είναι συνδεδεμένος Μας γράφει απο Ελβετία (Ευρώπη). Έχει γράψει 8,986 μηνύματα.

O Γιώργος Je veux aller au bout de mes fantasmes έγραψε στις 17:11, 27-11-11:

#5
Αρχική Δημοσίευση από pantelis1992
Λοιπον παιδια μια ερωτηση για τη c.εκανα μια αναδρομικη συναρτηση (για τους αριθμους fibonachi)και θελω να βαλω εναν μετρητη οχι στη main αλλα στη συναρτηση fib για να μετρησω ποσες φορες εγινε η αναδρομικη κλιση(αναλογα με τον αριθμο που βαζουμε καθε φορα δλδ).Καμια βοηθεια??
hint: Ψάξε για τον τύπο δεδομένων static.

Σημείωση: Το μήνυμα αυτό γράφτηκε πάνω από 6 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

0 Δεν μπορείτε να αξιολογήσετε αρνητικά το μήνυμα αυτόΔεν μπορείτε να αξιολογήσετε θετικά το μήνυμα αυτό
Παράθεση

pantelis1992

Νεοφερμένος

Το avatar του χρήστη pantelis1992
Ο pantelis1992 αυτή τη στιγμή δεν είναι συνδεδεμένος Έχει γράψει 31 μηνύματα.

O pantelis1992 έγραψε στις 17:18, 27-11-11:

#6
thanks θα το ψαξω αν και ακομα δεν καναμε τιποτα τετοιο ουτε στη θεωρια ουτε στο εργασηριο οποτε λογικα θα θελει αλλη λυση αλλα καλυτερα κιολας να μαθαινω!TY

Σημείωση: Το μήνυμα αυτό γράφτηκε πάνω από 6 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

0 Δεν μπορείτε να αξιολογήσετε αρνητικά το μήνυμα αυτόΔεν μπορείτε να αξιολογήσετε θετικά το μήνυμα αυτό
Παράθεση

Γιώργος

Επιφανές Μέλος

Το avatar του χρήστη Γιώργος
Ο Γιώργος αυτή τη στιγμή δεν είναι συνδεδεμένος Μας γράφει απο Ελβετία (Ευρώπη). Έχει γράψει 8,986 μηνύματα.

O Γιώργος Je veux aller au bout de mes fantasmes έγραψε στις 17:37, 27-11-11:

#7
Αρχική Δημοσίευση από pantelis1992
thanks θα το ψαξω αν και ακομα δεν καναμε τιποτα τετοιο ουτε στη θεωρια ουτε στο εργασηριο οποτε λογικα θα θελει αλλη λυση αλλα καλυτερα κιολας να μαθαινω!TY
Και που δεν το έχετε μάθει, τι σημαίνει;
Κοίτα (υποθέτοντας ότι είσαι 1ο έτος Γ' βάθμιας εκπαίδευσης) .... Είσαι στο 1ο έτος, όχι στην Δ' Λυκείου, οπότε μην μένεις στο τι σου έχουν δείξει. Ειδικά στον προγραμματισμό δεν υπάρχει "δεν μας το έχουν διδάξει".

Και απ' όσο ξέρω, αν θες να το κάνεις μέσα στη συνάρτηση, πρέπει να χρησιμοποιήσεις κάποιο τέτοιο τύπο. Αλλιώς global variables, που είναι ΚΑΚΗ προγραμματιστική τεχνική.

Σημείωση: Το μήνυμα αυτό γράφτηκε πάνω από 6 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

0 Δεν μπορείτε να αξιολογήσετε αρνητικά το μήνυμα αυτόΔεν μπορείτε να αξιολογήσετε θετικά το μήνυμα αυτό
Παράθεση

antwwwnis (Αντωωωνης)

Διακεκριμένο μέλος

Το avatar του χρήστη antwwwnis
Ο Αντωωωνης αυτή τη στιγμή δεν είναι συνδεδεμένος Επαγγέλεται Ηλεκτρολόγος μηχανικός και μας γράφει απο ΗΠΑ (Αμερική). Έχει γράψει 2,154 μηνύματα.

O antwwwnis ,αφού έκανε διατάσεις στα δάχτυλα του, έγραψε στις 18:07, 27-11-11:

#8
Αρχική Δημοσίευση από Γιώργος
Και που δεν το έχετε μάθει, τι σημαίνει;
Κοίτα (υποθέτοντας ότι είσαι 1ο έτος Γ' βάθμιας εκπαίδευσης) .... Είσαι στο 1ο έτος, όχι στην Δ' Λυκείου, οπότε μην μένεις στο τι σου έχουν δείξει. Ειδικά στον προγραμματισμό δεν υπάρχει "δεν μας το έχουν διδάξει".

Και απ' όσο ξέρω, αν θες να το κάνεις μέσα στη συνάρτηση, πρέπει να χρησιμοποιήσεις κάποιο τέτοιο τύπο. Αλλιώς global variables, που είναι ΚΑΚΗ προγραμματιστική τεχνική.
Στους ΗΜΜΥ τυχαίνει καμιά φορά να χρειάζονται να γράψουν σε γλώσσα που δεν την έχουν διδαχθεί πουθενά;

Σημείωση: Το μήνυμα αυτό γράφτηκε πάνω από 6 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

0 Δεν μπορείτε να αξιολογήσετε αρνητικά το μήνυμα αυτόΔεν μπορείτε να αξιολογήσετε θετικά το μήνυμα αυτό
Παράθεση

Γιώργος

Επιφανές Μέλος

Το avatar του χρήστη Γιώργος
Ο Γιώργος αυτή τη στιγμή δεν είναι συνδεδεμένος Μας γράφει απο Ελβετία (Ευρώπη). Έχει γράψει 8,986 μηνύματα.

O Γιώργος Je veux aller au bout de mes fantasmes έγραψε στις 18:50, 27-11-11:

#9
Αρχική Δημοσίευση από antwwwnis
Στους ΗΜΜΥ τυχαίνει καμιά φορά να χρειάζονται να γράψουν σε γλώσσα που δεν την έχουν διδαχθεί πουθενά;
Φυσικά. Ξέρεις σε πόσα μαθήματα δίνονται εργασίες σε Java, αλλά Java δεν διδάσκεται πρακτικά πουθενά;

Σημείωση: Το μήνυμα αυτό γράφτηκε πάνω από 6 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

0 Δεν μπορείτε να αξιολογήσετε αρνητικά το μήνυμα αυτόΔεν μπορείτε να αξιολογήσετε θετικά το μήνυμα αυτό
Παράθεση

Speedy

Διάσημο Μέλος

Το avatar του χρήστη Speedy
Ο Speedy αυτή τη στιγμή δεν είναι συνδεδεμένος Μας γράφει απο Αγρίνιο (Αιτωλο/νία). Έχει γράψει 656 μηνύματα.

O Speedy έγραψε στις 19:41, 27-11-11:

#10
Θα περνάς σαν παράμετρο στην συνάρτηση τον μετρητή αν δεν θες να χρησιμοποιήσεις global static μεταβλητή που σου πρότεινε ο Γιώργος, δηλαδή:

int fib1(int n,int counter) { counter++; if (n == 0) { return 0; } if (n == 1) { return 1; } return fib1(n - 1, counter) + fib1(n - 2,counter); }

Σημείωση: Το μήνυμα αυτό γράφτηκε πάνω από 6 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

edited Τελευταία επεξεργασία από το χρήστη Γιώργος : 28-04-12 στις 15:07. Αιτία: Code tags added.
0 Δεν μπορείτε να αξιολογήσετε αρνητικά το μήνυμα αυτόΔεν μπορείτε να αξιολογήσετε θετικά το μήνυμα αυτό
Παράθεση

aergos

Δραστήριο Μέλος

Το avatar του χρήστη aergos
Ο aergos αυτή τη στιγμή δεν είναι συνδεδεμένος Έχει γράψει 383 μηνύματα.

O aergos έγραψε στις 21:58, 27-11-11:

#11
Αρχική Δημοσίευση από Speedy
Θα περνάς σαν παράμετρο στην συνάρτηση τον μετρητή αν δεν θες να χρησιμοποιήσεις global static μεταβλητή που σου πρότεινε ο Γιώργος, δηλαδή:

Δε θα δουλέψει αυτό με τον counter όπως το έχεις κάνει γιατί η συνάρτηση καλεί αναδρομικά 2 φορές τον εαυτό της και έτσι δημιουργούνται πολλά παρακλάδια με διαφορετικά instances του counter.
Επίσης αυτό που πρότεινε ο Γιώργος είναι εσωτερική στη συνάρτηση static μεταβλητή, όχι global.

Σημείωση: Το μήνυμα αυτό γράφτηκε πάνω από 6 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

edited Τελευταία επεξεργασία από το χρήστη Γιώργος : 28-04-12 στις 15:07. Αιτία: Spoiler tags
0 Δεν μπορείτε να αξιολογήσετε αρνητικά το μήνυμα αυτόΔεν μπορείτε να αξιολογήσετε θετικά το μήνυμα αυτό
Παράθεση

@nn@

Νεοφερμένος

Το avatar του χρήστη @nn@
H @nn@ αυτή τη στιγμή δεν είναι συνδεδεμένη. Επαγγέλεται Φοιτητής/τρια . Έχει γράψει 58 μηνύματα.

H @nn@ έγραψε στις 15:11, 28-04-12:

#12
Γειά σας έχω μια απορία εδω και πόλυ καιρό. Μπορεί κάποιος να μου εξηγήσει τι είναι και σε τι χρησιμεύουν οι argc και argv που βαζουμε ως όρισμα στην main?

Σημείωση: Το μήνυμα αυτό γράφτηκε πάνω από 5 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

0 Δεν μπορείτε να αξιολογήσετε αρνητικά το μήνυμα αυτόΔεν μπορείτε να αξιολογήσετε θετικά το μήνυμα αυτό
Παράθεση

Πληροφορικάριος

Πολύ δραστήριο μέλος

Το avatar του χρήστη Πληροφορικάριος
Ο Πληροφορικάριος αυτή τη στιγμή δεν είναι συνδεδεμένος Είναι 24 ετών και μας γράφει απο Αθήνα (Αττική). Έχει γράψει 531 μηνύματα.

O Πληροφορικάριος έγραψε στις 17:05, 28-04-12:

#13
main(int argc ,char *argv[])

Τα χρησιμοποιουμε για εισαγωγή δεδομένων οταν εκτελούμε το πρόγραμμα απο τη γραμμή εντολών..
Για να εκτελέσουμε το πρόγραμμα με όνομα esteki.exe γραφουμε:

esteki.exe παραμετρος1 παράμετρος2

οι παράμετροι χωρίζοντε με κενό και μπορουμε να βάλουμε ότι θέλουμε σε αυτούς.
Στο argc αποθηκέυετε το σύνολο τον παραμέτρων +1 για το όνομα του αρχείου(και αυτό παράμετρος είναι) π.χ. αν δώσαμε 2 παραμέτρους το argc γίνετε 3.
Το argv είναι ένας πίνακας δεικτών τύπου char.Έκει αποθηκεύονται οι παράμετροι που δώσαμε στο *argv[0] είναι το όνομα του αρχείου στο *argv[1] είναι η παράμετρος1 στο *argv[2] είναι η παράμετρος2 κλπ...

αν δώσουμε: esteki.exe party 2012
*argv[0]=="esteki.exe"
*argv[1]=="party"
*argv[2]=="2012"
(ξέρεις πως δουλεύει ο πίνακας δεικτών ε; )

Το χρησιμοποιούμε για γρήγορη εισαγωγή δεδομένων..να μην μας ρωτάει συνέχεια δώσε το ένα δώσε το άλλο..δες και εδώ

Σημείωση: Το μήνυμα αυτό γράφτηκε πάνω από 5 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

0 Δεν μπορείτε να αξιολογήσετε αρνητικά το μήνυμα αυτόΔεν μπορείτε να αξιολογήσετε θετικά το μήνυμα αυτό
Παράθεση

@nn@

Νεοφερμένος

Το avatar του χρήστη @nn@
H @nn@ αυτή τη στιγμή δεν είναι συνδεδεμένη. Επαγγέλεται Φοιτητής/τρια . Έχει γράψει 58 μηνύματα.

H @nn@ έγραψε στις 17:45, 28-04-12:

#14
Αρχική Δημοσίευση από Πληροφορικάριος
Ναι ξέρω πως δουλεύδουν οι πίνακες δικτών ευχαριστώ πολύ για την απάντηση είναι πολύ διευκρινιστική!!!

Σημείωση: Το μήνυμα αυτό γράφτηκε πάνω από 5 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

edited Τελευταία επεξεργασία από το χρήστη Γιώργος : 28-04-12 στις 17:51. Αιτία: Spoiler tag added.
0 Δεν μπορείτε να αξιολογήσετε αρνητικά το μήνυμα αυτόΔεν μπορείτε να αξιολογήσετε θετικά το μήνυμα αυτό
Παράθεση

@nn@

Νεοφερμένος

Το avatar του χρήστη @nn@
H @nn@ αυτή τη στιγμή δεν είναι συνδεδεμένη. Επαγγέλεται Φοιτητής/τρια . Έχει γράψει 58 μηνύματα.

H @nn@ έγραψε στις 23:58, 12-05-12:

#15
Μπορεί κάποιος να μου δώσει μια ιδέα για το πώς να ελέγχω αν τα στοιχεία που δίνει ο χρήστης είναι float ή char προσπάθησα να το κάνω με scanf αλλά δεν δουλεύει και έχω κολλήσει.

Σημείωση: Το μήνυμα αυτό γράφτηκε πάνω από 5 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

0 Δεν μπορείτε να αξιολογήσετε αρνητικά το μήνυμα αυτόΔεν μπορείτε να αξιολογήσετε θετικά το μήνυμα αυτό
Παράθεση

Γιώργος

Επιφανές Μέλος

Το avatar του χρήστη Γιώργος
Ο Γιώργος αυτή τη στιγμή δεν είναι συνδεδεμένος Μας γράφει απο Ελβετία (Ευρώπη). Έχει γράψει 8,986 μηνύματα.

O Γιώργος Je veux aller au bout de mes fantasmes έγραψε στις 00:56, 13-05-12:

#16
Αρχική Δημοσίευση από @nn@
Μπορεί κάποιος να μου δώσει μια ιδέα για το πώς να ελέγχω αν τα στοιχεία που δίνει ο χρήστης είναι float ή char προσπάθησα να το κάνω με scanf αλλά δεν δουλεύει και έχω κολλήσει.
Δεν υπάρχει κάτι τέτοιο βασικά. Το float και το char είναι απλά πώς εσύ θα "διαβάσεις" τα δεδομένα σου και θα τα ερμηνεύσεις.
Με άλλα λόγια, όταν περιμένεις ένα δεδομένο Χ, που μπορεί να ανήκει είτε σε έναν τύπο Α, είτε σε έναν τύπο Β, τότε ο καλύτερος χειρισμός είναι να χρησιμοποιήσεις τον τύπο που καλύπτει και τα δύο και να πράττεις ανάλογα.

Πχ, αν περιμένεις είτε ακέραιους είτε πραγματικούς, τότε αποθηκεύεις αρχικά τα δεδομένα σου ως "πραγματικούς" κι από εκεί εξετάζεις τι είναι.
Αντίστοιχα, αν περιμένεις float η char, το καλύτερο θα ήταν να διαβάσεις char κι εκεί να δεις αν '0' <= x <= '9', φερ' ειπείν. Κοινώς, να αντιμετωπίσεις τους αριθμούς ως chars, αρχικά.

Σημείωση: Το μήνυμα αυτό γράφτηκε πάνω από 5 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

0 Δεν μπορείτε να αξιολογήσετε αρνητικά το μήνυμα αυτόΔεν μπορείτε να αξιολογήσετε θετικά το μήνυμα αυτό
Παράθεση

@nn@

Νεοφερμένος

Το avatar του χρήστη @nn@
H @nn@ αυτή τη στιγμή δεν είναι συνδεδεμένη. Επαγγέλεται Φοιτητής/τρια . Έχει γράψει 58 μηνύματα.

H @nn@ έγραψε στις 01:20, 13-05-12:

#17
Αυτό που λές να τα διαβάζει ως χαρακτήρες το έχω κάνει αλλά μετα πρέπει να το μετατρέψεις σε float και αυτό δεν είναι τοσο εύκολο γιατι τον αριθμό που θα δώσει πχ 12,3 τον αποθηκεύεις σε πίνακα χαρακτήρων και κάθε ψηφίο θα πάρει ξεχωριστή θέση στον πίνακα. Αυτό που σκεφτόμουν είναι με την scanf η οποία γυρνάει 1 όταν ειναί επιτυχης η εισάφωγή του στοιχείου και 0 όταν δεν είναι αλλά δεν δουλεύει:
Δείτε τον κώδικα μηπως έχω κάνει βλακία.

main()
float *FltArray;
int t,Dimention;
Dimention=10;

FltArray=(float*)malloc(sizeof(float)*Dimention);
printf("Please insert the numbers");
for(count=0;count<Dimention;count++)
{
t=scanf("%f",&FltArray[count]);
if(t!=1)
{
printf("the value must be a float number");
t=scanf("%f",&FltArray[count]);
}
{
return 0;
}

Σημείωση: Το μήνυμα αυτό γράφτηκε πάνω από 5 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

0 Δεν μπορείτε να αξιολογήσετε αρνητικά το μήνυμα αυτόΔεν μπορείτε να αξιολογήσετε θετικά το μήνυμα αυτό
Παράθεση

@nn@

Νεοφερμένος

Το avatar του χρήστη @nn@
H @nn@ αυτή τη στιγμή δεν είναι συνδεδεμένη. Επαγγέλεται Φοιτητής/τρια . Έχει γράψει 58 μηνύματα.

H @nn@ έγραψε στις 01:23, 13-05-12:

#18
Για την ακρίβεια αυτό που κάνει οταν βάζω χαρακτήρα είναι να βγάζει συνέχεια στην οθόνη "the value must be a float number"
'

Σημείωση: Το μήνυμα αυτό γράφτηκε πάνω από 5 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

0 Δεν μπορείτε να αξιολογήσετε αρνητικά το μήνυμα αυτόΔεν μπορείτε να αξιολογήσετε θετικά το μήνυμα αυτό
Παράθεση

Liakouras

Δραστήριο Μέλος

Το avatar του χρήστη Liakouras
Ο Liakouras αυτή τη στιγμή δεν είναι συνδεδεμένος Έχει γράψει 382 μηνύματα.

O Liakouras έγραψε στις 12:13, 13-05-12:

#19
Πάντως μπορείς να κάνεις μετατροπή ενός char σε float με την χρήση της συνάρτησης atoi()

Σημείωση: Το μήνυμα αυτό γράφτηκε πάνω από 5 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

0 Δεν μπορείτε να αξιολογήσετε αρνητικά το μήνυμα αυτόΔεν μπορείτε να αξιολογήσετε θετικά το μήνυμα αυτό
Παράθεση

Lysippe

Περιβόητο Μέλος

Το avatar του χρήστη Lysippe
H Lysippe αυτή τη στιγμή δεν είναι συνδεδεμένη. Είναι 25 ετών . Έχει γράψει 953 μηνύματα.

H Lysippe έγραψε στις 13:15, 13-05-12:

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

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

Σημείωση: Το μήνυμα αυτό γράφτηκε πάνω από 5 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

1 Δεν μπορείτε να αξιολογήσετε αρνητικά το μήνυμα αυτόΔεν μπορείτε να αξιολογήσετε θετικά το μήνυμα αυτό
Παράθεση

@nn@

Νεοφερμένος

Το avatar του χρήστη @nn@
H @nn@ αυτή τη στιγμή δεν είναι συνδεδεμένη. Επαγγέλεται Φοιτητής/τρια . Έχει γράψει 58 μηνύματα.

H @nn@ έγραψε στις 22:38, 13-05-12:

#21
Έχεις δίκιο μαλλον καλύτερα να μην αναλώνομαι σε λεπτομέριες.

Σημείωση: Το μήνυμα αυτό γράφτηκε πάνω από 5 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

1 Δεν μπορείτε να αξιολογήσετε αρνητικά το μήνυμα αυτόΔεν μπορείτε να αξιολογήσετε θετικά το μήνυμα αυτό
Παράθεση

Θάλεια

Επιφανές Μέλος

Το avatar του χρήστη Θάλεια
H Θάλεια αυτή τη στιγμή δεν είναι συνδεδεμένη. Έχει γράψει 2,810 μηνύματα.

H Θάλεια έγραψε στις 14:47, 12-06-12:

#22
Έχω κάποια αρχειάκια προγραμμάτων σε γλώσσα C. Το laptop μου όμως δεν διαβάζει C και απ'όσο γνωρίζω πρέπει να κατεβάσω ένα προγραμματάκι που θα μπορεί να τα διαβάσει.
Γνωρίζει κανείς κάποιο;

Σημείωση: Το μήνυμα αυτό γράφτηκε πάνω από 5 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

0 Δεν μπορείτε να αξιολογήσετε αρνητικά το μήνυμα αυτόΔεν μπορείτε να αξιολογήσετε θετικά το μήνυμα αυτό
Παράθεση

Γιώργος

Επιφανές Μέλος

Το avatar του χρήστη Γιώργος
Ο Γιώργος αυτή τη στιγμή δεν είναι συνδεδεμένος Μας γράφει απο Ελβετία (Ευρώπη). Έχει γράψει 8,986 μηνύματα.

O Γιώργος Je veux aller au bout de mes fantasmes έγραψε στις 14:59, 12-06-12:

#23
Αρχική Δημοσίευση από Θάλεια
Έχω κάποια αρχειάκια προγραμμάτων σε γλώσσα C. Το laptop μου όμως δεν διαβάζει C και απ'όσο γνωρίζω πρέπει να κατεβάσω ένα προγραμματάκι που θα μπορεί να τα διαβάσει.
Γνωρίζει κανείς κάποιο;
Έλα βρε Θάλεια, ασχολείσαι και με C;

Κατ' αρχάς, μπορείς να διαβάσεις αρχεία .c , απλώς δεν έχεις κάνει association του .c με κάποιο πρόγραμμα. Αυτά τα αρχεία είναι plain text (κείμενο) οπότε (ακόμα και) με notepad μπορείς να τα διαβάσεις.

Αν θες να τα μεταγλωττίσεις και να τα τρέξεις, βάλε Dev-C++.

Σημείωση: Το μήνυμα αυτό γράφτηκε πάνω από 5 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

0 Δεν μπορείτε να αξιολογήσετε αρνητικά το μήνυμα αυτόΔεν μπορείτε να αξιολογήσετε θετικά το μήνυμα αυτό
Παράθεση

Θάλεια

Επιφανές Μέλος

Το avatar του χρήστη Θάλεια
H Θάλεια αυτή τη στιγμή δεν είναι συνδεδεμένη. Έχει γράψει 2,810 μηνύματα.

H Θάλεια έγραψε στις 15:13, 12-06-12:

#24
Αρχική Δημοσίευση από Γιώργος
Έλα βρε Θάλεια, ασχολείσαι και με C;

Κατ' αρχάς, μπορείς να διαβάσεις αρχεία .c , απλώς δεν έχεις κάνει association του .c με κάποιο πρόγραμμα. Αυτά τα αρχεία είναι plain text (κείμενο) οπότε (ακόμα και) με notepad μπορείς να τα διαβάσεις.

Αν θες να τα μεταγλωττίσεις και να τα τρέξεις, βάλε Dev-C++.
Για τις ανάγκες της σχολής.

Α να μπράβο. Ουσιαστικά μεταγλωττιστή ήθελα. Ευχαριστώ πάάάάρα πολύ!

Μία χαζή ερώτηση τώρα. Μήπως υπάρχει κάποιο πρόγραμμα (ας πούμε) που να μπορώ συντάσσω πχ emacs 62.c & να μου ανοίγει ένα άλλο παράθυρο, εκεί να γράφω το προγραμματάκι μου και μετά να γυρνάω στο πρώτο και να κάνω gcc κτλ για να βλέπω αν το έχω κάνει σωστά;
Δεν ξέρω αν κατάλαβες τι εννοώ. Αυτό το κάναμε στο ubundu εμείς.


έντιτ: Νομίζω ότι το έχει σε αυτό. Κατάλαβα. Ευχαριστώ πάρα πολύ και πάλι! Με έσωσες.

Σημείωση: Το μήνυμα αυτό γράφτηκε πάνω από 5 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

edited Τελευταία επεξεργασία από το χρήστη Θάλεια : 12-06-12 στις 15:18. Αιτία: έντιτ
1 Δεν μπορείτε να αξιολογήσετε αρνητικά το μήνυμα αυτόΔεν μπορείτε να αξιολογήσετε θετικά το μήνυμα αυτό
Παράθεση

moxa15

Επιφανές Μέλος

Το avatar του χρήστη moxa15
Ο moxa15 αυτή τη στιγμή δεν είναι συνδεδεμένος Είναι 24 ετών . Έχει γράψει 2,493 μηνύματα.

O moxa15 oooleee έγραψε στις 09:47, 18-06-12:

#25
Να γραφτει ενα κειμενο το οποιο θα διαβαζει μια σειρα χαρακτηρων απο το πληκτρολογιο και επειτα θα την εμφανιζει αναποδα.
π.χ. hello->olleh

Προφανως εχω κανει καπου λαθος plz help....

#include <stdio.h> #include <stdlib.h> main() { char a[80]; int b; gets(a); b=strlen(a); for (i=b;i<=0;i=b-1) { printf("%char",a[b]); } system("pause"); }

Σημείωση: Το μήνυμα αυτό γράφτηκε πάνω από 5 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

0 Δεν μπορείτε να αξιολογήσετε αρνητικά το μήνυμα αυτόΔεν μπορείτε να αξιολογήσετε θετικά το μήνυμα αυτό
Παράθεση

Γιώργος

Επιφανές Μέλος

Το avatar του χρήστη Γιώργος
Ο Γιώργος αυτή τη στιγμή δεν είναι συνδεδεμένος Μας γράφει απο Ελβετία (Ευρώπη). Έχει γράψει 8,986 μηνύματα.

O Γιώργος Je veux aller au bout de mes fantasmes έγραψε στις 11:25, 18-06-12:

#26
for (i=b;i<=0;i=b-1)
Γιατί; Νομίζω έπεσες σε infinite loop εκεί.


Btw, καλό είναι να λέμε και τι πρόβλημα υπάρχει. Πχ, "κολλάει", "βγάζει seg fault", "δεν τερματίζει", etc.

Σημείωση: Το μήνυμα αυτό γράφτηκε πάνω από 5 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

1 Δεν μπορείτε να αξιολογήσετε αρνητικά το μήνυμα αυτόΔεν μπορείτε να αξιολογήσετε θετικά το μήνυμα αυτό
Παράθεση

g1wrg0s (01001)

Επιφανές Μέλος

Το avatar του χρήστη g1wrg0s
Ο 01001 αυτή τη στιγμή δεν είναι συνδεδεμένος Επαγγέλεται Φοιτητής/τρια . Έχει γράψει 9,584 μηνύματα.

O g1wrg0s Δεν υπάρχει δεν μπορώ, υπάρχει δεν θέλω! έγραψε στις 11:31, 18-06-12:

#27


Ειχε αρκετα λογικα λαθη. Δες τους κωδικες και αν δεν καταλαβεις κατι ρωτα.

Σημείωση: Το μήνυμα αυτό γράφτηκε πάνω από 5 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

1 Δεν μπορείτε να αξιολογήσετε αρνητικά το μήνυμα αυτόΔεν μπορείτε να αξιολογήσετε θετικά το μήνυμα αυτό
Παράθεση

@nn@

Νεοφερμένος

Το avatar του χρήστη @nn@
H @nn@ αυτή τη στιγμή δεν είναι συνδεδεμένη. Επαγγέλεται Φοιτητής/τρια . Έχει γράψει 58 μηνύματα.

H @nn@ έγραψε στις 14:59, 18-06-12:

#28
Σου περιγράφω τα λάθη που έχεις κάνει για να μην τα ξανακάνεις
1ο : for(i=b;i<=0;i=b-1) έτσι όπως το έχεις γράψει σημαίνει ότι αρχικόποιής τον μετρητή i σε εναν θετικό αριθμό b και όσο ισχύει ότι το i είναι μικρότερο η ίσο του μηδενός θα τρέχει το for πράγμα που δεν θα συμβεί ποτέ (εκτός αν το b είναι ίσο του 0) αφου το b είναι μεγαλύτερο ή ίσο του 0.
2ο: Έστω ότι είχες κάνει σωστά το for με την έντολή printf("%c",a[b]); θα τύπωνε μόνο τον τελευταίο χαρακτήρα του πίνακα αφού το b δεν μεταβάλεται
3ο: καλό είναι να κάνεις #include<string.h> όταν δουλεύεις με συμβολόσειρες γιατί οι περισότερες συναρτησεις που χειρίζονται συμβολοσειρές περιλαμβάνονται έκει.
Ελπίζω να βοήθησα ...............

Σημείωση: Το μήνυμα αυτό γράφτηκε πάνω από 5 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

1 Δεν μπορείτε να αξιολογήσετε αρνητικά το μήνυμα αυτόΔεν μπορείτε να αξιολογήσετε θετικά το μήνυμα αυτό
Παράθεση

moxa15

Επιφανές Μέλος

Το avatar του χρήστη moxa15
Ο moxa15 αυτή τη στιγμή δεν είναι συνδεδεμένος Είναι 24 ετών . Έχει γράψει 2,493 μηνύματα.

O moxa15 oooleee έγραψε στις 10:17, 19-06-12:

#29
Αρχική Δημοσίευση από @nn@
Σου περιγράφω τα λάθη που έχεις κάνει για να μην τα ξανακάνεις
1ο : for(i=b;i<=0;i=b-1) έτσι όπως το έχεις γράψει σημαίνει ότι αρχικόποιής τον μετρητή i σε εναν θετικό αριθμό b και όσο ισχύει ότι το i είναι μικρότερο η ίσο του μηδενός θα τρέχει το for πράγμα που δεν θα συμβεί ποτέ (εκτός αν το b είναι ίσο του 0) αφου το b είναι μεγαλύτερο ή ίσο του 0.
2ο: Έστω ότι είχες κάνει σωστά το for με την έντολή printf("%c",a[b]); θα τύπωνε μόνο τον τελευταίο χαρακτήρα του πίνακα αφού το b δεν μεταβάλεται
3ο: καλό είναι να κάνεις #include<string.h> όταν δουλεύεις με συμβολόσειρες γιατί οι περισότερες συναρτησεις που χειρίζονται συμβολοσειρές περιλαμβάνονται έκει.
Ελπίζω να βοήθησα ...............
οκ σε ευχαριστω παρα πολυ για την απαντηση με βοηθησες ιδιαιτερα να καταλαβω καποια πραγματακια
μπορεις να εξηγησεις πιο αναλυτικα το 3ο???
Αρχική Δημοσίευση από Γιώργος
for (i=b;i<=0;i=b-1)
Γιατί; Νομίζω έπεσες σε infinite loop εκεί.
Btw, καλό είναι να λέμε και τι πρόβλημα υπάρχει. Πχ, "κολλάει", "βγάζει seg fault", "δεν τερματίζει", etc.
ναι με συγχωρεις θα το κανω απο την επομενη φορα.Εβγαζε μονο την πρωτη τιμη....


Αρχική Δημοσίευση από @nn@
Σου περιγράφω τα λάθη που έχεις κάνει για να μην τα ξανακάνεις
1ο : for(i=b;i<=0;i=b-1) έτσι όπως το έχεις γράψει σημαίνει ότι αρχικόποιής τον μετρητή i σε εναν θετικό αριθμό b και όσο ισχύει ότι το i είναι μικρότερο η ίσο του μηδενός θα τρέχει το for πράγμα που δεν θα συμβεί ποτέ (εκτός αν το b είναι ίσο του 0) αφου το b είναι μεγαλύτερο ή ίσο του 0.
2ο: Έστω ότι είχες κάνει σωστά το for με την έντολή printf("%c",a[b]); θα τύπωνε μόνο τον τελευταίο χαρακτήρα του πίνακα αφού το b δεν μεταβάλεται
3ο: καλό είναι να κάνεις #include<string.h> όταν δουλεύεις με συμβολόσειρες γιατί οι περισότερες συναρτησεις που χειρίζονται συμβολοσειρές περιλαμβάνονται έκει.
Ελπίζω να βοήθησα ...............
Αρχική Δημοσίευση από Γιώργος
for (i=b;i<=0;i=b-1)
Γιατί; Νομίζω έπεσες σε infinite loop εκεί.


Btw, καλό είναι να λέμε και τι πρόβλημα υπάρχει. Πχ, "κολλάει", "βγάζει seg fault", "δεν τερματίζει", etc.
Αρχική Δημοσίευση από g1wrg0s


Ειχε αρκετα λογικα λαθη. Δες τους κωδικες και αν δεν καταλαβεις κατι ρωτα.
λες gets(a) κανονικα δεν πρεπει να πεις και τιμη απο τη στιγμη που το a ειναι πινακας???
το strlen για να το παρω πρεπει οπωσδηποτε να εχω παρει #include <string.h> ???
μετα λες i>=0 μα αφου παρει το μεγεθος του string πχ 5 δεν θα ειναι σωστο κανονικα δεν πρεπει να ειναι i<=0???

Σημείωση: Το μήνυμα αυτό γράφτηκε πάνω από 5 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

0 Δεν μπορείτε να αξιολογήσετε αρνητικά το μήνυμα αυτόΔεν μπορείτε να αξιολογήσετε θετικά το μήνυμα αυτό
Παράθεση

g1wrg0s (01001)

Επιφανές Μέλος

Το avatar του χρήστη g1wrg0s
Ο 01001 αυτή τη στιγμή δεν είναι συνδεδεμένος Επαγγέλεται Φοιτητής/τρια . Έχει γράψει 9,584 μηνύματα.

O g1wrg0s Δεν υπάρχει δεν μπορώ, υπάρχει δεν θέλω! έγραψε στις 11:01, 19-06-12:

#30
λες gets(a) κανονικα δεν πρεπει να πεις και τιμη απο τη στιγμη που το a ειναι πινακας???
το strlen για να το παρω πρεπει οπωσδηποτε να εχω παρει #include <string.h> ???
μετα λες i>=0 μα αφου παρει το μεγεθος του string πχ 5 δεν θα ειναι σωστο κανονικα δεν πρεπει να ειναι i<=0???
Ως προς το πρωτο: Νομιζω οτι και εσυ ετσι το ειχες κανει gets(a). Αν σε ενα τερματικο πατησεις man gets θα σου βγαλει το πρωτοτυπο της συναρτησης και τι ακριβως κανει (μπορεις να gouglareis κιολας ). Εκει θα δεις οτι παιρνει ενα const poiner σε χαρακτηρα. Με λιγα λογια καλεις τη gets δινοντας της τη διευθυνση του πρωτου χαρακτηρα απο το αλφαριθμιτικο σου. Για να το πετυχεις αυτο υπαρχουν δυο τροποι gets(a) ή gets(&(a[0]) ) .Επιλεγεις και παιρνεις , το ιδιο πραγμα κανουν.
π.χ αν θες για καποιο λογο η gets να ξεκινησει να γραφει απο την τεταρτη θεση και μετα αυτο που θα εισαγεις σαν εισοδο στο προγραμμα τοτε απλα την καλεις ως εξης gets( &(a[3])); . Για το πρωτο στοιχειο συγκεκριμενα υπαρχουν δυο τροποι που κανουν το ιδιο πραγμα .Αυτοι ειναι οι gets(a) και gets( &(a[0]) ) .

Ως προς το δευτερο: Αυτη η ερωτηση σχετιζεται με την ερωτηση που εκανες στην Αννα απο πανω η οποια σε προετρεψαι να κανεις #include <string.h> οταν θες να χρησιμοποιησεις συναρτησεις που διαχειριζονται αλφαριθμιτικα-strings . Στο προγραμμα σου θες να χρησιμοποιησεις την strlen ή οποια μετρα τα στοιχεια ενος string, δηλαδη διαχειριζεται (στην ουσια το προσπαελαυνει) ενα αλφαριθμιτικο και για ατυο υπαρχει στο αρχειο string.h το οποιο εσυ πρεπει να καλεις καθε φορα που θες να την χρησιμοποιησεις.

Ως προς το τριτο: Η απαντηση ειναι οχι.
Σκεψου. Ξεκινα η for και αρχικοποιει το δεικτη i=μεγεθος_του _πινακα .Επειτα παει να ελεγξει τη συνθηκη ωστε να αποφασισει ΑΝ θα μπει στο βρογχο, βλεπει το δικο σου i<=0 και εφοσον δεν ισχυει δεν θα μπει καθολου και δεν θα εκτελεστει ουτε ενα print . Στην αλλη περιπτωση θα μπει και εφοσον ο δεικτης μειωνεται με βημα 1 καθε φορα θα σταματησει οταν το i γινει -1 . Δηλαδη μεχρι και i=0 θα μπει μεσα στο βρογχο.

Σημείωση: Το μήνυμα αυτό γράφτηκε πάνω από 5 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

0 Δεν μπορείτε να αξιολογήσετε αρνητικά το μήνυμα αυτόΔεν μπορείτε να αξιολογήσετε θετικά το μήνυμα αυτό
Παράθεση

Rempeskes

Αποκλεισμένος χρήστης

Το avatar του χρήστη Rempeskes
Ο Rempeskes αυτή τη στιγμή δεν είναι συνδεδεμένος Επαγγέλεται Hair stylist . Έχει γράψει 5,593 μηνύματα.

O Rempeskes έγραψε στις 11:06, 19-06-12:

#31
man gets
boy asks


Σημείωση: Το μήνυμα αυτό γράφτηκε πάνω από 5 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

2 Δεν μπορείτε να αξιολογήσετε αρνητικά το μήνυμα αυτόΔεν μπορείτε να αξιολογήσετε θετικά το μήνυμα αυτό
Παράθεση

εμμα_τριντεντ

Περιβόητο Μέλος

Το avatar του χρήστη εμμα_τριντεντ
H εμμα_τριντεντ αυτή τη στιγμή δεν είναι συνδεδεμένη. Έχει γράψει 1,120 μηνύματα.

H εμμα_τριντεντ έγραψε στις 13:15, 19-06-12:

#32
μερικές χρήσιμες συναρτήσεις συμβολοσειρών της C: ΚΛΙΚ

ρίξε μια ματιά γιατί θα σου φανούν χρήσιμες και στη συνέχεια.
γενικά ό,τι χρειαστείς googlαρε το και θα σου βγάλει ό,τι θέλεις.
Good luck & good "burn" aleh

Σημείωση: Το μήνυμα αυτό γράφτηκε πάνω από 5 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

0 Δεν μπορείτε να αξιολογήσετε αρνητικά το μήνυμα αυτόΔεν μπορείτε να αξιολογήσετε θετικά το μήνυμα αυτό
Παράθεση

vassilis498

Επιφανές Μέλος

Το avatar του χρήστη vassilis498
Ο vassilis498 αυτή τη στιγμή δεν είναι συνδεδεμένος Έχει γράψει 5,782 μηνύματα.

O vassilis498 έγραψε στις 13:37, 19-06-12:

#33
επίσης αντί για gets συνηθίστε καλύτερα να χρησιμοποιείτε fgets, για λόγους ασφαλείας.

Σημείωση: Το μήνυμα αυτό γράφτηκε πάνω από 5 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

1 Δεν μπορείτε να αξιολογήσετε αρνητικά το μήνυμα αυτόΔεν μπορείτε να αξιολογήσετε θετικά το μήνυμα αυτό
Παράθεση

@nn@

Νεοφερμένος

Το avatar του χρήστη @nn@
H @nn@ αυτή τη στιγμή δεν είναι συνδεδεμένη. Επαγγέλεται Φοιτητής/τρια . Έχει γράψει 58 μηνύματα.

H @nn@ έγραψε στις 15:09, 19-06-12:

#34
Αυτά το βιντεακια θα σε βοηθήσουν να καταλάβεις κάποιες βασικές ένοιες έμενα με έχουν βοηθήσουν αρκετά.
http://www.youtube.com/watch?v=z773Xu4-kIY

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

για παράδειγμα έστω ότι θέλεις να συγκρίνεις 2 συμβολοσειρές τότε είτε μπορείς να φτιάξεις δικό σου κώδικα για να το κάνεις ή να χρησιμόποιήσεις την συνάρτηση strcmp() η οποία βρίσκεται σε ένα αρχείο String.h το όποίο για να το εισάγεις πρέπει να χρησιμοποιήσεις την εντολή include, άλλη κατηγόρία συναρτήσεων που χρειάζονται να κανείς include είναι οι συναρτησεις που σχετίζονται με μαθηματικά. Στην περίπτωση αυτή γράφεις την εντολή #include<math.h>, Οταν χρησιμοποιείς διαφορές συναρτησεις δες στο google αν χρειάζεται να κάνεις κάποιο include .

Σημείωση: Το μήνυμα αυτό γράφτηκε πάνω από 5 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

0 Δεν μπορείτε να αξιολογήσετε αρνητικά το μήνυμα αυτόΔεν μπορείτε να αξιολογήσετε θετικά το μήνυμα αυτό
Παράθεση

moxa15

Επιφανές Μέλος

Το avatar του χρήστη moxa15
Ο moxa15 αυτή τη στιγμή δεν είναι συνδεδεμένος Είναι 24 ετών . Έχει γράψει 2,493 μηνύματα.

O moxa15 oooleee έγραψε στις 16:18, 19-06-12:

#35
Αρχική Δημοσίευση από g1wrg0s
Ως προς το πρωτο: Νομιζω οτι και εσυ ετσι το ειχες κανει gets(a). Με λιγα λογια καλεις τη gets δινοντας της τη διευθυνση του πρωτου χαρακτηρα απο το αλφαριθμιτικο σου. Για να το πετυχεις αυτο υπαρχουν δυο τροποι gets(a) ή gets(&(a[0]) ) .Επιλεγεις και παιρνεις , το ιδιο πραγμα κανουν.
π.χ αν θες για καποιο λογο η gets να ξεκινησει να γραφει απο την τεταρτη θεση και μετα αυτο που θα εισαγεις σαν εισοδο στο προγραμμα τοτε απλα την καλεις ως εξης gets( &(a[3])); . Για το πρωτο στοιχειο συγκεκριμενα υπαρχουν δυο τροποι που κανουν το ιδιο πραγμα .Αυτοι ειναι οι gets(a) και gets( &(a[0]) ) .
ναι και εγω εκανα gets(a) απλα ρωταω διοτι δεν καταλαβα γιατι εβγαινε η gets απλα πειραματιζομουν μεχρι να βγαλει κατι σωστο.Tωρα που μου εγραψες και το 2ο ισοδυναμο τροπο γραφης bold καταλαβα τι κανει....


Ως προς το δευτερο: Αυτη η ερωτηση σχετιζεται με την ερωτηση που εκανες στην Αννα απο πανω η οποια σε προετρεψαι να κανεις #include <string.h> οταν θες να χρησιμοποιησεις συναρτησεις που διαχειριζονται αλφαριθμιτικα-strings . Στο προγραμμα σου θες να χρησιμοποιησεις την strlen ή οποια μετρα τα στοιχεια ενος string, δηλαδη διαχειριζεται (στην ουσια το προσπαελαυνει) ενα αλφαριθμιτικο και για ατυο υπαρχει στο αρχειο string.h το οποιο εσυ πρεπει να καλεις καθε φορα που θες να την χρησιμοποιησεις.
οκ και σε αυτο καταλαβα,νομιζα οτι υπηρχε σαν εντολη στην stdlib ή στην stdio

Ως προς το τριτο: Η απαντηση ειναι οχι.
Σκεψου. Ξεκινα η for και αρχικοποιει το δεικτη i=μεγεθος_του _πινακα .Επειτα παει να ελεγξει τη συνθηκη ωστε να αποφασισει ΑΝ θα μπει στο βρογχο, βλεπει το δικο σου i<=0 και εφοσον δεν ισχυει δεν θα μπει καθολου και δεν θα εκτελεστει ουτε ενα print . Στην αλλη περιπτωση θα μπει και εφοσον ο δεικτης μειωνεται με βημα 1 καθε φορα θα σταματησει οταν το i γινει -1 . Δηλαδη μεχρι και i=0 θα μπει μεσα στο βρογχο.
ok και σε αυτη την ερωτηση το μπερδεψα λιγο στο μυαλο μου...

Αρχική Δημοσίευση από εμμα_τριντεντ
μερικές χρήσιμες συναρτήσεις συμβολοσειρών της C: ΚΛΙΚ

ρίξε μια ματιά γιατί θα σου φανούν χρήσιμες και στη συνέχεια.
γενικά ό,τι χρειαστείς googlαρε το και θα σου βγάλει ό,τι θέλεις.
Good luck & good "burn" aleh
αν εξαιρεσουμε την 6 σελιδουλα με τα πχς ολα τα αλλα δεν λεω καλες εγκυκλοπαιδικές γνωσεις αλλα τωρα καιγομαι διαβαζω για να περασω το εργαστηριο και μονο....
Αρχική Δημοσίευση από @nn@
Αυτά το βιντεακια θα σε βοηθήσουν να καταλάβεις κάποιες βασικές ένοιες έμενα με έχουν βοηθήσουν αρκετά.
http://www.youtube.com/watch?v=z773Xu4-kIY

Στην περίπτωση αυτή γράφεις την εντολή #include<math.h>, Οταν χρησιμοποιείς διαφορές συναρτησεις δες στο google αν χρειάζεται να κάνεις κάποιο include .
ναι οκ αυτα τα βασικα τα ξερω πχ math χρησιμοποιω οταν θελω δυναμη στο τετραγωνο δλδ pow αλλα θα δω τα βιντεακια και ελπιζω να με βοηθησιυν

Σημείωση: Το μήνυμα αυτό γράφτηκε πάνω από 5 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

0 Δεν μπορείτε να αξιολογήσετε αρνητικά το μήνυμα αυτόΔεν μπορείτε να αξιολογήσετε θετικά το μήνυμα αυτό
Παράθεση

moxa15

Επιφανές Μέλος

Το avatar του χρήστη moxa15
Ο moxa15 αυτή τη στιγμή δεν είναι συνδεδεμένος Είναι 24 ετών . Έχει γράψει 2,493 μηνύματα.

O moxa15 oooleee έγραψε στις 14:25, 21-06-12:

#36
Να γραφει ενα προγραμμα το οποιο να ζητα απο το χρηστη την τιμη της ωριαιας εργασιας ενως εργατη και το συνολο ωρων την εβδοαμαδα(μαγαλυτερο της 1 ωρας)
Να υπολογιζει το μισθο του την εβδομαδα,αν δουλευει πανω απο 40 ωρες εχει προσαυξηση 50%
-------------------------------------------------------------//------------------------------60--------------//-----------------100%
και θα εμαφινζει το συνολο των μισθων που πρεπει να πληρωθει

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








#include <stdio.h> #include <stdlib.h> main() { int wratimi,wraerg; float sum,mis8os; sum=0; do { printf("dwse timi wras ergasias"); scanf("%d",&wratimi); if (wratimi!=0) { do { printf("dwse wres ergasias\n"); scanf("%d",&wraerg); } while(wraerg>=0); if (wraerg<40) mis8os=wraerg*wratimi; else if (wraerg>40&&wraerg<60) mis8os=wraerg*wratimi+wraerg*wratimi*50/100; else if (wraerg>60) mis8os=wraerg*wratimi+wraerg*wratimi*100/100; sum=sum+mis8os; } while(wratimi=0); printf("to sinoliko poso einai %f",sum); system("pause"); }


προφανως κατι μου εχει φυγει plz help...

Σημείωση: Το μήνυμα αυτό γράφτηκε πάνω από 5 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

0 Δεν μπορείτε να αξιολογήσετε αρνητικά το μήνυμα αυτόΔεν μπορείτε να αξιολογήσετε θετικά το μήνυμα αυτό
Παράθεση

Lysippe

Περιβόητο Μέλος

Το avatar του χρήστη Lysippe
H Lysippe αυτή τη στιγμή δεν είναι συνδεδεμένη. Είναι 25 ετών . Έχει γράψει 953 μηνύματα.

H Lysippe έγραψε στις 15:16, 21-06-12:

#37
Αρχική Δημοσίευση από alehunter
#include <stdio.h> #include <stdlib.h> main(){ int wratimi,wraerg; float sum=0,mis8os; do{ printf("dwse timi wras ergasias"); scanf("%d",&wratimi); if (wratimi!=0){ do{ printf("dwse wres ergasias\n"); scanf("%d",&wraerg); }while(wraerg>=0); if (wraerg<40) mis8os=wraerg*wratimi; else if (wraerg>40 && wraerg<60) mis8os=(wraerg*wratimi+wraerg*wratimi*50)/100; else if (wraerg>60) mis8os=(wraerg*wratimi+wraerg*wratimi*100)/100; sum=sum+mis8os; } }while(wratimi==0); //Οι ισότητες είναι με == και όχι με =, που σημαίνει εκχώρηση τιμής printf("to sinoliko poso einai %f",sum); system("pause"); return 0; //Πρέπει να επιστρέφεται τιμή, όταν η συνάρτηση δεν έχει τύπο επιστρεφόμενης τιμής void }
Και να προσέχεις ο κώδικάς σου να είναι πιο συμμαζεμένος.

*Κοίταξα να τρέχει ο κώδικάς σου, δεν είδα αν είναι σωστές οι πράξεις σου.

Σημείωση: Το μήνυμα αυτό γράφτηκε πάνω από 5 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

edited Τελευταία επεξεργασία από το χρήστη Lysippe : 21-06-12 στις 16:10.
1 Δεν μπορείτε να αξιολογήσετε αρνητικά το μήνυμα αυτόΔεν μπορείτε να αξιολογήσετε θετικά το μήνυμα αυτό
Παράθεση

moxa15

Επιφανές Μέλος

Το avatar του χρήστη moxa15
Ο moxa15 αυτή τη στιγμή δεν είναι συνδεδεμένος Είναι 24 ετών . Έχει γράψει 2,493 μηνύματα.

O moxa15 oooleee έγραψε στις 15:49, 21-06-12:

#38
Αρχική Δημοσίευση από Lysippe
Και να προσέχεις ο κώδικάς σου να είναι πιο συμμαζεμένος.

*Κοίταξα να τρέχει ο κώδικάς σου, δεν είδα αν είναι σωστές οι πράξεις σου.
ναι ok έτσι και αλλιώς δε με νοιάζουν τόσο οι πράξεις όσο πιο πολύ οι εντολές...


ευχαριστώ πολύ(αυτό το λάθος όλη την ώρα το κάνω με το = και το ==)



thanx!!!

Σημείωση: Το μήνυμα αυτό γράφτηκε πάνω από 5 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

1 Δεν μπορείτε να αξιολογήσετε αρνητικά το μήνυμα αυτόΔεν μπορείτε να αξιολογήσετε θετικά το μήνυμα αυτό
Παράθεση

Lysippe

Περιβόητο Μέλος

Το avatar του χρήστη Lysippe
H Lysippe αυτή τη στιγμή δεν είναι συνδεδεμένη. Είναι 25 ετών . Έχει γράψει 953 μηνύματα.

H Lysippe έγραψε στις 16:16, 21-06-12:

#39
Να είσαι καλά. Θα συνηθίσεις το συντακτικό της γλώσσας, μην ανησυχείς.

Ps. Έκανα μια διόρθωση στον κώδικα. Τώρα πρόσεξα ότι πραγματοποιούνται οι ακόλουθες πράξεις, εφόσον η wratimi είναι διάφορη του 0. Οπότε όλες οι εντολές που ακολουθούν, θα πρέπει να είναι στο μπλοκ εντολών της αρχικής if.
Με συγχωρείς για την απροσεξία μου.

Σημείωση: Το μήνυμα αυτό γράφτηκε πάνω από 5 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

1 Δεν μπορείτε να αξιολογήσετε αρνητικά το μήνυμα αυτόΔεν μπορείτε να αξιολογήσετε θετικά το μήνυμα αυτό
Παράθεση

moxa15

Επιφανές Μέλος

Το avatar του χρήστη moxa15
Ο moxa15 αυτή τη στιγμή δεν είναι συνδεδεμένος Είναι 24 ετών . Έχει γράψει 2,493 μηνύματα.

O moxa15 oooleee έγραψε στις 19:38, 21-06-12:

#40
Αρχική Δημοσίευση από Lysippe
Να είσαι καλά. Θα συνηθίσεις το συντακτικό της γλώσσας, μην ανησυχείς.

Ps. Έκανα μια διόρθωση στον κώδικα. Τώρα πρόσεξα ότι πραγματοποιούνται οι ακόλουθες πράξεις, εφόσον η wratimi είναι διάφορη του 0. Οπότε όλες οι εντολές που ακολουθούν, θα πρέπει να είναι στο μπλοκ εντολών της αρχικής if.
Με συγχωρείς για την απροσεξία μου.
το θεμα ειναι ποτε θα το συνηθίσω κυριως τα σκατο ερωτηματικα ;

ευχαριστω πολυ για αλλη μια φορα...

Σημείωση: Το μήνυμα αυτό γράφτηκε πάνω από 5 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

1 Δεν μπορείτε να αξιολογήσετε αρνητικά το μήνυμα αυτόΔεν μπορείτε να αξιολογήσετε θετικά το μήνυμα αυτό
Παράθεση
Απάντηση στο θέμα

Χρήστες

  • Τα παρακάτω 0 μέλη και 1 επισκέπτες διαβάζουν μαζί με εσάς αυτό το θέμα.
     
  • (View-All Tα παρακάτω 0 μέλη διάβασαν αυτό το θέμα τις τελευταίες 30 μέρες:
    Μέχρι και αυτή την στιγμή δεν έχει δει το θέμα κάποιο ορατό μέλος

Βρείτε παρόμοια

Μοιραστείτε το

...με ένα φίλο

...με πολλούς φίλους