προσθεση αφαιρεση c

Συζητήσεις για την γλώσσα C και C++

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
pimpogio
Δημοσιεύσεις: 1080
Εγγραφή: 28 Δεκ 2010 14:08

προσθεση αφαιρεση c

Δημοσίευση από pimpogio » 04 Μαρ 2011 21:59

με ενα loop μπορει ευκολα να το κανει να προσθέτει
πολλούς αριθμους...

gvre
Δημοσιεύσεις: 990
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

προσθεση αφαιρεση c

Δημοσίευση από gvre » 04 Μαρ 2011 22:00

Πολλά μπορεί να κάνει. Το βασικό είναι να απαντήσει ο ίδιος κάποια στιγμή.

iceemperor
Δημοσιεύσεις: 2
Εγγραφή: 22 Μαρ 2011 23:32

προσθεση αφαιρεση c

Δημοσίευση από iceemperor » 22 Μαρ 2011 23:42

Πρόσθεση δυο αριθμών με ψηφία πάνω από 100 μας ζητάει (έχω την ίδια εργασία με τον OP) να τους δίνει ο χρήστης και να γίνεται με χρήση δεικτών σε πίνακες. Παρόλο που δοκίμασα πολλές παραλαγές με δυναμική δημιουργία των πινάκων (malloc(sizeof()) το αποτέλεσμα ήταν να κρασάρει πολλές φορές το σύστημα ή να μου βγάζει τις πράξεις λάθος, έχοντας διπλοτσεκάρει και το κρατούμενο. Εν το μεταξύ έχω στείλει και στον καθηγητή μειλ αλλά βρίσκεται στο εξωτερικό σε κάποιο συνέδριο και έχουμε καταλητική ημερομηνία παράδοσης. Δεν ξέρω τι άλλο να κάνω, σε μια κίνηση εκνευρισμού τα έσβησα όλα και το αρχίζω από την αρχή. Οπότε θα εκτιμούσα πολύ τη βοήθεια σας (για το ίδιο πρόβλημα με τον Op)

Άβαταρ μέλους
virxen75
Δημοσιεύσεις: 493
Εγγραφή: 18 Φεβ 2009 00:17
Τοποθεσία: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ

προσθεση αφαιρεση c

Δημοσίευση από virxen75 » 25 Μαρ 2011 01:30

iceemperor έγραψε:Πρόσθεση δυο αριθμών με ψηφία πάνω από 100 μας ζητάει (έχω την ίδια εργασία με τον OP) να τους δίνει ο χρήστης και να γίνεται με χρήση δεικτών σε πίνακες. Παρόλο που δοκίμασα πολλές παραλαγές με δυναμική δημιουργία των πινάκων (malloc(sizeof()) το αποτέλεσμα ήταν να κρασάρει πολλές φορές το σύστημα ή να μου βγάζει τις πράξεις λάθος, έχοντας διπλοτσεκάρει και το κρατούμενο. Εν το μεταξύ έχω στείλει και στον καθηγητή μειλ αλλά βρίσκεται στο εξωτερικό σε κάποιο συνέδριο και έχουμε καταλητική ημερομηνία παράδοσης. Δεν ξέρω τι άλλο να κάνω, σε μια κίνηση εκνευρισμού τα έσβησα όλα και το αρχίζω από την αρχή. Οπότε θα εκτιμούσα πολύ τη βοήθεια σας (για το ίδιο πρόβλημα με τον Op)
ερωτήσεις
=========
1) προκειται για ακεραίους αριθμούς?
2) οι αριθμοί είναι μόνο θετικοί?


αν ναι και στις 2 ερωτήσεις τότε μπορείς να ξεκινήσεις έτσι

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

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


void readNumber&#40;char *&#41;;//διαβάζει τον αριθμό με χρήση δεικτών σε πίνακα
void removeZeros&#40;char *&#41;;//αφαιρεί τα αρχικά 0 από τον αριθμό π.χ. 000123--->123
int checkDigits&#40;char *,int&#41;;//έλεγχος ψηφίων αν είναι τα σωστά
int isNumber&#40;char *&#41;;//έλεγχος αν είναι αριθμός και δεν περιέχει χαρακτήρες
int main&#40;&#41;&#123;
    char number1&#91;512&#93;="";
    char number2&#91;512&#93;="";
    char result&#91;513&#93;="";//το αποτέλεσμα θα έχει μέχρι και 1 ψηφίο παραπάνω από τα ψηφία του μεγαλύτερου αριθμού
    int carrier=0;
    int check=0;
    int psifia1;
    int psifia2;
    printf&#40;"\npsifia ari8mou 1="&#41;;
    scanf&#40;"%d",&psifia1&#41;;getchar&#40;&#41;;
    while &#40;!check&#41;&#123;
        printf&#40;"\ndose ton ari8mo 1&#40;%d psifia&#41;&#58;",psifia1&#41;;
        readNumber&#40;number1&#41;;
        removeZeros&#40;number1&#41;;
        check=isNumber&#40;number1&#41;;
        if &#40;check>0&#41;&#123;
            check=checkDigits&#40;number1,psifia1&#41;;
        &#125;
    &#125;
    printf&#40;"\n number1--->#%s#",number1&#41;;
    
    printf&#40;"\npsifia ari8mou 2="&#41;;
    scanf&#40;"%d",&psifia2&#41;;getchar&#40;&#41;;
    check=0;
    while &#40;!check&#41;&#123;
        printf&#40;"\ndose ton ari8mo 2&#40;%d psifia&#41;&#58;",psifia2&#41;;
        readNumber&#40;number2&#41;;
        removeZeros&#40;number2&#41;;
        check=isNumber&#40;number2&#41;;
        if &#40;check>0&#41;&#123;
            check=checkDigits&#40;number2,psifia2&#41;;
        &#125;
    &#125;

    printf&#40;"\n number2--->#%s#",number2&#41;;
    getchar&#40;&#41;;
    
&#125;


void readNumber&#40;char *c1&#41;&#123;
      int i=0;
      char c;
      while&#40; &#40;c = getchar&#40;&#41;&#41; != '\n' &#41;&#123;
            c1 = &#40;char *&#41;realloc&#40;c1, i+1&#41;;
            c1&#91;i++&#93; = c;
      &#125;
      c1&#91;i&#93;='\0';
&#125;

int checkDigits&#40;char *number,int size&#41;&#123;
    if &#40;strlen&#40;number&#41;==size&#41;
        return 1;
    printf&#40;"dose ton ari8mo me ta sosta psifia!"&#41;;
    return 0;
&#125;
int isNumber&#40;char *number&#41;&#123;
    int i=0;
    while &#40;number&#91;i&#93;>='0' && number&#91;i&#93;<='9'&#41;&#123;i++;&#125;
    if &#40;strlen&#40;number&#41;==i&#41;
        return 1;
    printf&#40;"den edoses ari8mo!"&#41;;
    return 0;
&#125;
void removeZeros&#40;char *number&#41;&#123;
    int i=-1;
    int length=strlen&#40;number&#41;;
    while &#40;number&#91;++i&#93;=='0'&#41;;
    if &#40;i>0&#41;
        memmove&#40;number,number+i,length&#41;;
&#125;


pimpogio
Δημοσιεύσεις: 1080
Εγγραφή: 28 Δεκ 2010 14:08

προσθεση αφαιρεση c

Δημοσίευση από pimpogio » 25 Μαρ 2011 02:22

εχω κανει post παραδειγμα λυσης στην προηγουμενη σελιδα...
εκμεταλλεύεται την char** παραμετρο στη main
Την κοιταξες ?

iceemperor
Δημοσιεύσεις: 2
Εγγραφή: 22 Μαρ 2011 23:32

προσθεση αφαιρεση c

Δημοσίευση από iceemperor » 27 Μαρ 2011 02:23

τα κοίταξα τα παραδείγματα και σας ευχαριστώ πάρα πολύ για την βοήθεια, πραγματικά η φιλοσοφία πίσω από αυτές τις πράξεις με μπέρδευε μιας και η μεταφορά των πράξεων από το χαρτί στον κώδικα ήταν κάτι που οι περισσότεροι το θεωρούν *trivial*. Οι αριθμοί είναι integers ναι και είναι και οι δύο πάντα θετικοί σύμφωνα με την εκφώνηση της άσκησης! Επίσης κοίταξα την char** που είπες φίλε και όντως η λειτουργικότητα της είναι πολύ χρήσιμη για το παρόν πρόβλημα με βοήθησε αρκετά στην κατανόηση και επίλυση του προβλήματος!!
Σας ευχαριστώ πολύ και πάλι!

pimpogio
Δημοσιεύσεις: 1080
Εγγραφή: 28 Δεκ 2010 14:08

προσθεση αφαιρεση c

Δημοσίευση από pimpogio » 27 Μαρ 2011 16:53

αμα ξερεις να το κανεις στο χαρτι σε κωδικα μετα ειναι πολυ ευκολο

Απάντηση

Επιστροφή στο “C, C++”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες