Δισδιάστατος πίνακας χαρακτήρων

Ξεκίνησε από elli, 08 Μαΐου 2011, 02:14:57 ΜΜ

« προηγούμενο - επόμενο »

elli

Καλησπέρα σε όλους,

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

νικοσ
κοστασ



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

Ευελπιστώ στην άμεση απάντησή σας.
Ελλη 

Stavros

#1
Δεν μας είπες αν γνωρίζουμε όμως το μέγεθος του πίνακα. Αν τα ονόματα που θες να εισάγεις στον πίνακα είναι συγγεκριμένου αριθμού τότε:
Έστω 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 μπορείς να δηλώσεις έναν απλά μεγάλο αριθμό, που θα υπερκαλύπτει το μέγιστο πλήθος γραμμάτων ενός ονόματος.
Stavros
3ετής φοιτητής πληροφορικής


Το νέο φοιτητικό site
www.universitas.gr
www.csforces.gr/forums
All about computers!!!
Join us!!!!

soron80

Τσισπαράς Βασίλης
Καθηγητής Πληροφορικής ΠΕ19