Προβλημα με arrays στη C

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

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

Απάντηση
Filby
Δημοσιεύσεις: 6
Εγγραφή: 28 Μαρ 2010 11:36

Προβλημα με arrays στη C

Δημοσίευση από Filby » 28 Μαρ 2010 11:47

Kαλησπερα παιδια,
εχω ενα προβλημα με την υλοποιηση ενος προγραμματος σε γλωσσα C.Το προγραμμα πραγματευεται τον πινακα Vigenere χρησιμοποιωντας αντι για χαρακτηρες τους αριθμους 0-9.
(http://en.wikipedia.org/wiki/Vigen%C3%A8re_cipher , για περισσοτερες πληροφοριες).
Το θεμα μου ειναι οτι ο χρηστης πρεπει να εισαγει ενα κλειδι και μια ακολουθια αριθμων για
κρυπτο-αποκρυπτογραφηση. Το μεγεθος της ακολουθιας δεν ειναι γνωστο και αφου η C δεν επιτρεπει πινακες με μεταβλητες υπαρχει καποιος τροπος να το κανω εκτος απο το να ορισω ενα μεγιστο μεγεθος?? Εσωκλειω μερος του προγραμματος οπως το εκανα πριν μαθω οτι δεν επιτρεπονται πινακες με μεταβλητο μεγεθος!

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

void number_insert (int number[digits], int digits) {
     printf("Please enter the digits of the number sequence\n");
     scanf("%d",&digits);
     printf("Please enter a number sequence\n");
     scanf("%d",&number[digits]) ; 
     }

void key_insert (int key[kdigits], int kdigits) {
     printf("Please enter the number of the digits of the key sequence\n");
     scanf("%d",&kdigits);
     printf("Please enter a key sequence\n");
     scanf("%d",&key[kdigits]);
     }

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

Προβλημα με arrays στη C

Δημοσίευση από virxen75 » 28 Μαρ 2010 15:36

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

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

όπου κολλήσεις στείλε ξανά τον διορθωμένο κώδικα και τις ερωτήσεις-απορίες σου.

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

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

int * fillArray&#40;int&#41;;
void printArray&#40;int *,int&#41;;


int * fillArray&#40;int digits&#41;&#123;//δημιουργεί ένα δυναμικό πίνακα θέσεων digits-->  int A&#91;digits&#93;
    int *A=NULL;
    int i=0;
    for &#40;i=0;i<digits;i++&#41;&#123;
        A=&#40;int *&#41; realloc&#40;A,&#40;i+1&#41;*sizeof&#40;int&#41;&#41;;
        A&#91;i&#93;=i*i;//εδώ απλά βάζω ως περιεχόμενα το τετράγωνο της θέσης του στοιχείου στον πίνακα.Εσύ βάζεις ότι θες ή 0 απλά να τον δημιουρήσεις και να τον γεμίσει άλλη συνάρτηση
    &#125;
    return A;
&#125;
void printArray&#40;int *Array,int size&#41;&#123;//τυπώνω τα δεδομένα του δυναμικού πίνακα στην οθόνη
    int i=0;
    for &#40;i=0;i<size;i++&#41;&#123;
        printf&#40;"\nA&#91;%d&#93;=%d",i,Array&#91;i&#93;&#41;;
    &#125;
&#125;

int main&#40;&#41;&#123;
    int *A;
    int size=5;
    A=fillArray&#40;size&#41;;//δημιουργώ έναν δυναμικό πίνακα θέσεων size
    printArray&#40;A,size&#41;;//τυπώνω τα δεδομένα του δυναμικού πίνακα στην οθόνη
    A&#91;0&#93;=100;//αλλάζω τιμή στην θέση 0,βάζοντας την τιμή 100
    printf&#40;"\n----------------"&#41;;
    printArray&#40;A,size&#41;;//τυπώνω τα δεδομένα του δυναμικού πίνακα στην οθόνη
    getchar&#40;&#41;;
return 0;
&#125;

Filby
Δημοσιεύσεις: 6
Εγγραφή: 28 Μαρ 2010 11:36

Προβλημα με arrays στη C

Δημοσίευση από Filby » 28 Μαρ 2010 15:41

ευχαριστω πολύ για την αμεση απαντηση σου !! :D θα το κοιταξω τωρα και αμα συναντησω αλλο προβλημα θα το ποσταρω εδω!

Απάντηση

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

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

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