Το Στέκι των Πληροφορικών

Γενικό Λύκειο => Γ΄ Λυκείου => Πολυδιάστατοι πίνακες => Μήνυμα ξεκίνησε από: elli στις 08 Μαΐου 2011, 02:14:57 ΜΜ

Τίτλος: Δισδιάστατος πίνακας χαρακτήρων
Αποστολή από: elli στις 08 Μαΐου 2011, 02:14:57 ΜΜ
Καλησπέρα σε όλους,

Είμαι φοιτήτρια και έχω εργασία στο μάθημα Τεχνολογίες Μεθοδολογίες Προγραμματισμού. Πως κάνουμε δισδιάστατο πίνακα με ονόματα?? πχ θέλω να μου εμφανίζει

νικοσ
κοστασ



Σας επισυνάπτω και μία εικόνα πιο κατανοητή. Δουλεύω στο Dev-c++ 4.9.9.2  σε γλώσσα C χωρίς πολλά πολλά.

Ευελπιστώ στην άμεση απάντησή σας.
Ελλη 
Τίτλος: Απ: Δισδιάστατος πίνακας χαρακτήρων
Αποστολή από: Stavros στις 09 Μαΐου 2011, 02:22:27 ΜΜ
Δεν μας είπες αν γνωρίζουμε όμως το μέγεθος του πίνακα. Αν τα ονόματα που θες να εισάγεις στον πίνακα είναι συγγεκριμένου αριθμού τότε:
Έστω 10 ονόματα και μέγιστο αριθμό γραμμάτων 50:
Κώδικας [Επιλογή]

#include<stdio.h>
#define N 10
#define M 50
main(){
char s[N][M];
int i;
for(i=0;i<N;i++)
     scanf("%s", s[i]);
for(i=0;i<N;i++)
     printf("%s\n", s[i]);
}

ή αυτό με την εντολή malloc:
Κώδικας [Επιλογή]
#include<stdio.h>
#include<stdlib.h>
#define N 10
main(){
char *s[N];
int i;
for(i=0;i<N;i++)
     s[i]=(char *)malloc(50*sizeof(char));
for(i=0;i<N;i++)
     scanf("%s", s[i]);
for(i=0;i<N;i++)
     printf("%s\n", s[i]);
}

Αν όμως δεν γνωρίζεις εκ των προτέρων τον αριθμό ονομάτων κτλ τότε θα πρέπει να χρησιμοποιήσεις την εντολή malloc 2 φορές.
Κώδικας [Επιλογή]

#include<stdio.h>
#include<stdlib.h>
main(){
char **s;
int i, count;
scanf("%d", &count);   
s=(char **)malloc(count*sizeof(char *));
for(i=0;i<count;i++)
    s[i]=(char *)malloc(50*sizeof(char));
for(i=0;i<count;i++)
     scanf("%s", s[i]);
for(i=0;i<count;i++)
     printf("%s\n", s[i]);
}

Γενικά αντί για 50 μπορείς να δηλώσεις έναν απλά μεγάλο αριθμό, που θα υπερκαλύπτει το μέγιστο πλήθος γραμμάτων ενός ονόματος.
Τίτλος: Απ: Δισδιάστατος πίνακας χαρακτήρων
Αποστολή από: soron80 στις 09 Μαΐου 2011, 07:57:34 ΜΜ
τι μου θύμισες τώρα............
::) ::) ::) ::)