Η σελίδα μας αναβαθμίστηκε, γι' αυτό τον λόγο τα μέλη μας θα πρέπει να ζητήσουν νέο κωδικό πρόσβασης από την υπηρεσία "Αποστολή κωδικού πρόσβασης".
Εάν το email με τον νέο κωδικό δεν έρθει στο inbox κοιτάξτε και στο spam folder. Ο server είναι φρέσκος και δεν έχει το reputation που του αξίζει.

Πρόβλημα με αναζήτηση σε δισδιάστατο πίνακα

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

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

Απάντηση
terminatorvasilis
Δημοσιεύσεις: 13
Εγγραφή: 22 Ιουν 2010 01:22

Πρόβλημα με αναζήτηση σε δισδιάστατο πίνακα

Δημοσίευση από terminatorvasilis » 30 Ιουν 2010 23:53

Καλησπέρα.Προσπαθώ να φτιάξω ένα πρόγραμμα το οποίο θα αναζητά σε δισδιάστατο πίνακα ο οποίος περιέχει ονόματα,ένα όνομα.Στη συνέχεια,μόλις το βρεί θα σταματάει το ψάξιμο και θα εμφανίζει το όνομα καθώς και σε ποιά θέση βρίσκεται.Το πρόβλημα είναι οτι μετα απο την εκχώρηση των ονομάτων στον Α ,μόλις διαβάζει το όνομα στον Β μου γράφουν τα windows ότι το πρόγραμμα πρέπει να τερματιστεί.Θα μπορούσε κάποιος να μου πεί που έχω κάνει λάθη;

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

#include <stdio.h>
int main &#40;void&#41;
&#123;
    int i,j,position1,position2,flag=0;

    char B&#91;5&#93;,A&#91;2&#93;&#91;2&#93;;

    for&#40;i=0; i<2; i++&#41;&#123;
    for&#40;j=0; j<2; j++&#41;&#123;

        printf&#40;"give a name\n"&#41;;
        scanf&#40;"%s",&A&#91;i&#93;&#91;j&#93;&#41;;
    &#125;
    &#125;


    printf&#40;"dose stoixeio pros anazitisi\n"&#41;;
    scanf&#40;"%s",&B&#91;i&#93;&#41;;
        i=0;
        j=0;
        while&#40; i<2 && j<2 &&flag==0 &#41;&#123;


        if&#40;B&#91;i&#93;==A&#91;i&#93;&#91;j&#93;&#41;&#123;
            flag=1;
            position1=i;
            position2=j;
        &#125;

        i++;
        j++;
        &#125;

            if&#40;flag==1&#41;&#123;

        printf&#40;"%s is in %i%i position",B&#91;i&#93;,position1,position2&#41;;
            &#125;
            else&#123;
                printf&#40;"den vrethike to onoma"&#41;;

&#125;
            return 0;

&#125;

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Πρόβλημα με αναζήτηση σε δισδιάστατο πίνακα

Δημοσίευση από dva_dev » 01 Ιούλ 2010 00:18

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

ΥΓ. Κανονικά θα έπρεπε να σου χτυπάει από τη στιγμή που δίνεις το 1ο κιόλας όνομα για καταχώρηση, αλλά μάλλον είσαι πιο τυχερός απ' όσο φαντάζεσαι.

terminatorvasilis
Δημοσιεύσεις: 13
Εγγραφή: 22 Ιουν 2010 01:22

Πρόβλημα με αναζήτηση σε δισδιάστατο πίνακα

Δημοσίευση από terminatorvasilis » 01 Ιούλ 2010 00:20

Oκ θα το κάνω.

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

Πρόβλημα με αναζήτηση σε δισδιάστατο πίνακα

Δημοσίευση από virxen75 » 01 Ιούλ 2010 00:31

1) μετά από κάθε scanf βάζε αμέσως μία getchar(); για να καταναλώνει το enter
2) άλλο δισδιαστατος πίνακας ακεραίων και άλλο πίνακας string
int a[2][2]; ---->char b[2][2][50] το 50 δηλώνει το μέγιστο μήκος της συμβολοσειράς
που θα εισαχθει στον 2χ2 πίνακα b
3)αυτό με το while πως σου ήρθε?
στους δισδιάστατους πίνακες ένα διπλό for είναι ότι καλύτερο
4)όταν διαβάζεις ένα string στην scanf βάζεις το όνομα του και όχι την διάσταση του
όχι δηλαδή scanf("%s",&B[5]); αλλά scanf("%s",&B);
5)σύγκριση 2 string γίνεται με την εντολή strcmp( #include <string.h> )
6)με το break σταματάμε την εκτέλεση ενός βρόγχου π.χ. for


και τέλος ο κώδικας ολοκληρωμένος είναι


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

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

int main &#40;void&#41;&#123;
    int i,j,position1,position2,flag=0;
    char B&#91;50&#93;,A&#91;2&#93;&#91;2&#93;&#91;50&#93;;

    for&#40;i=0; i<2; i++&#41;&#123;
    for&#40;j=0; j<2; j++&#41;&#123;
        printf&#40;"give a name&#40;A&#91;%d&#93;&#91;%d&#93;&#41;&#58;",i,j&#41;;
        scanf&#40;"%s",&A&#91;i&#93;&#91;j&#93;&#41;;
        getchar&#40;&#41;;
    &#125;
    &#125;


    printf&#40;"dose stoixeio pros anazitisi&#58;"&#41;;
    scanf&#40;"%s",&B&#41;;
    getchar&#40;&#41;;
        for &#40;i=0;i<2;i++&#41;
          for &#40;j=0;j<2;j++&#41;&#123;
            if&#40;strcmp&#40;B,A&#91;i&#93;&#91;j&#93;&#41;==0&#41;&#123;
                flag=1;
                position1=i;
                position2=j;
                break;
            &#125;
          &#125;
            if&#40;flag==1&#41;&#123;
               printf&#40;"%s is in %d,%d position",B,position1,position2&#41;;
            &#125;
            else&#123;
                printf&#40;"den vrethike to onoma"&#41;;
            &#125;
getchar&#40;&#41;;
            return 0;

&#125;

terminatorvasilis
Δημοσιεύσεις: 13
Εγγραφή: 22 Ιουν 2010 01:22

Πρόβλημα με αναζήτηση σε δισδιάστατο πίνακα

Δημοσίευση από terminatorvasilis » 01 Ιούλ 2010 00:49

Πράγματι τώρα δουλεύει!Σε ευχαριστώ πολύ!!Θα διαβάσω αρκετά το κεφάλαιο με τους πίνακες,δείκτες,για τη μνήμη ώστε την επόμενη φορά να έχω ένα λάθος όχι ολόκληρο πρόγραμμα :)

Απάντηση

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

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

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