Παραδείγματα & Ασκήσεις στην C

...ασύγχρονα μαθήματα γλώσσας C

Re: Παραδείγματα & Ασκήσεις στην C

Δημοσίευσηαπό migf1 » 11 Ιούλ 2011, 14:26

Btw, έχω ποστάρει κώδικα που διαβάζει κι αντιστρέφει ένα string, για να μπει στο 1ο ποστ.
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Παραδείγματα & Ασκήσεις στην C

Δημοσίευσηαπό linuxs » 11 Ιούλ 2011, 14:41

Θα δώ τον δικό σου αλλα μπορώ να το επεκτείνω και αν θέλω και άλλο χωρο να παω με realloc()...είναι το πως ακριβώς θέλεις να το κάνεις! ;) Εγώ το αφήνω έτσι γιατί κάνω μια ιστοσελίδα αυτή τη στιγμή και βλέπουμε. Θα το βάλω στο πρώτο post μην ανησυχείς!
Αν το πρόβλημά μας επιλυθεί. Επιλέγουμε το θέμα που βοήθησε στην επίλυση και πατάμε το κουμπάκι Εικόνα.
Γνώσεις ⇛ Linux: Μέτριο┃Προγραμματισμός: C┃Αγγλικά: Καλά
Λειτουργικό ⇛ Linux Ubuntu 10.4 LTS
Προδιαγραφές ⇛ Intel Pentium @T4500 2.3GHz│ 512GB VRAM│ 500 HDD│ ATI RADEON HD545v 512 MB │ Screen: 15.6''
Άβαταρ μέλους
linuxs
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1060
Εγγραφή: 02 Ιούλ 2010, 13:19
Τοποθεσία: GR
IRC: linuxs
Εκτύπωση

Re: Παραδείγματα & Ασκήσεις στην C

Δημοσίευσηαπό Qdata » 11 Ιούλ 2011, 14:43

Να βάλω και εγώ ένα. :) Το βρήκα σε ένα φόρουμ:
έγραψε:Να γραφεί πρόγραμμα που να διαβάζει αριθμούς μέχρι να διαβαστεί ο αριθμός 999 οπότε σταματά η διαδικασία ανάγνωσης. Για τον λόγο αυτό να γίνει χρήση της εντολής do while. Να εμφανίζεται το άθροισμα των διψήφιων αριθμών, θετικών και αρνητικών που εισήχθησαν στον υπολογιστή καθώς και το πλήθος των αριθμών που εισήχθησαν συνολικά.
Linux User: #530165
Γνώσεις ⇛ Linux: Μέτριο ┃ Προγραμματισμός: Ναι ┃ Αγγλικά: Καλά
Λειτουργικό ⇛ Ubuntu 11.04 32bit σε Intel(R) Atom(TM) CPU N270 @ 1.60GHz
(Notebook) Προδιαγραφές ⇛ 2x Intel(R) Atom(TM) CPU N270 @ 1.60GHz │ 1016MB │ HDA-Intel - HDA Intel -- USB-Audio - USB AUDIO│ 1024x600 pixels
Νέος στο Linux?Οδηγοί - How to - Tutorials
Qdata
powerTUX
powerTUX
 
Δημοσιεύσεις: 1875
Εγγραφή: 18 Ιουν 2010, 19:40
Τοποθεσία: Σέρρες
IRC: dimos
Εκτύπωση

Re: Παραδείγματα & Ασκήσεις στην C

Δημοσίευσηαπό migf1 » 11 Ιούλ 2011, 15:02

Qdata έγραψε:Να βάλω και εγώ ένα. :) Το βρήκα σε ένα φόρουμ:
έγραψε:Να γραφεί πρόγραμμα που να διαβάζει αριθμούς μέχρι να διαβαστεί ο αριθμός 999 οπότε σταματά η διαδικασία ανάγνωσης. Για τον λόγο αυτό να γίνει χρήση της εντολής do while. Να εμφανίζεται το άθροισμα των διψήφιων αριθμών, θετικών και αρνητικών που εισήχθησαν στον υπολογιστή καθώς και το πλήθος των αριθμών που εισήχθησαν συνολικά.


Κώδικας: Επιλογή όλων

/* Από: migf1
Να γραφεί πρόγραμμα που να διαβάζει αριθμούς μέχρι να διαβαστεί ο αριθμός 999 οπότε σταματά η διαδικασία ανάγνωσης. Για τον λόγο αυτό να γίνει χρήση της εντολής do while. Να εμφανίζεται το άθροισμα των διψήφιων αριθμών, θετικών και αρνητικών που εισήχθησαν στον υπολογιστή καθώς και το πλήθος των αριθμών που εισήχθησαν συνολικά.
*/

#include <stdio.h>
#include <stdlib.h>

#define ABS(x) ( (x) > 0 ? (x) : -(x) )
// ----------------------------------------------------------------------------------------
int main( void )
{
int num, sum2=0, total=0;

do {
printf("Enter number #%d: ", total+1);
scanf("%d", &num);
if ( ABS(num) > 9 && ABS(num) < 100 ) // 2-digit number
sum2 += num;
total++;
} while (num != 999);

printf("\nYou entered %d numbers.\n", total);
printf("The sum of the 2-digit ones amongst them was: %d\n", sum2);

fflush(stdin); getchar();
exit( EXIT_SUCCESS );
}
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Παραδείγματα & Ασκήσεις στην C

Δημοσίευσηαπό migf1 » 11 Ιούλ 2011, 15:06

linuxs έγραψε:Θα δώ τον δικό σου αλλα μπορώ να το επεκτείνω και αν θέλω και άλλο χωρο να παω με realloc()...είναι το πως ακριβώς θέλεις να το κάνεις! ;) Εγώ το αφήνω έτσι γιατί κάνω μια ιστοσελίδα αυτή τη στιγμή και βλέπουμε. Θα το βάλω στο πρώτο post μην ανησυχείς!

Ας περιμένουμε και τον φίλο maenolis.
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Παραδείγματα & Ασκήσεις στην C

Δημοσίευσηαπό linuxs » 11 Ιούλ 2011, 15:10

migf1 έγραψε:
linuxs έγραψε:Θα δώ τον δικό σου αλλα μπορώ να το επεκτείνω και αν θέλω και άλλο χωρο να παω με realloc()...είναι το πως ακριβώς θέλεις να το κάνεις! ;) Εγώ το αφήνω έτσι γιατί κάνω μια ιστοσελίδα αυτή τη στιγμή και βλέπουμε. Θα το βάλω στο πρώτο post μην ανησυχείς!

Ας περιμένουμε και τον φίλο maenolis.


Ναι φυσικά! ;)
Αν το πρόβλημά μας επιλυθεί. Επιλέγουμε το θέμα που βοήθησε στην επίλυση και πατάμε το κουμπάκι Εικόνα.
Γνώσεις ⇛ Linux: Μέτριο┃Προγραμματισμός: C┃Αγγλικά: Καλά
Λειτουργικό ⇛ Linux Ubuntu 10.4 LTS
Προδιαγραφές ⇛ Intel Pentium @T4500 2.3GHz│ 512GB VRAM│ 500 HDD│ ATI RADEON HD545v 512 MB │ Screen: 15.6''
Άβαταρ μέλους
linuxs
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1060
Εγγραφή: 02 Ιούλ 2010, 13:19
Τοποθεσία: GR
IRC: linuxs
Εκτύπωση

Re: Παραδείγματα & Ασκήσεις στην C

Δημοσίευσηαπό linuxs » 11 Ιούλ 2011, 15:12

Qdata έγραψε:Να βάλω και εγώ ένα. :) Το βρήκα σε ένα φόρουμ:
έγραψε:Να γραφεί πρόγραμμα που να διαβάζει αριθμούς μέχρι να διαβαστεί ο αριθμός 999 οπότε σταματά η διαδικασία ανάγνωσης. Για τον λόγο αυτό να γίνει χρήση της εντολής do while. Να εμφανίζεται το άθροισμα των διψήφιων αριθμών, θετικών και αρνητικών που εισήχθησαν στον υπολογιστή καθώς και το πλήθος των αριθμών που εισήχθησαν συνολικά.


ΟΚ! Δεν νομίζω οτι είναι κάτι το δύσκολο... ;) Να βάλω εγώ μια άσκηση? Να γράψετε το παραπάνω πρόγραμμα σε λιγότερες γραμμές απο τον migf1. :lol: :lol: :P
Αν το πρόβλημά μας επιλυθεί. Επιλέγουμε το θέμα που βοήθησε στην επίλυση και πατάμε το κουμπάκι Εικόνα.
Γνώσεις ⇛ Linux: Μέτριο┃Προγραμματισμός: C┃Αγγλικά: Καλά
Λειτουργικό ⇛ Linux Ubuntu 10.4 LTS
Προδιαγραφές ⇛ Intel Pentium @T4500 2.3GHz│ 512GB VRAM│ 500 HDD│ ATI RADEON HD545v 512 MB │ Screen: 15.6''
Άβαταρ μέλους
linuxs
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1060
Εγγραφή: 02 Ιούλ 2010, 13:19
Τοποθεσία: GR
IRC: linuxs
Εκτύπωση

Re: Παραδείγματα & Ασκήσεις στην C

Δημοσίευσηαπό migf1 » 11 Ιούλ 2011, 15:22

:lol: :lol:
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Παραδείγματα & Ασκήσεις στην C

Δημοσίευσηαπό Qdata » 11 Ιούλ 2011, 16:12

linuxs έγραψε:
ΟΚ! Δεν νομίζω οτι είναι κάτι το δύσκολο... ;) Να βάλω εγώ μια άσκηση? Να γράψετε το παραπάνω πρόγραμμα σε λιγότερες γραμμές απο τον migf1. :lol: :lol: :P


Κώδικας: Επιλογή όλων
#include <stdio.h>
int main(int args, char **argv)
{
int sum = 0, population = 0, number, twodigits = 0;
do {
printf("Δώστε έναν αριθμό: ");
scanf("%d", &number);
population++;
if (number < 100 && number > -100 && number > 10){
twodigits++;
sum += number;
}
}while(number != 999);
printf("Δώσατε %d αριθμούς!\n", population);
printf("Οι διψήφιοι ήταν %d και είχαν άθροισμα %d!\n", twodigits, sum);
return 0;
}


Αν θέλετε ακόμα λιγότερες σειρές λύνεται και έτσι:
Κώδικας: Επιλογή όλων
#include <stdio.h>
int main(int args, char **argv){int sum = 0, population = 0, number, twodigits = 0;do {printf("Δώστε έναν αριθμό: ");scanf("%d", &number);population++;if (number < 100 && number > -100 && number > 10){twodigits++;sum += number;}}while(number != 999);printf("Δώσατε %d αριθμούς!\n", population);printf("Οι διψήφιοι ήταν %d και είχαν άθροισμα %d!\n", twodigits, sum);return 0;}


:P
Linux User: #530165
Γνώσεις ⇛ Linux: Μέτριο ┃ Προγραμματισμός: Ναι ┃ Αγγλικά: Καλά
Λειτουργικό ⇛ Ubuntu 11.04 32bit σε Intel(R) Atom(TM) CPU N270 @ 1.60GHz
(Notebook) Προδιαγραφές ⇛ 2x Intel(R) Atom(TM) CPU N270 @ 1.60GHz │ 1016MB │ HDA-Intel - HDA Intel -- USB-Audio - USB AUDIO│ 1024x600 pixels
Νέος στο Linux?Οδηγοί - How to - Tutorials
Qdata
powerTUX
powerTUX
 
Δημοσιεύσεις: 1875
Εγγραφή: 18 Ιουν 2010, 19:40
Τοποθεσία: Σέρρες
IRC: dimos
Εκτύπωση

Re: Παραδείγματα & Ασκήσεις στην C

Δημοσίευσηαπό migf1 » 11 Ιούλ 2011, 16:27

Βασικά έκανε πλάκα ο linuxs ;)

Το πρόγραμμά σου φίλε Qdata δεν δουλεύει σωστά. Π.χ. δοκίμασέ το με είσοδο: -10, 999
Ούτε είναι λιγότερες γραμμές, είναι 12 έναντι 11 του δικού μου, αλλά εσύ υπολογίζεις μια ακόμα μεταβλητή, το πλήθος των διψήφιων (που εγώ δεν το υπολογίζω, δεν κατάλαβα ότι το ζητάει η εκφώνηση). Άρα είναι ίδιες γραμμές, αφού το ότι εσύ χρησιμοποιείς return αντί για exit και ότι δεν βάζεις γραμμή που να ζητάει από τον χρήστη να πατήσει ENTER πριν τον τερματισμό δεν λογίζονται γραμμές για την επίλυση της άσκησης.

Γενικώς πάντως ο compiler διαγράφει όλα τα κενά (χαρακτήρες και γραμμές) πριν ξεκινήσει το compilation, οπότε το να έχει κάποιος παραπάνω κενές γραμμές η πιο αραιή σύνταξη στον κώδικά του δεν επηρεάζει σε τίποτα την ταχύτητα εκτέλεσης του προγράμματος (καθυστερεί λίγο παραπάνω το compilation). Οπότε η τελευταία παραλλαγή που παραθέτεις, επί της ουσίας απλά κάνει τελείως δυσανάγνωστο τον κώδικα χωρίς καμία ουσιαστική ωφέλεια.
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

ΠροηγούμενηΕπόμενο

  • ΣΧΕΤΙΚΑ ΘΕΜΑΤΑ
    ΑΠΑΝΤΗΣΕΙΣ
    ΠΡΟΒΟΛΕΣ
    ΣΥΓΓΡΑΦΕΑΣ

Επιστροφή στο Μαθήματα C

cron