ΚΕΦΑΛΑΙΟ 9 - ΠΙΝΑΚΕΣ

...ασύγχρονα μαθήματα γλώσσας C

ΚΕΦΑΛΑΙΟ 9 - ΠΙΝΑΚΕΣ

Δημοσίευσηαπό linuxs » 15 Μαρ 2011, 23:21

ΚΕΦΑΛΑΙΟ 9 - Πίνακες

τι περιέχει αυτό το κεφάλαιο...
Ας ξεκινήσουμε με τον ορισμό ενός πίνακα. Πίνακας είναι μια ομάδα απο στοιχεία που έχουν κοινό τύπο! Η C μας δίνει την ευκολία να χρησιμοποιούμε πίνακες όταν έχουμε ασκήσεις με ίδιο τύπο δεδομένων. Αυτό είναι σημαντικό και θα εξηγήσω γιατί! Όταν δημιουργούμε έναν πίνακα δεν μπορούμε να πούμε για παράδειγμα ότι το πρώτο στοιχείο θα είναι ακέραιος, το δεύτερο ένας χαρακτήρας και το τρίτο πάλι ακέραιος! Σε έναν πίνακα πρέπει υποχρεωτικά όλα τα στοιχεία του να είναι ΙΔΙΟΥ ΤΥΠΟΥ! Έτσι αν αποφασίουμε απο την αρχή να έχουμε ένα πίνακα με ακεραίους όλα τα στοιχεία θα είναι ακέραιοι (integers). Αυτή ήταν και η πιο σημαντική ιδιότητα ενός πίνακα. Τώρα, υπάρχουν δύο τύποι πινάκων. Οι στατικοί και οι δυναμικοί. Τι είναι το καθένα? Οι στατικοί πίνακες είναι αυτοί που ορίζονται απο την αρχή του προγράμματος μας δηλαδή όταν ορίζουμε τις μεταβλητές σε καποιο σημείο απο κάτω ορίζουμε και τον πίνακα και το ΜΕΓΕΘΟΣ ΤΟΥ ΔΕΝ ΑΛΛΑΖΕΙ. Με άλλα λόγια σε όλο το πρόγραμμα ο πίνακας θα έχει μέγεθος n ή nxn, ανάλογα την διάσταση. Ο δυναμικός πίνακας απο την άλλη όπως λέει και το πρόγραμμα μπορεί να αλλάξει μέγεθος. Είναι πολύ χρήσιμο γιατί μπορεί να μην ξέρουμε εξ-αρχής το μέγεθος ενός πίνακα, έτσι βάζουμε ένα αυθαίρετο και αργοτερα κάνουμε έναν έλεγχο. Εάν δεν μας "βολεύει" το τρέχων μέγεθος το αυξάνουμε με κατάληλα εργαλεία(θα το δούμε αργότερα αυτό). Θα καταλήξω στο ότι και οι δύο τρόποι είναι χρήσιμοι ανάλογα με το πρόβλημα. Βέβαια απο επίπεδο χρήστη ο στατικός είναι πιό εύκολος να δημιουργηθεί (για έναν αρχάριο ακόμη προγραμματιστή). Νομίζω ότι είναι αρκετά αυτά για μια εισαγωγή οπότε συνεχίζω να σας δείξω πως δημιουργούμε πίνακες. Προσέξτε πως οι παρακάτω τρόποι είναι ενδεικτικοί και βεβαίως κάποιος μπορεί να έχει το ίδιο αποτέλεσμα με διαφορετικό τρόπο.

Σαν σχήμα πιστεύω πως όλοι ξέρουμε τί είναι ένας πίνακας. Κάποια κολλημένα κουτάκια! Οπότε έστω πως έχουμε έναν πίνακα
Εικόνα
έγραψε:κάτι που ξέχασα και είναι τρομερά σημαντικό να αναφέρω!

ΣΤΗΝ C ΜΕΤΡΑΜΕ ΑΠΟ ΤΟ ΜΗΔΕΝ ! ! !

κάθε κουτάκι μέσα έχει μια τιμή. Είτε αυτή είναι NULL(τίποτα δηλαδή) είτε κάτι άλλο(μπορεί να είναι και χαρακτήρας!). Για να προσπελάσουμε(να δούμε) το τί έχει κάποιο κουτάκι χρησιμοποιούμε το όνομα του πίνακα και μετά το κελί. Δηλαδή στο παραπάνω παράδειγμα,
Κώδικας: Επιλογή όλων

Α[0]=1;
Α[1]=3;
Α[2]=5;
Α[3]=5;
Α[4]=100;


Εάν θέλουμε να αλλάξουμε κάποια τιμή πως θα το κάνουμε? Πολύ απλά με,
Κώδικας: Επιλογή όλων
Α[0]=3;

έχουμε στο πρώτο μας κελί αντί για 1, 3 κοκ Δέν νομίζω πως είναι κάτι το τρομερό οπότε δεν θα επιμείνω! Αντίστοιχα δουλεύουμε και με διδιάστατους πίνακες μόνο που, στους διδιάστατους πίνακες κάθε κελί χαρακτηρίζεται απο το όνομα που πίνακα όπως και παραπάνω και μετά βάλουμε δύο μεταβλητές. Μία για τις γραμμές και μία για τις στήλες! Με άλλα λόγια για να προσπελάσουμε το κελί με γραμμή μηδέν και στήλη 4 και να του εκχωρείσουμε την τιμή 83 γράφουμε,
Κώδικας: Επιλογή όλων
Α[0][4]=83;


Πρόσέξτε πως τα i & j που συνήθως χρησιμοποιούμε μέσα στο for loop δεν είναι τίποτα άλλο απο μεταβλητές! Έχετε στο νού σας αυτή τη πρόταση! Αυτό που θέλω να πώ μπορούμε να διατρέξουμε για παράδειγμα μόνο την πρώτη στήλη έχοντας σταθερό το j(μεταβλητή που παίρνει τιμές για τις στήλες) θα κάνουμε κάτι σαν,

Κώδικας: Επιλογή όλων
for(i=0; i<n; i++){ /* τρέχουμε για κάθε γραμμή με την μεταβλητή i καθώς το j είναι σταθερό */
A[ i ][ 0 ] = value; /* εκχωρούμε σε κάθε γραμμή αρχίζοντας απο το 0 μια τιμή. Αντί για value βάλτε 4; και θα έχετε όλη την πρώτη στήλη γεμάτη με 4άρια! */
}


Είδατε? Δεν χρειάζεται να "παίζουμε" πάντα δύο for! Προσπαθήστε να πιάσετε την πρόταση που είπα παραπάνω και θα τους παίζετε στα δάχτυλα σε λίγο...

Πίνακες στην γλώσσα προγραμματισμού C χωρίζονται σε δύο κατηγορίες:
α) Στατικοί πίνακες
β) Δυναμικοί πίνακες

έγραψε:Μια μικρή επανάληψη με τους ορισμούς...

Στατικοί πίνακες...
Είναι οι πίνακες που όπως λέει και η λεξη έχουν μια στατική ή σταθερή δομή απο όταν αρχίζει το πρόγραμμά μας μέχρι να τελειώσει.

Δυναμικοί πίνακες...
Αντίθετα με τους στατικούς, οι δυναμικοί προσφέρουν τη δυνατότητα στο χρήστη να μεταβάλλει το μέγεθός τους. πχ. εάν έχουμε έναν πίνακα 3x2 ΔΥΝΑΜΙΚΑ φτιαγμένο μπορούμε να τον αλλάξουμε σε 8x10!

έγραψε:Θα ασχοληθούμε μόνο με μονοδιάστατους και διδιάστατους πίνακες γιατί περισσότερες διαστάσεις ξεφεύγουν απο το ανθρώπινο νού και είναι ποιό δύσκολο να τις φανταστούμε. Τέλοςπάντων δύσκολα θα πέσει άκσηση με 3++ διαστάσεις.

Δημιουργία μονοδιάστατου πίνακα
Κώδικας: Επιλογή όλων

/* Δημιουργία μονοδιάσταστου πίνακα Α */
/* Δώστε τιμές στον πίνακα */
#include <stdio.h>
#include <stdlib.h>
#define n 5
int main(void){
int i, number;
int A[n];

printf("Please type numbers for the A array:n");
for(i=0; i<n; i++){
printf("A[%d]: n", i);
scanf("%d", &number);
A[i]=number;
}

for(i=0; i<n; i++){
printf("A[%d]: %dn", i, A[i]);
}

return 0;
}


Δημιουργία διδιάστατου πίνακα
Κώδικας: Επιλογή όλων

/* Δημιουργία διδιάστατου πίνακα B */
/* Δώστε τιμές στον πίνακα */
#include <stdio.h>
#include <stdlib.h>
#define n 3
#define m 2
int main(void){
int i, j, number;
int B[n][m];

printf("Please type numbers for the B array:n");
for(i=0; i<n; i++){
for(j=0; j<m; j++){
printf("B[%d][%d]: n", i, j);
scanf("%d", &number);
B[i][j]=number;
}
}

for(i=0; i<n; i++){
for(j=0; j<m; j++){
printf("B[%d][%d]: %dn", i, j, B[i][j]);
}
}

return 0;
}


Δημιουργία μονοδιάστατου πίνακα(δυναμικά)
Κώδικας: Επιλογή όλων

/* Δημιουργία μονοδιάστατου πίνακα B δυναμικά*/
/* Δώστε τιμές στον πίνακα */
#include <stdio.h>
#include <stdlib.h>
#define n 3
int main(void){
int i, number;
int *B;

B=(int *)malloc(n*sizeof(int));

printf("Please type numbers for the B dynamic array:n");
for(i=0; i<n; i++){
printf("B[%d]: n", i);
scanf("%d", &number);
B[i]=number;
}

for(i=0; i<n; i++){
printf("B[%d]: %dn", i, B[i]);
}

return 0;
}


Δημιουργία διδιάστατου πίνακα(δυναμικά)
Κώδικας: Επιλογή όλων

/* Δημιουργία διδιάστατου πίνακα B δυναμικά*/
/* Δώστε τιμές στον πίνακα */
#include <stdio.h>
#include <stdlib.h>
#define n 3
#define m 2
int main(void){
int i, j, number;
int **B;

B=(int **)malloc(n*sizeof(int *));
for(i=0; i<n; i++){
B[i]=(int *)malloc(m*sizeof(int));
}

printf("Please type numbers for the B dynamic array:n");
for(i=0; i<n; i++){
for(j=0; j<m; j++){
printf("B[%d][%d]: n", i, j);
scanf("%d", &number);
B[i][j]=number;
}
}

for(i=0; i<n; i++){
for(j=0; j<m; j++){
printf("B[%d][%d]: %dn", i, j, B[i][j]);
}
}

return 0;
}


Σχετικά με την malloc που βλέπετε παραπάνω μπορείτε να δείτε περισσότερες πληροφορίες στο http://forum.ubuntu-gr.org/viewtopic.php?f=61&t=17400&p=175538#p175538

ΚΑΛΗ ΣΥΝΕΧΕΙΑ ! ! !
Τελευταία επεξεργασία από linuxs και 21 Ιουν 2011, 14:55, έχει επεξεργασθεί 2 φορά/ες συνολικά
Αν το πρόβλημά μας επιλυθεί. Επιλέγουμε το θέμα που βοήθησε στην επίλυση και πατάμε το κουμπάκι Εικόνα.
Γνώσεις ⇛ Linux: Μέτριο┃Προγραμματισμός: C┃Αγγλικά: Καλά
Λειτουργικό ⇛ Linux Ubuntu 10.4 LTS
Προδιαγραφές ⇛ Intel Pentium @T4500 2.3GHz│ 512GB VRAM│ 500 HDD│ ATI RADEON HD545v 512 MB │ Screen: 15.6''
Άβαταρ μέλους
linuxs
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1060
Εγγραφή: 02 Ιούλ 2010, 13:19
Τοποθεσία: GR
IRC: linuxs
Εκτύπωση

Re: ΚΕΦΑΛΑΙΟ 9 - ΠΙΝΑΚΕΣ

Δημοσίευσηαπό stamatiou » 21 Ιουν 2011, 12:32

Όταν τρέχω το
Κώδικας: Επιλογή όλων
/* Δημιουργία μονοδιάστατου πίνακα B δυναμικά*/
/* Δώστε τιμές στον πίνακα */
[COLOR="DarkGreen"]#include <stdio.h>
#include <stdlib.h>
#define n 3
int main(void){
int i, number;
int *B;

B=(int *)malloc(n*sizeof(int));

printf("Please type numbers for the B dynamic array:n");
for(i=0; i<n; i++){
printf("B[%d]: n", i);
scanf("%d", &number);
B[i]=number;
}

for(i=0; i<n; i++){
printf("B[%d]: %dn", i, B[i]);
}

return 0;
}

στο τέρμιναλ μου βγάζει error:
Spoiler: show
arrays.c:3:1: error: expected identifier or ‘(’ before ‘[’ token
arrays.c:3:1: error: stray ‘#’ in program
In file included from arrays.c:4:0:
/usr/include/stdlib.h:140:15: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘__ctype_get_mb_cur_max’
In file included from arrays.c:4:0:
/usr/include/stdlib.h:337:4: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:367:4: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:369:6: error: nonnull argument with out-of-range operand number (argument 1, operand 4)
/usr/include/stdlib.h:471:29: error: expected ‘)’ before ‘__size’
/usr/include/stdlib.h:473:29: error: expected ‘)’ before ‘__nmemb’
/usr/include/stdlib.h:485:36: error: expected declaration specifiers or ‘...’ before ‘size_t’
In file included from /usr/include/stdlib.h:497:0,
from arrays.c:4:
/usr/include/alloca.h:33:29: error: expected ‘)’ before ‘__size’
In file included from arrays.c:4:0:
/usr/include/stdlib.h:503:29: error: expected ‘)’ before ‘__size’
/usr/include/stdlib.h:508:45: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:508:65: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:756:9: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:756:25: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:757:6: error: nonnull argument with out-of-range operand number (argument 1, operand 5)
/usr/include/stdlib.h:761:34: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:761:50: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:762:6: error: nonnull argument with out-of-range operand number (argument 1, operand 4)
/usr/include/stdlib.h:840:6: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:843:6: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:847:31: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:851:31: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:860:38: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:864:36: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:871:15: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘mbstowcs’
/usr/include/stdlib.h:874:15: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘wcstombs’
arrays.c: In function ‘main’:
arrays.c:10:17: warning: incompatible implicit declaration of built-in function ‘printf’
arrays.c:13:25: warning: incompatible implicit declaration of built-in function ‘scanf’
1Γνώσεις→Linux: Αρχάριος┃Προγραμματισμός:Αρχάριος┃Αγγλικά:Μέτριος
2Λειτουργικό→Arch Linxu 32bit
3Προδιαγραφές→2x AMD AthlonX2 DualCore QL-66 ‖ RAM 1751 MiB ‖ Hewlett-Packard 308C - Hewlett-Packard Compaq 615
4Κάρτες γραφικών:ATI RS780M/RS780MN [Radeon HD 3200 Graphics][1002:9612]
5Δίκτυα:eth0:Marvell 88E8042 PCI-E Fast Ethernet Controller [11ab:4357] (rev 10)⋮eth1: Broadcom BCM4312 802.11b/g LP-PHY [14e4:4315](rev 01)
Πρωσοπική Ιστοσελίδα: http://giwrg98.co.cc
Άβαταρ μέλους
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

Re: ΚΕΦΑΛΑΙΟ 9 - ΠΙΝΑΚΕΣ

Δημοσίευσηαπό konnn » 21 Ιουν 2011, 13:02

Κώδικας: Επιλογή όλων
/* Δημιουργία μονοδιάστατου πίνακα B δυναμικά*/
/* Δώστε τιμές στον πίνακα */
//COLOR "DarkGreen";
#include <stdio.h>
#include <stdlib.h>
#define n 3
int main(void){
int i, number;
int *B;

B=(int *)malloc(n*sizeof(int));

printf("Please type numbers for the B dynamic array:n");
for(i=0; i<n; i++){
printf("B[%d]: n", i);
scanf("%d", &number);
B[i]=number;
}

for(i=0; i<n; i++){
printf("B[%d]: %dn", i, B[i]);
}

return 0;
}
1 Linux: Μέτριος ┃ Προγραμματισμός: Μέτριος ┃ Αγγλικά: Προχωρημένος
2 Desktop : Ubuntu 16.04 64bit
a Intel Core i3 CPU 530 2.93GHz ‖ RAM 3824 MiB ‖ Intel DH55HC -
b nVidia Device [10de:1040] (rev a1)
c eth0: Intel 82578DC Gigabit Network Connection
3 Notebook : Ubuntu 16.04 64 bit
a Intel Core i3-2365M CPU @ 1.40GHz ‖ RAM 3854 MiB ‖ LENOVO 20197
b Intel 2nd Generation Core Processor Family Integrated Graphics Controller
c 5 wlan0: Intel Centrino Wireless-N 2230 ⋮ eth0: Realtek RTL8101E/RTL8102E

Αυτόματη υπογραφή.
Άβαταρ μέλους
konnn
Συντονιστής
Συντονιστής
 
Δημοσιεύσεις: 3568
Εγγραφή: 12 Ιούλ 2010, 17:54
Τοποθεσία: Καλαμάτα
Launchpad: konnn
Εκτύπωση

Re: ΚΕΦΑΛΑΙΟ 9 - ΠΙΝΑΚΕΣ

Δημοσίευσηαπό linuxs » 21 Ιουν 2011, 14:43

stamatiou έγραψε:Όταν τρέχω το
Κώδικας: Επιλογή όλων
/* Δημιουργία μονοδιάστατου πίνακα B δυναμικά*/
/* Δώστε τιμές στον πίνακα */
[COLOR="DarkGreen"]#include <stdio.h>
#include <stdlib.h>
#define n 3
int main(void){
int i, number;
int *B;

B=(int *)malloc(n*sizeof(int));

printf("Please type numbers for the B dynamic array:n");
for(i=0; i<n; i++){
printf("B[%d]: n", i);
scanf("%d", &number);
B[i]=number;
}

for(i=0; i<n; i++){
printf("B[%d]: %dn", i, B[i]);
}

return 0;
}

στο τέρμιναλ μου βγάζει error:
Spoiler: show
arrays.c:3:1: error: expected identifier or ‘(’ before ‘[’ token
arrays.c:3:1: error: stray ‘#’ in program
In file included from arrays.c:4:0:
/usr/include/stdlib.h:140:15: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘__ctype_get_mb_cur_max’
In file included from arrays.c:4:0:
/usr/include/stdlib.h:337:4: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:367:4: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:369:6: error: nonnull argument with out-of-range operand number (argument 1, operand 4)
/usr/include/stdlib.h:471:29: error: expected ‘)’ before ‘__size’
/usr/include/stdlib.h:473:29: error: expected ‘)’ before ‘__nmemb’
/usr/include/stdlib.h:485:36: error: expected declaration specifiers or ‘...’ before ‘size_t’
In file included from /usr/include/stdlib.h:497:0,
from arrays.c:4:
/usr/include/alloca.h:33:29: error: expected ‘)’ before ‘__size’
In file included from arrays.c:4:0:
/usr/include/stdlib.h:503:29: error: expected ‘)’ before ‘__size’
/usr/include/stdlib.h:508:45: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:508:65: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:756:9: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:756:25: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:757:6: error: nonnull argument with out-of-range operand number (argument 1, operand 5)
/usr/include/stdlib.h:761:34: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:761:50: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:762:6: error: nonnull argument with out-of-range operand number (argument 1, operand 4)
/usr/include/stdlib.h:840:6: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:843:6: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:847:31: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:851:31: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:860:38: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:864:36: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:871:15: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘mbstowcs’
/usr/include/stdlib.h:874:15: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘wcstombs’
arrays.c: In function ‘main’:
arrays.c:10:17: warning: incompatible implicit declaration of built-in function ‘printf’
arrays.c:13:25: warning: incompatible implicit declaration of built-in function ‘scanf’

Σε ευχαριστώ για την παρατήρηση. Είχα ξεχαστεί κάποια BBcodes επειδή το ήθελα πράσινο αλλα μάλλον δεν έγιναν μέσα στο [code] [/code)...
Είναι σωστό τώρα.
Αν το πρόβλημά μας επιλυθεί. Επιλέγουμε το θέμα που βοήθησε στην επίλυση και πατάμε το κουμπάκι Εικόνα.
Γνώσεις ⇛ Linux: Μέτριο┃Προγραμματισμός: C┃Αγγλικά: Καλά
Λειτουργικό ⇛ Linux Ubuntu 10.4 LTS
Προδιαγραφές ⇛ Intel Pentium @T4500 2.3GHz│ 512GB VRAM│ 500 HDD│ ATI RADEON HD545v 512 MB │ Screen: 15.6''
Άβαταρ μέλους
linuxs
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1060
Εγγραφή: 02 Ιούλ 2010, 13:19
Τοποθεσία: GR
IRC: linuxs
Εκτύπωση

Re: ΚΕΦΑΛΑΙΟ 9 - ΠΙΝΑΚΕΣ

Δημοσίευσηαπό linuxs » 21 Ιουν 2011, 14:43

stamatiou έγραψε:Όταν τρέχω το
Κώδικας: Επιλογή όλων
/* Δημιουργία μονοδιάστατου πίνακα B δυναμικά*/
/* Δώστε τιμές στον πίνακα */
[COLOR="DarkGreen"]#include <stdio.h>
#include <stdlib.h>
#define n 3
int main(void){
int i, number;
int *B;

B=(int *)malloc(n*sizeof(int));

printf("Please type numbers for the B dynamic array:n");
for(i=0; i<n; i++){
printf("B[%d]: n", i);
scanf("%d", &number);
B[i]=number;
}

for(i=0; i<n; i++){
printf("B[%d]: %dn", i, B[i]);
}

return 0;
}

στο τέρμιναλ μου βγάζει error:
Spoiler: show
arrays.c:3:1: error: expected identifier or ‘(’ before ‘[’ token
arrays.c:3:1: error: stray ‘#’ in program
In file included from arrays.c:4:0:
/usr/include/stdlib.h:140:15: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘__ctype_get_mb_cur_max’
In file included from arrays.c:4:0:
/usr/include/stdlib.h:337:4: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:367:4: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:369:6: error: nonnull argument with out-of-range operand number (argument 1, operand 4)
/usr/include/stdlib.h:471:29: error: expected ‘)’ before ‘__size’
/usr/include/stdlib.h:473:29: error: expected ‘)’ before ‘__nmemb’
/usr/include/stdlib.h:485:36: error: expected declaration specifiers or ‘...’ before ‘size_t’
In file included from /usr/include/stdlib.h:497:0,
from arrays.c:4:
/usr/include/alloca.h:33:29: error: expected ‘)’ before ‘__size’
In file included from arrays.c:4:0:
/usr/include/stdlib.h:503:29: error: expected ‘)’ before ‘__size’
/usr/include/stdlib.h:508:45: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:508:65: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:756:9: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:756:25: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:757:6: error: nonnull argument with out-of-range operand number (argument 1, operand 5)
/usr/include/stdlib.h:761:34: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:761:50: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:762:6: error: nonnull argument with out-of-range operand number (argument 1, operand 4)
/usr/include/stdlib.h:840:6: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:843:6: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:847:31: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:851:31: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:860:38: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:864:36: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:871:15: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘mbstowcs’
/usr/include/stdlib.h:874:15: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘wcstombs’
arrays.c: In function ‘main’:
arrays.c:10:17: warning: incompatible implicit declaration of built-in function ‘printf’
arrays.c:13:25: warning: incompatible implicit declaration of built-in function ‘scanf’

Σε ευχαριστώ για την παρατήρηση. Είχα ξεχαστεί κάποια BBcodes επειδή το ήθελα πράσινο αλλα μάλλον δεν έγιναν μέσα στο [code] [/code)...
Είναι σωστό τώρα.
Αν το πρόβλημά μας επιλυθεί. Επιλέγουμε το θέμα που βοήθησε στην επίλυση και πατάμε το κουμπάκι Εικόνα.
Γνώσεις ⇛ Linux: Μέτριο┃Προγραμματισμός: C┃Αγγλικά: Καλά
Λειτουργικό ⇛ Linux Ubuntu 10.4 LTS
Προδιαγραφές ⇛ Intel Pentium @T4500 2.3GHz│ 512GB VRAM│ 500 HDD│ ATI RADEON HD545v 512 MB │ Screen: 15.6''
Άβαταρ μέλους
linuxs
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1060
Εγγραφή: 02 Ιούλ 2010, 13:19
Τοποθεσία: GR
IRC: linuxs
Εκτύπωση


Επιστροφή στο Μαθήματα C