Ορίστε έναν μονοδιάστατο πίνακα γ. Πίνακες. Δήλωση και προετοιμασία ενός πίνακα

Τι είναι οι πίνακες στο C;

Πώς να δηλώσετε πίνακες στο C;

Πώς να αρχικοποιήσετε πίνακες στο C;

Πίνακες σε C για ανδρείκελα.

Πίνακες σε C

Ένας πίνακας στο C είναι μια συλλογή στοιχείων του ίδιου τύπου στα οποία είναι δυνατή η πρόσβαση μέσω ευρετηρίου. Τα στοιχεία των πινάκων στο C βρίσκονται το ένα μετά το άλλο στη μνήμη του υπολογιστή.

Ένα απλό παράδειγμα δημιουργίας και πλήρωσης πίνακα σε C:

// @author Subbotin B.P..h> void main(void) ( int nArr; nArr = 1; nArr = 2; nArr = 3; printf("\n\tArray\n\n"); printf("nArr\t =\t%d\n", nArr); printf("nArr\t=\t%d\n", nArr); printf("nArr\t=\t%d\n", nArr); επιστροφή 0 )

Παίρνουμε:

Στο παράδειγμα, δηλώνουμε έναν πίνακα που περιέχει στοιχεία τύπου int:

εδώ το όνομα του πίνακα είναι nArr, ο αριθμός των στοιχείων του πίνακα είναι τρία, ο τύπος του στοιχείου πίνακα είναι int.

Ένας πίνακας είναι μια συλλογή στοιχείων. Κάθε στοιχείο του πίνακα μπορεί να αναφέρεται με τον αριθμό του. Ο αριθμός συνήθως ονομάζεται ευρετήριο. Τα στοιχεία του πίνακα αριθμούνται ξεκινώντας από το μηδέν. Ας αντιστοιχίσουμε μια τιμή στο πρώτο στοιχείο του πίνακα και το πρώτο στοιχείο έχει δείκτη μηδέν:

Ας αντιστοιχίσουμε μια τιμή στο δεύτερο στοιχείο του πίνακα και το δεύτερο στοιχείο έχει δείκτη ένα:

Ας αντιστοιχίσουμε μια τιμή στο τρίτο στοιχείο του πίνακα και το τρίτο στοιχείο έχει δείκτη δύο:

Όταν εμφανίζουμε στοιχεία πίνακα στην οθόνη, παίρνουμε τις τιμές τους. Σαν αυτό:

printf("nArr\t=\t%d\n", nArr);

Για να λάβετε ένα στοιχείο πίνακα, πρέπει να καθορίσετε το όνομα του πίνακα και τον δείκτη του στοιχείου:

Αυτό είναι το πρώτο στοιχείο του πίνακα, επειδή το πρώτο στοιχείο έχει δείκτη μηδέν.

Ας αντιστοιχίσουμε την τιμή του τρίτου στοιχείου του πίνακα στη μεταβλητή int a:

ο δείκτης του τρίτου στοιχείου του πίνακα είναι δύο, αφού οι δείκτες υπολογίζονται από το μηδέν.

Τώρα ο γενικός κανόνας για τη δήλωση πινάκων στο C: όταν δηλώνετε έναν πίνακα, πρέπει να αναφέρετε το όνομά του, τον τύπο των στοιχείων και τον αριθμό των στοιχείων του. Ο αριθμός των στοιχείων είναι φυσικός αριθμός, δηλ. το σύνολο είναι θετικό. Το μηδέν δεν μπορεί να είναι ο αριθμός των στοιχείων. Δεν μπορείτε να καθορίσετε έναν μεταβλητό αριθμό στοιχείων πίνακα. Ακολουθούν παραδείγματα δηλώσεων πίνακα σε C:

int nArr; // Ένας πίνακας έχει δηλωθεί ότι περιέχει εκατό ακέραιους αριθμούς.
float fArr? // Έχει δηλωθεί ένας πίνακας σχεδιασμένος να αποθηκεύει 5 αριθμούς float.
char cArr; // Ένας πίνακας έχει δηλωθεί για αποθήκευση δύο χαρακτήρων.

Θα ήταν λάθος να δηλώσουμε έναν πίνακα με μεταβλητό αριθμό στοιχείων:

Int varElem;
int nArr; // Λάθος! Ο αριθμός των στοιχείων δεν μπορεί να οριστεί σε μια μεταβλητή.

Αλλά μπορείτε να ορίσετε τον αριθμό των στοιχείων με σταθερή τιμή: είτε έναν άμεσο θετικό ακέραιο αριθμό 1, 2, 3... είτε μια σταθερά:

Const int arrayLength = 3;
int nArr;

Όταν δηλώνετε έναν πίνακα στο C, μπορείτε να τον αρχικοποιήσετε αμέσως:

int nMassiv = (1, 2, 3);

Μπορείτε να παραλείψετε τον αριθμό των στοιχείων του πίνακα σε αγκύλες εάν αρχικοποιηθούν όλα τα στοιχεία πίνακα:

int nMassiv = (1, 2, 3);

Ο αριθμός των στοιχείων θα καθοριστεί αυτόματα σε αυτήν την περίπτωση.

Μπορείτε να ορίσετε μόνο μέρος των στοιχείων ενός πίνακα όταν τον δηλώνετε:

int nMassiv = (1, 2);

Σε αυτό το παράδειγμα, τα δύο πρώτα στοιχεία του πίνακα αρχικοποιούνται, αλλά το τρίτο είναι απροσδιόριστο.

Παράδειγμα πίνακα χαρακτήρων:

char cArr = ("S", "B", "P");

Όταν δηλώνετε έναν πίνακα, δεν μπορείτε να καθορίσετε τον αριθμό των στοιχείων μιας μεταβλητής. Αλλά μπορείτε να χρησιμοποιήσετε μεταβλητές κατά την πρόσβαση σε στοιχεία πίνακα:

Int ind = 0;
char cr = cArr;

Αυτό χρησιμοποιείται όταν εργάζεστε με βρόχους. Παράδειγμα:

// @author Subbotin B.P..h> void main(void) ( const int arrayLength = 3; int nArr; for(int inn = 0; inn< 3; inn++) { nArr = inn + 1; } printf("\n\tArray\n\n"); for(int inn = 0; inn < 3; inn++) { printf("nArr[%d]\t=\t%d\n", inn, nArr); } return 0; }

Στο παράδειγμα, στον πρώτο βρόχο γεμίζουμε τον πίνακα με στοιχεία τύπου int και στον δεύτερο βρόχο εμφανίζουμε αυτά τα στοιχεία στην οθόνη.

Τελευταία ενημέρωση: 17/09/2017

Ένας πίνακας αντιπροσωπεύει ένα σύνολο δεδομένων του ίδιου τύπου. Ο επίσημος ορισμός ενός πίνακα είναι ο εξής:

Variable_type array_name [array_length]

Μετά τον τύπο της μεταβλητής ακολουθεί το όνομα του πίνακα και μετά το μέγεθός του σε αγκύλες. Για παράδειγμα, ας ορίσουμε έναν πίνακα 4 αριθμών:

Αριθμοί Int.

Αυτός ο πίνακας έχει τέσσερις αριθμούς, αλλά όλοι αυτοί οι αριθμοί έχουν μια απροσδιόριστη τιμή. Ωστόσο, μπορούμε να εκτελέσουμε αρχικοποίηση και να εκχωρήσουμε ορισμένες αρχικές τιμές σε αυτούς τους αριθμούς μέσω σγουρά άγκιστρα:

Αριθμοί Int = (1,2,3,4);

Οι τιμές στα σγουρά στηρίγματα ονομάζονται επίσης αρχικοποιητές. Εάν υπάρχουν λιγότεροι αρχικοποιητές από ό,τι υπάρχουν στοιχεία στον πίνακα, τότε χρησιμοποιούνται αρχικοποιητές για τα πρώτα στοιχεία. Εάν υπάρχουν περισσότεροι αρχικοποιητές από στοιχεία στον πίνακα, τότε θα παρουσιαστεί σφάλμα κατά τη μεταγλώττιση:

Αριθμοί Int = (1, 2, 3, 4, 5, 6);

Εδώ ο πίνακας έχει μέγεθος 4, αλλά του μεταβιβάζονται 6 τιμές.

Εάν το μέγεθος του πίνακα δεν προσδιορίζεται ρητά, συνάγεται από τον αριθμό των αρχικοποιητών:

Αριθμοί Int = (1, 2, 3, 4, 5, 6);

Σε αυτήν την περίπτωση, ο πίνακας έχει 6 στοιχεία.

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

Char s1 = ("h", "e", "l", "l", "o"); char s2 = "κόσμος";

Επιπλέον, στη δεύτερη περίπτωση, ο πίνακας s2 θα έχει όχι 5 στοιχεία, αλλά 6, αφού όταν αρχικοποιηθεί με μια συμβολοσειρά, ο μηδενικός χαρακτήρας "\0" προστίθεται αυτόματα στον πίνακα χαρακτήρων.

Σε αυτήν την περίπτωση, η αντιστοίχιση ενός πίνακα σε έναν άλλο πίνακα δεν επιτρέπεται:

Int nums1 = (1,2,3,4,5); int nums2 = nums1; // σφάλμα nums2 = nums1; // λάθος

Μόλις οριστεί ένας πίνακας, μπορούμε να έχουμε πρόσβαση στα επιμέρους στοιχεία του κατά ευρετήριο. Τα ευρετήρια ξεκινούν από το μηδέν, επομένως για να αποκτήσουμε πρόσβαση στο πρώτο στοιχείο πρέπει να χρησιμοποιήσουμε το ευρετήριο 0. Προσεγγίζοντας ένα στοιχείο προς ευρετήριο, μπορούμε να πάρουμε την τιμή του ή να το αλλάξουμε:

#περιλαμβάνω int main() ( int numbers = (1,2,3,4); int first_number = αριθμοί; std::cout<< first_number << std::endl; // 1 numbers = 34; // изменяем элемент std::cout << numbers << std::endl; // 34 return 0; }

Ο αριθμός των στοιχείων πίνακα μπορεί επίσης να προσδιοριστεί μέσω μιας σταθεράς:

Const int n = 4; αριθμοί int[n] = (1,2,3,4);

Επανάληψη σε πίνακες

Χρησιμοποιώντας βρόχους, μπορείτε να επαναλάβετε ολόκληρο τον πίνακα και να αποκτήσετε πρόσβαση στα στοιχεία του μέσω δεικτών:

#περιλαμβάνω int main() ( int numbers = (1,2,3,4); int size = sizeof(numbers)/sizeof(numbers); for(int i=0; i< size; i++) std::cout << numbers[i] << std::endl; return 0; }

Για να κάνετε βρόχο μέσω ενός πίνακα, πρέπει πρώτα να βρείτε το μήκος του πίνακα. Ο τελεστής sizeof χρησιμοποιείται για την εύρεση του μήκους. Ουσιαστικά, το μήκος ενός πίνακα είναι ίσο με το συνολικό μήκος των στοιχείων του. Όλα τα στοιχεία αντιπροσωπεύουν τον ίδιο τύπο και καταλαμβάνουν το ίδιο μέγεθος στη μνήμη. Επομένως, χρησιμοποιώντας την έκφραση sizeof(numbers) βρίσκουμε το μήκος ολόκληρου του πίνακα σε byte και χρησιμοποιώντας την έκφραση sizeof(numbers) βρίσκουμε το μήκος ενός στοιχείου σε byte. Διαιρώντας τις δύο τιμές, μπορείτε να λάβετε τον αριθμό των στοιχείων στον πίνακα. Και μετά, χρησιμοποιώντας έναν βρόχο for, επαναλαμβάνουμε όλα τα στοιχεία μέχρι ο μετρητής i να γίνει ίσος με το μήκος του πίνακα. Ως αποτέλεσμα, όλα τα στοιχεία του πίνακα θα εμφανίζονται στην κονσόλα:

Υπάρχει όμως και μια άλλη μορφή του βρόχου for, που έχει σχεδιαστεί ειδικά για εργασία με συλλογές, συμπεριλαμβανομένων συστοιχιών. Αυτό το έντυπο έχει τον ακόλουθο επίσημο ορισμό:

Για (τύπος μεταβλητής: συλλογή) ( οδηγίες; )

Χρησιμοποιούμε αυτή τη φόρμα για επανάληψη μέσω ενός πίνακα:

#περιλαμβάνω int main() ( int numbers = (1,2,3,4); for(int number: numbers) std::cout<< number << std::endl; return 0; }

Κατά την επανάληψη μέσω ενός πίνακα, κάθε στοιχείο που επαναλαμβάνεται θα τοποθετείται στη μεταβλητή αριθμού, η τιμή της οποίας εκτυπώνεται στην κονσόλα σε βρόχο.

Εάν δεν γνωρίζουμε τον τύπο των αντικειμένων στον πίνακα, μπορούμε να χρησιμοποιήσουμε τον αυτόματο προσδιοριστή για να προσδιορίσουμε τον τύπο:

Για(αυτόματος αριθμός: αριθμοί) std::cout<< number << std::endl;

Πολυδιάστατοι πίνακες

Εκτός από τους μονοδιάστατους πίνακες στη C++, υπάρχουν και πολυδιάστατοι. Τα στοιχεία τέτοιων πινάκων είναι τα ίδια, με τη σειρά τους, πίνακες, στους οποίους τα στοιχεία μπορούν επίσης να είναι πίνακες. Για παράδειγμα, ας ορίσουμε έναν δισδιάστατο πίνακα αριθμών:

Αριθμοί Int.

Ένας τέτοιος πίνακας αποτελείται από τρία στοιχεία, με κάθε στοιχείο να αντιπροσωπεύει έναν πίνακα δύο στοιχείων. Ας αρχικοποιήσουμε έναν πίνακα ως εξής:

Αριθμοί Int = ( (1, 2), (4, 5), (7, 8) );

Οι ένθετες σγουρές τιράντες οριοθετούν τα στοιχεία για κάθε υποσυστοιχία. Ένας τέτοιος πίνακας μπορεί επίσης να αναπαρασταθεί ως πίνακας:

1 2
4 5
7 8

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

Αριθμοί Int = ( 1, 2, 4, 5, 7, 8 );

Είναι επίσης δυνατό να αρχικοποιηθούν όχι όλα τα στοιχεία, αλλά μόνο μερικά:

Αριθμοί int = ( (1, 2), (), (7) );

Και για να αποκτήσετε πρόσβαση στα στοιχεία ενός ένθετου πίνακα, χρειάζεστε δύο ευρετήρια:

Αριθμοί Int = ( (1, 2), (3, 4), (5, 6) ); std::cout<< numbers << std::endl; // 3 numbers = 12; // изменение элемента std::cout << numbers << std::endl; // 12

Ας επαναλάβουμε έναν δισδιάστατο πίνακα:

#περιλαμβάνω int main() ( const int σειρές = 3, στήλες = 2; int αριθμοί = ( (1, 2), (3, 4), (5, 6) ); for(int i=0; i< rows; i++) { for(int j=0; j < columns; j++) { std::cout << numbers[i] [j] << "\t"; } std::cout << std::endl; } return 0; }

Μπορείτε επίσης να χρησιμοποιήσετε μια άλλη μορφή του βρόχου for για να επαναλάβετε τα στοιχεία ενός πολυδιάστατου πίνακα:

#περιλαμβάνω int main() ( const int σειρές = 3, στήλες = 2; int numbers = ( (1, 2), (3, 4), (5, 6)); for(auto &subnumbers: numbers) ( for(int number : υποαριθμοί) ( std::cout<< number << "\t"; } std::cout << std::endl; } return 0; }

Για την επανάληψη σε πίνακες που περιλαμβάνονται σε έναν πίνακα, χρησιμοποιούνται αναφορές. Δηλαδή, στον εξωτερικό βρόχο for(auto &subnumbers: numbers) &subnumbers αντιπροσωπεύει μια αναφορά υποπίνακα στον πίνακα. Στον εσωτερικό βρόχο for(int number: subnumbers), από κάθε υποπίνακα σε υποαριθμούς μεταφέρουμε τα επιμέρους στοιχεία του στη μεταβλητή αριθμού και εξάγουμε την τιμή του στην κονσόλα.

Ένας πίνακας είναι μια δομή δεδομένων που αναπαρίσταται ως ομάδα κελιών του ίδιου τύπου, ενωμένα κάτω από ένα μόνο όνομα. Οι πίνακες χρησιμοποιούνται για την επεξεργασία μεγάλων ποσοτήτων δεδομένων του ίδιου τύπου. Το όνομα του πίνακα είναι αυτό που είναι οι δείκτες, θα σας πω λίγο αργότερα. Ένα μεμονωμένο κελί δεδομένων ενός πίνακα ονομάζεται στοιχείο πίνακα. Τα στοιχεία ενός πίνακα μπορεί να είναι δεδομένα οποιουδήποτε τύπου. Οι πίνακες μπορούν να έχουν μία ή περισσότερες από μία διαστάσεις. Ανάλογα με τον αριθμό των διαστάσεων, οι πίνακες χωρίζονται σε μονοδιάστατους πίνακες, σε δισδιάστατους πίνακες, σε τρισδιάστατους πίνακες και ούτω καθεξής μέχρι έναν n-διάστατο πίνακα. Οι μονοδιάστατοι και οι δισδιάστατοι πίνακες χρησιμοποιούνται συχνότερα στον προγραμματισμό, επομένως θα εξετάσουμε μόνο αυτούς τους πίνακες.

Μονοδιάστατοι πίνακες σε C++

Ο μονοδιάστατος πίνακας είναι ένας πίνακας με μία παράμετρο που χαρακτηρίζει τον αριθμό των στοιχείων του μονοδιάστατου πίνακα. Στην πραγματικότητα, ένας μονοδιάστατος πίνακας είναι ένας πίνακας που μπορεί να έχει μόνο μία γραμμή και n αριθμό στηλών. Οι στήλες σε έναν μονοδιάστατο πίνακα είναι τα στοιχεία του πίνακα. Το σχήμα 1 δείχνει τη δομή ενός ακέραιου μονοδιάστατου πίνακα ένα. Το μέγεθος αυτού του πίνακα είναι 16 κελιά.

Εικόνα 1 - Πίνακες σε C++

Σημειώστε ότι ο μέγιστος δείκτης ενός μονοδιάστατου πίνακα έναείναι 15, αλλά το μέγεθος του πίνακα είναι 16 κελιά, επειδή η αρίθμηση των κελιών του πίνακα ξεκινά πάντα από το 0. Ο δείκτης κελιών είναι ένας μη αρνητικός ακέραιος με τον οποίο μπορείτε να αποκτήσετε πρόσβαση σε κάθε κελί του πίνακα και να εκτελέσετε οποιεσδήποτε ενέργειες σε αυτό ( κύτταρο).

//σύνταξη για τη δήλωση ενός μονοδιάστατου πίνακα στη C++: /*τύπος δεδομένων*/ /*όνομα ενός μονοδιάστατου πίνακα*/; //παράδειγμα δήλωσης ενός μονοδιάστατου πίνακα που φαίνεται στο Σχήμα 1: int a;

όπου το int είναι ακέραιος αριθμός.

A είναι το όνομα ενός μονοδιάστατου πίνακα.
16 — μέγεθος μονοδιάστατου πίνακα, 16 κελιά.

Πάντα αμέσως μετά το όνομα του πίνακα υπάρχουν αγκύλες στις οποίες καθορίζεται το μέγεθος του μονοδιάστατου πίνακα.

//άλλος τρόπος δήλωσης μονοδιάστατων πινάκων int mas, a;

Δηλώνονται δύο μονοδιάστατοι πίνακες mas και a με μεγέθη 10 και 16, αντίστοιχα. Επιπλέον, σε αυτήν τη μέθοδο δήλωσης, όλοι οι πίνακες θα έχουν τον ίδιο τύπο δεδομένων, στην περίπτωσή μας - int.

// οι πίνακες μπορούν να αρχικοποιηθούν όταν δηλωθούν: int a = ( 5, -12, -12, 9, 10, 0, -9, -12, -1, 23, 65, 64, 11, 43, 39, -15 ) // αρχικοποίηση ενός μονοδιάστατου πίνακα

Η αρχικοποίηση μιας μονοδιάστατης διάταξης πραγματοποιείται σε σγουρά σιδεράκια μετά το σημάδι ισοδυναμεί, κάθε στοιχείο πίνακα χωρίζεται από το προηγούμενο με κόμμα.

Int a=(5,-12,-12,9,10,0,-9,-12,-1,23,65,64,11,43,39,-15); // αρχικοποίηση του πίνακα χωρίς να προσδιορίζεται το μέγεθός του.

Σε αυτήν την περίπτωση, ο ίδιος ο μεταγλωττιστής θα καθορίσει το μέγεθος του μονοδιάστατου πίνακα. Το μέγεθος ενός πίνακα μπορεί να παραλειφθεί μόνο κατά την προετοιμασία του όταν δηλώνεται κανονικά ένας πίνακας, το μέγεθος του πίνακα πρέπει να καθοριστεί. Ας αναπτύξουμε ένα απλό πρόγραμμα για την επεξεργασία ενός μονοδιάστατου πίνακα.

// array.cpp: Καθορίζει το σημείο εισόδου για την εφαρμογή της κονσόλας. #include "stdafx.h" #include << "obrabotka massiva" << endl; int array1 = { 5, -12, -12, 9, 10, 0, -9, -12, -1, 23, 65, 64, 11, 43, 39, -15 }; // объявление и инициализация одномерного массива cout << "indeks" << "\t\t" << "element massiva" << endl; // печать заголовков for (int counter = 0; counter < 16; counter++) //начало цикла { //вывод на экран индекса ячейки массива, а затем содержимого этой ячейки, в нашем случае - это целое число cout << "array1[" << counter << "]" << "\t\t" << array1 << endl; } system("pause"); return 0; }

// code Code::Blocks

// Κωδικός Dev-C++

// array.cpp: Καθορίζει το σημείο εισόδου για την εφαρμογή της κονσόλας. #περιλαμβάνω χρησιμοποιώντας namespace std? int main(int argc, char* argv) ( cout<< "obrabotka massiva" << endl; int array1 = { 5, -12, -12, 9, 10, 0, -9, -12, -1, 23, 65, 64, 11, 43, 39, -15 }; // объявление и инициализация одномерного массива cout << "indeks" << "\t\t" << "element massiva" << endl; // печать заголовков for (int counter = 0; counter < 16; counter++) //начало цикла { //вывод на экран индекса ячейки массива, а затем содержимого этой ячейки, в нашем случае - это целое число cout << "array1[" << counter << "]" << "\t\t" << array1 << endl; } return 0; }

ΣΕ γραμμές 10-11Έχει δηλωθεί και αρχικοποιηθεί ένας ακέραιος μονοδιάστατος πίνακας με το όνομα array1, το μέγεθος του οποίου είναι 16 κελιά, δηλαδή ένας τέτοιος πίνακας μπορεί να αποθηκεύσει 16 αριθμούς. Οποιαδήποτε επεξεργασία πίνακα είναι δυνατή μόνο σε συνδυασμό με βρόχους. Ποιος βρόχος θα επιλέξετε για την επεξεργασία του πίνακα εξαρτάται από εσάς να αποφασίσετε. Αλλά είναι το καταλληλότερο για αυτήν την εργασία. Θα χρησιμοποιήσουμε τον μετρητή μεταβλητής μετρητή για πρόσβαση στα στοιχεία του μονοδιάστατου πίνακα1. Η συνθήκη για τη συνέχιση του βρόχου for περιέχει ένα αυστηρό πρόσημο ανισότητας, αφού δεν υπάρχει δέκατος έκτος δείκτης στον μονοδιάστατο πίνακα1. Και δεδομένου ότι η αρίθμηση των κελιών ξεκινά από το μηδέν, υπάρχουν 16 στοιχεία στον πίνακα στο σώμα του βρόχου for, ο τελεστής cout εκτυπώνει τα στοιχεία ενός μονοδιάστατου πίνακα (βλ. Εικόνα 2).

Το Obrabotka massiva ευρετηριάζει το στοιχείο massiva array1 5 array1 -12 array1 -12 array1 9 array1 10 array1 0 array1 -9 array1 -12 array1 -1 array1 23 array1 65 array1 64 array1 11 array1 49 array1 (Συνέχεια) 1 43 array1 (Συνέχεια) πλήκτρο. . .

Εικόνα 2 - Πίνακες σε C++

Ας αναπτύξουμε ένα άλλο πρόγραμμα για την επεξεργασία ενός μονοδιάστατου πίνακα σε C++. Το πρόγραμμα πρέπει να διαβάζει διαδοχικά δέκα αριθμούς που έχουν εισαχθεί από το πληκτρολόγιο. Όλοι οι αριθμοί που έχουν εισαχθεί συνοψίζονται και το αποτέλεσμα εμφανίζεται στην οθόνη.

// array_sum.cpp: Καθορίζει το σημείο εισόδου για την εφαρμογή της κονσόλας. #include "stdafx.h" #include << "Enter elementi massiva: " << endl; int sum = 0; for (int counter = 0; counter < 10; counter++) // цикл для считывания чисел cin >> << "array1 = {"; for (int counter = 0; counter < 10; counter++) // цикл для вывода элементов массива cout << array1 << " "; // выводим элементы массива на стандартное устройство вывода for (int counter = 0; counter < 10; counter++) // цикл для суммирования чисел массива sum += array1; // суммируем элементы массива cout << "}\nsum = " << sum << endl; system("pause"); return 0; }

// code Code::Blocks

// Κωδικός Dev-C++

// array_sum.cpp: Καθορίζει το σημείο εισόδου για την εφαρμογή της κονσόλας. #περιλαμβάνω χρησιμοποιώντας namespace std? int main(int argc, char* argv) ( int array1; // δήλωση ακέραιου πίνακα cout<< "Enter elementi massiva: " << endl; int sum = 0; for (int counter = 0; counter < 10; counter++) // цикл для считывания чисел cin >>πίνακας1; // ανάγνωση αριθμών που εισάγονται από το πληκτρολόγιο<< "array1 = {"; for (int counter = 0; counter < 10; counter++) // цикл для вывода элементов массива cout << array1 << " "; // выводим элементы массива на стандартное устройство вывода for (int counter = 0; counter < 10; counter++) // цикл для суммирования чисел массива sum += array1; // суммируем элементы массива cout << "}\nsum = " << sum << endl; return 0; }

Πριν από την επεξεργασία ενός πίνακα, πρέπει να δηλωθεί και το μέγεθος ενός μονοδιάστατου πίνακα είναι 10, όπως αυτό ορίζεται από την συνθήκη της εργασίας. Στη μεταβλητή αθροίσματος θα συσσωρεύσουμε το άθροισμα των στοιχείων ενός μονοδιάστατου πίνακα. Ο πρώτος βρόχος for γεμίζει τον δηλωμένο μονοδιάστατο πίνακα με αριθμούς που εισάγονται από το πληκτρολόγιο, γραμμές 12 - 13. Η μεταβλητή μετρητή χρησιμοποιείται για τη διαδοχική πρόσβαση στα στοιχεία του μονοδιάστατου πίνακα1 , ξεκινώντας από τον δείκτη 0 μέχρι και τον 9ο. Ο δεύτερος βρόχος for εμφανίζει τα στοιχεία του πίνακα, γραμμές 15 - 16. Ο τρίτος βρόχος for διαβάζει διαδοχικά τα στοιχεία ενός μονοδιάστατου πίνακα και τα αθροίζει, το άθροισμα συσσωρεύεται στη μεταβλητή αθροίσματος. γραμμές 17 - 18. Το αποτέλεσμα του προγράμματος φαίνεται στο σχήμα 3.

Εισαγάγετε elementi massiva: 0 1 2 3 4 5 6 7 8 9 array1 = (0 1 2 3 4 5 6 7 8 9 ) sum = 45 Για να συνεχίσετε, πατήστε οποιοδήποτε πλήκτρο. . .

Εικόνα 3 - Πίνακες σε C++

Αρχικά, και οι 10 αριθμοί εισήχθησαν διαδοχικά, μετά από την οποία εμφανίστηκε ένας μονοδιάστατος πίνακας και εκτυπώθηκε το άθροισμα των αριθμών στον πίνακα.

Δισδιάστατοι πίνακες σε C++

Μέχρι αυτό το σημείο, έχουμε εξετάσει μονοδιάστατους πίνακες, στους οποίους δεν μπορεί πάντα να περιοριστεί. Ας υποθέσουμε ότι πρέπει να επεξεργαστείτε ορισμένα δεδομένα από έναν πίνακα. Ένας πίνακας έχει δύο χαρακτηριστικά: τον αριθμό των γραμμών και τον αριθμό των στηλών. Επίσης σε έναν δισδιάστατο πίνακα, εκτός από τον αριθμό των στοιχείων του πίνακα, υπάρχουν χαρακτηριστικά όπως ο αριθμός των σειρών και ο αριθμός των στηλών ενός δισδιάστατου πίνακα. Δηλαδή, οπτικά, ένας δισδιάστατος πίνακας είναι ένας κανονικός πίνακας, με γραμμές και στήλες. Στην πραγματικότητα, ένας δισδιάστατος πίνακας είναι ένας μονοδιάστατος πίνακας μονοδιάστατων πινάκων. Η δομή ενός δισδιάστατου πίνακα, με το όνομα a, μεγέθους m επί n φαίνεται παρακάτω (βλ. Εικόνα 4).

Εικόνα 4 - Πίνακες σε C++

όπου m είναι ο αριθμός των σειρών ενός δισδιάστατου πίνακα.
n είναι ο αριθμός των στηλών ενός δισδιάστατου πίνακα.
m * n — αριθμός στοιχείων πίνακα.

// σύνταξη για τη δήλωση ενός δισδιάστατου πίνακα /*τύπος δεδομένων*/ /*όνομα πίνακα*/;

Κατά τη δήλωση ενός δισδιάστατου πίνακα, καθώς και κατά τη δήλωση ενός μονοδιάστατου πίνακα, πρώτα απ 'όλα, πρέπει να καθορίσετε:

  • Τύπος δεδομένων;
  • όνομα πίνακα.

Μετά από αυτό, οι πρώτες αγκύλες υποδεικνύουν τον αριθμό των σειρών του δισδιάστατου πίνακα και οι δεύτερες αγκύλες υποδεικνύουν τον αριθμό των στηλών του δισδιάστατου πίνακα. Ένας δισδιάστατος πίνακας διακρίνεται οπτικά από έναν μονοδιάστατο πίνακα με ένα δεύτερο ζεύγος αγκύλων. Ας δούμε ένα παράδειγμα δήλωσης ενός δισδιάστατου πίνακα. Ας υποθέσουμε ότι πρέπει να δηλώσουμε έναν δισδιάστατο πίνακα με έναν αριθμό στοιχείων ίσο με 15. Σε αυτήν την περίπτωση, ένας δισδιάστατος πίνακας μπορεί να έχει τρεις σειρές και πέντε στήλες ή πέντε σειρές και τρεις στήλες.

// παράδειγμα δήλωσης ενός δισδιάστατου πίνακα: int a;

  • a είναι το όνομα του ακέραιου πίνακα
  • ο αριθμός στις πρώτες αγκύλες υποδεικνύει τον αριθμό των σειρών του δισδιάστατου πίνακα, σε αυτήν την περίπτωση υπάρχουν 5.
  • ο αριθμός στις δεύτερες αγκύλες υποδεικνύει τον αριθμό των στηλών του δισδιάστατου πίνακα, σε αυτήν την περίπτωση υπάρχουν 3.

// αρχικοποίηση ενός δισδιάστατου πίνακα: int a = ( (4, 7, 8), (9, 66, -1), (5, -5, 0), (3, -3, 30), ( 1, 1, 1) );

Αυτός ο πίνακας έχει 5 σειρές, 3 στήλες. Μετά το σύμβολο εκχώρησης, τοποθετούνται γενικές σγουρές αγκύλες, μέσα στις οποίες τοποθετούνται τόσα ζεύγη αγκύλων όσες θα έπρεπε να υπάρχουν γραμμές σε έναν δισδιάστατο πίνακα και αυτές οι αγκύλες χωρίζονται με κόμματα. Σε κάθε ζεύγος σγουρά στηρίγματα, γράψτε τα στοιχεία ενός δισδιάστατου πίνακα που χωρίζονται με κόμματα. Σε όλα τα σγουρά σιδεράκια, ο αριθμός των στοιχείων πρέπει να είναι ίδιος. Δεδομένου ότι υπάρχουν πέντε γραμμές στον πίνακα, υπάρχουν επίσης πέντε εσωτερικά ζεύγη αγκύλων. Τρία στοιχεία είναι γραμμένα στις εσωτερικές αγκύλες, αφού ο αριθμός των στηλών είναι τρεις. Γραφικά, ο πίνακας μας θα μοιάζει με έναν δισδιάστατο πίνακα (βλ. Εικόνα 5).

Εικόνα 5 - Πίνακες σε C++

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

Ας αναπτύξουμε ένα απλό πρόγραμμα για την επεξεργασία ενός δισδιάστατου πίνακα, που ονομάζεται «Λαβύρινθος». Ο λαβύρινθος πρέπει να χτιστεί με βάση μια δισδιάστατη διάταξη. Θα επιλέξουμε το μέγεθος του λαβυρίνθου κατά την κρίση μας.

// array2.cpp: Καθορίζει το σημείο εισόδου για την εφαρμογή της κονσόλας. #include "stdafx.h" #include < 33; i++) //переключение по строкам { for (int j = 0; j < 20; j++)// переключение по столбцам if (mas[i][j] == 1) { // вывести два раза символ (номер которого 176 в таблице аски) в консоль cout << static_cast(176); cout<< static_cast(176); ) αλλιώς κόουτ<< " "; // вывести два пробела cout << endl; } system("pause"); return 0; }

// code Code::Blocks

// Κωδικός Dev-C++

// array2.cpp: Καθορίζει το σημείο εισόδου για την εφαρμογή της κονσόλας. #περιλαμβάνω χρησιμοποιώντας namespace std? int main(int argc, char* argv) ( // 1-υπό όρους "τοίχοι του λαβύρινθου" // 2-"σωστό μονοπάτι, έξοδος από τον λαβύρινθο" // 0-"ψευδής διαδρομή" int mas = (1, 2,1 ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,), // αρχικοποίηση ενός δισδιάστατου πίνακα ( 1,2,1,0 ,0,1,0,1,2,2,2,1,1,1,1,0,0,0,0,1,), (1,2,1,1 ,0,1,0, 1,2,1,2,2,2,2,1,0,1,1,0,1, (1,2,2,2,2,2,2, 1,2,1,1 ,1,1,2,1,0,0,1,0,1, (1,1,1,1,1,1,2,1,2,1,0 ,0,1,2, 1,1,0,1,0,1,), (1,0,0,1,0,0,2,2,2,1,1,0,0,2, 0,0,0,1 ,0,1,), (1,0,1,1,0,1,1,1,1,1,0,0,1,2,1,1,1,1 ,0,1,), (1,0,0,0,0,0,0,0,0,1,1,1,1,2,1,0,0,0,0,1,), (1,1,1, 1,1,1,0,1,1,1,2,2,2,2,1,0,1,1,1,1,), (1,1,0, 0,0,1,0 ,0,1,1,2,1,1,1,1,0,0,0,0,1,), (1,0,0,1,0,0,0 ,0,0,1, 2,2,2,2,1,1,1,1,0,1,), (1,1,1,1,1,1,1,1,1,1, 1,1,1,2 ,1,0,0,0,0,1,), (1,2,2,2,2,2,2,2,2,2,2,2,2,2 ,1,0,1, 1,1,1,), (1,2,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0, 0,0,1,) , (1,2,1,0,0,0,1,2,2,2,1,0,0,0,0,0,1,1,0,1,) , (1,2,1 ,1,1,1,1,2,1,2,1,1,1,0,1,0,0,0,0,1,), (1,2,1 ,2,2,2, 1,2,1,2,2,2,1,1,1,1,1,1,1,1,), (1,2,1,2,1,2, 1,2,1,0 ,1,2,2,2,2,2,2,2,2,1,), (1,2,1,2,1,2,1,2,1,0 ,1,1,1, 1,1,1,1,1,2,1,), (1,2,1,2,1,2,1,2,1,0,0,0,0, 0,0,0,0 ,0,2,1,), (1,2,1,2,1,2,2,2,1,0,1,1,1,1,1,1,0 ,1,2,1, ), (1,2,1,2,1,1,1,1,1,0,0,0,1,0,1,0,0,1,2,1, ), (1,2, 1,2,2,1,0,0,1,1,1,0,0,0,1,0,1,1,2,1,), (1,2, 1,1,2,1 ,1,0,0,0,0,0,1,0,1,0,0,1,2,1,), (1,2,1,1,2,1 ,0,0,1, 1,1,1,1,1,1,1,1,1,2,1,), (1,2,1,1,2,1,1,0,1, 2,2,2,2 ,2,2,2,2,2,2,1,), (1,2,1,1,2,1,0,0,1,2,1,1,1 ,1,1,1, 1,1,1,1,), (1,2,1,1,2,1,0,1,1,2,1,1,1,1,1,1, 1,1,2,2 ,), (1,2,1,1,2,1,0,0,1,2,1,1,2,2,2,2,2,2,2,1 ,), (1,2 ,1,1,2,1,0,1,1,2,1,1,2,1,1,1,1,1,1,1,), (1,2 ,1,1,2, 1,0,0,1,2,1,1,2,1,0,0,0,1,0,1,), (1,2,2,2,2, 1,0,1,1 ,2,2,2,2,0,0,1,0,0,0,1,), (1,1,1,1,1,1,1,1,1 ,1,1,1, 1,1,1,1,1,1,1,1,) ); // δύο βρόχοι - εσωτερικός και εξωτερικός, πρόσβαση σε κάθε στοιχείο του πίνακα για (int i = 0; i< 33; i++) //переключение по строкам { for (int j = 0; j < 20; j++)// переключение по столбцам if (mas[i][j] == 1) { // вывести два раза символ (номер которого 176 в таблице аски) в консоль cout << static_cast(176); cout<< static_cast(176); ) αλλιώς κόουτ<< " "; // вывести два пробела cout << endl; } return 0; }

Η σωστή και η ψευδής διαδρομή θα μπορούσαν να υποδηλωθούν με τον ίδιο αριθμό, για παράδειγμα, μηδέν, αλλά για λόγους σαφήνειας, η σωστή διαδρομή συμβολίζεται με τον αριθμό 2. Ο πίνακας αρχικοποιήθηκε χειροκίνητα, μόνο για να απλοποιηθεί το πρόγραμμα. Εφόσον το πρόγραμμα επεξεργάζεται έναν δισδιάστατο πίνακα, χρειάζονται δύο βρόχοι για εναλλαγή μεταξύ στοιχείων του δισδιάστατου πίνακα. Ο πρώτος βρόχος for αλλάζει μεταξύ σειρών ενός δισδιάστατου πίνακα. Δεδομένου ότι υπάρχουν 33 σειρές σε έναν δισδιάστατο πίνακα, η μεταβλητή μετρητή i αυξάνεται από το 0 στο 33, γραμμή 46. Μέσα στον πρώτο βρόχο υπάρχει ένας βρόχος for που περνάει μέσα από τα στοιχεία της σειράς ενός δισδιάστατου πίνακα. Στο σώμα του δεύτερου βρόχου for, εκτελείται μια λειτουργία μετατροπής τύπου δεδομένων στο εσωτερικό - static_cast<>() , το οποίο εκτυπώνει τον αριθμό χαρακτήρα 176. Η λειτουργία μετατροπής τύπου δεδομένων αντιγράφεται για να αυξηθεί το πλάτος του λαβύρινθου. Το αποτέλεσμα του προγράμματος (βλ. Εικόνα 6).

Εικόνα 6 - Πίνακες σε C++

Οι πίνακες είναι ένα εξαιρετικά σημαντικό θέμα στη C++. Χρησιμοποιούνται πολύ συχνά σε προγράμματα και είναι απαραίτητο να κατανοήσουμε αυτό το θέμα διεξοδικά. Θα σας κάνω χαρούμενους αμέσως - η κατανόηση και η εκμάθηση του τρόπου χρήσης συστοιχιών είναι αρκετά απλή ακόμη και για έναν αρχάριο.

Λοιπόν, γιατί χρειάζονται οι πίνακες και τι είναι αυτοί; Μέχρι τώρα γνωρίζετε καλά ότι τα δεδομένα του προγράμματος αποθηκεύονται στο . Αλλά συμβαίνει ότι ένα πρόγραμμα χρειάζεται να αποθηκεύσει εκατοντάδες (ή ακόμα περισσότερες) μεταβλητές του ίδιου τύπου δεδομένων, και επίσης να πρέπει να εργαστεί μαζί τους - να εκχωρήσει τιμές, να τις αλλάξει κ.λπ.

Για παράδειγμα, πρέπει να αποθηκεύσετε τους σειριακούς αριθμούς των γραμμών. Συμφωνώ - οποιοσδήποτε θα φοβόταν από τη σκέψη να δημιουργήσει πεντακόσιες μεταβλητές τύπου int, δίνοντας σε καθεμία ένα μοναδικό όνομα και εκχωρώντας μια τιμή από το 1 έως το 500. (Φοβάμαι ήδη :) Σε αυτή την περίπτωση, οι πίνακες απλώς θα μας σώσουν.

Ας σημειώσουμε τα κύρια σημεία και ας προχωρήσουμε σε ένα πρακτικό παράδειγμα:

  • Ένας πίνακας στη C++ είναι μια συλλογή από έναν ορισμένο αριθμό μεταβλητών του ίδιου τύπου που έχουν το ίδιο όνομα. Π.χ, πίνακας int ;. Αυτή η καταχώρηση σημαίνει ότι έχουμε δηλώσει έναν πίνακα με όνομα πίνακας, οι οποίεςπεριέχει 3 μεταβλητές τύπου ενθ ;
  • Οι μεταβλητές του πίνακα ονομάζονται στοιχεία.
  • Κάθε στοιχείο έχει το δικό του μοναδικό ευρετήριο - τον δικό του σειριακό αριθμό. Χρησιμοποιώντας ένα ευρετήριο μπορούμε να έχουμε πρόσβαση σε ένα συγκεκριμένο στοιχείο. ΣΠΟΥΔΑΙΟΣ - η ευρετηρίαση των στοιχείων του πίνακα ξεκινά από το 0 . Έτσι στη συστοιχία πίνακας intτο πρώτο στοιχείο έχει ευρετήριο 0 , και το τελευταίο είναι 2 . Για να αποκτήσετε πρόσβαση, για παράδειγμα, στο μηδενικό στοιχείο ενός πίνακα και να αλλάξετε την τιμή του, πρέπει να καθορίσετε το όνομα του πίνακα και να υποδείξετε το δείκτη του στοιχείου σε αγκύλες - πίνακας = 33 .

Ας δούμε ένα παράδειγμα:

Πίνακες C++

// σε αυτό το πρόγραμμα δημιουργούμε έναν πίνακα με μέγεθος μεγέθους, // χρησιμοποιώντας έναν βρόχο for εισάγουμε δεδομένα σε όλα τα κελιά // του πίνακα και εμφανίζουμε τα περιεχόμενά τους στην οθόνη #include χρησιμοποιώντας namespace std? int main() ( setlocale(LC_ALL, "rus"); const int SIZE = 10; //δηλώνει μια σταθερή int firstArray; //δηλώνει έναν πίνακα με τον αριθμό των στοιχείων SIZE για (int i = 0; i< SIZE ; i++) //заполняем и отображаем значения на экран { firstArray[i] = i + 1; // на первом шаге цикла firstArray присвоить 1 (0 + 1) cout << i << "-я ячейка хранит число " << firstArray[i] << endl; } cout << endl; return 0; }

// σε αυτό το πρόγραμμα δημιουργούμε έναν πίνακα με μέγεθος μεγέθους,

// χρησιμοποιήστε τον βρόχο for για να εισάγετε δεδομένα σε όλα τα κελιά

// πίνακα και εμφανίζουν τα περιεχόμενά τους στην οθόνη

#περιλαμβάνω

χρησιμοποιώντας χώρο ονομάτων std ;

int main()

setlocale(LC_ALL, "rus");

const int SIZE = 10 ; //δηλώνει σταθερά

int firstArray[SIZE]; //δηλώνει έναν πίνακα με τον αριθμό των στοιχείων SIZE

για (int i = 0; i< SIZE ; i ++ ) //συμπληρώστε και εμφανίστε τις τιμές στην οθόνη

firstArray[i] = i+1; // στο πρώτο βήμα του βρόχου εκχωρήστε firstArray 1 (0 + 1)

cout<< i << "-ο κελί αποθηκεύει τον αριθμό"<< firstArray [ i ] << endl ;

cout<< endl ;

επιστροφή 0 ;

Στη γραμμή 12 ορίζουμε μια ακέραια σταθερά ΜΕΓΕΘΟΣ, το οποίο θα αποθηκεύσει το μέγεθος του πίνακα (που ορίζεται από εμάς, τον αριθμό των στοιχείων του). Στη γραμμή 13 δηλώνουμε έναν πίνακα: υποδεικνύουμε τον τύπο των δεδομένων που θα αποθηκευτούν στα κελιά του πίνακα, δίνουμε ένα όνομα και υποδεικνύουμε το μέγεθος σε αγκύλες.

Είναι σημαντικό να μπορούμε να γράφουμε σταθερές ακέραιες τιμές μόνο σε αγκύλες. Πρέπει είτε να εισαγάγετε αμέσως έναν ακέραιο σε αγκύλες όταν δηλώνετε έναν πίνακα ( int firstArray?), ή ορίστε μια ακέραια σταθερά πριν δηλώσετε τον πίνακα και εισάγετε το όνομα αυτής της σταθεράς σε αγκύλες (όπως στο παράδειγμά μας).

Η δεύτερη μέθοδος είναι προτιμότερο να χρησιμοποιηθεί εάν κατά τη διάρκεια του προγράμματος θα πρέπει να έχετε πρόσβαση στον πίνακα πολλές φορές μέσω ενός βρόχου. Αυτό εξηγείται από το γεγονός ότι όταν δηλώνουμε έναν βρόχο, μπορούμε να καθορίσουμε σε αυτόν την συνθήκη για την αλλαγή του μετρητή στην τιμή ΜΕΓΕΘΟΣ .

Απλά φανταστείτε ότι πρέπει να αλλάξουμε το μέγεθος του πίνακα από 10 στοιχεία σε 200. Σε αυτήν την περίπτωση, το μόνο που έχουμε να κάνουμε είναι να αλλάξουμε την τιμή της σταθεράς ακέραιου αριθμού, και έτσι θα αντικαταστήσουμε αυτόματα νέες τιμές μεγέθους και στις δύο πίνακα και σε όλους τους βρόχους του προγράμματος.

Στο παράδειγμά μας, μπορείτε να δοκιμάσετε να προσθέσετε οποιονδήποτε άλλο αριθμό στη σταθερά ΜΕΓΕΘΟΣ. Και θα δείτε ότι το πρόγραμμα θα λειτουργήσει τέλεια - θα δημιουργήσει έναν πίνακα με όσα στοιχεία καθορίσετε, θα εισαγάγετε τα δεδομένα και θα τα εμφανίσει στην οθόνη.

Και αν ο πίνακας είναι πολύ μικρός, για παράδειγμα με 5 στοιχεία, μπορείτε να τον αρχικοποιήσετε αμέσως μετά τη δήλωση:

Άρα το στοιχείο με δείκτη 0 – firstArray– θα εκχωρηθεί μια τιμή 11 , και το τελευταίο στοιχείο του πίνακα firstArray- νόημα 1 5 . Υπάρχει ένα τέτοιο τέχνασμα - δεν μπορείτε να υποδείξετε το μέγεθος του πίνακα σε αγκύλες και να γράψετε αυτό:

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

Επίσης, κατά την αρχική προετοιμασία των στοιχείων πίνακα, όταν ο πίνακας πρέπει να καθαριστεί από "σκουπίδια" (υπολειπόμενα δεδομένα από άλλα προγράμματα στη μνήμη), είναι προτιμότερο να εκχωρήσετε αμέσως μια τιμή σε όλα τα στοιχεία 0 . Μοιάζει με αυτό:

Θα πρέπει να θυμόμαστε ότι μια τέτοια προετοιμασία είναι δυνατή μόνο για πλήρωση με μηδενικά. Εάν πρέπει να γεμίσετε τα στοιχεία του πίνακα με κάποιους άλλους αριθμούς, είναι καλύτερο να χρησιμοποιήσετε έναν βρόχο. Στη C++11 (πρότυπο κωδικοποίησης), όταν χρησιμοποιείτε την προετοιμασία λίστας (αρχικοποίηση με σγουρά άγκιστρα), επιτρέπεται ακόμη και να απορρίψετε το σύμβολο = .

Θα ήθελα να δείξω μια ακόμη τεχνική προετοιμασίας κατά τη δημιουργία ενός πίνακα. Για παράδειγμα, για έναν πίνακα 30 στοιχείων πρέπει να εισάγουμε τις τιμές 33 Και 44 μόνο σε κελιά με ευρετήριο 0 Και 1 αναλόγως και συμπληρώστε τα υπόλοιπα με μηδενικά. Τότε κάνουμε αυτό:

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

Μπορείτε επίσης να οργανώσετε το γέμισμα ενός πίνακα χρησιμοποιώντας τον τελεστή cin:

για (int i = 0; i< size; i++) //заполняем и выводим значения на экран { cout << "Введите значение в ячейку №" << i << " :"; cin >> firstArray[i]; )

για (int i = 0; i< size ; i ++ ) //συμπληρώστε και εμφανίστε τις τιμές στην οθόνη

Ανέστειλε το AdBlock σε αυτόν τον ιστότοπο.

Ένας πίνακας είναι ο απλούστερος σύνθετος τύπος δεδομένων. Όταν συζητούσαμε τις μεταβλητές, είχαμε μια καλή αναλογία με ένα πλαίσιο. Ας επιστρέψουμε σε αυτήν. Εάν μια μεταβλητή είναι ένα κουτί, τότε ένας πίνακας είναι πολλά αριθμημένα πανομοιότυπα κουτιά που έχουν το ίδιο όνομα και διαφέρουν μόνο ως προς τον σειριακό τους αριθμό.

Εικ.1 Μεταβλητές και πίνακες. Αναλογία με κουτιά.

Η παραπάνω εικόνα δείχνει τρεις πίνακες:

  • έναν ακέραιο πίνακα 8 στοιχείων με όνομα arr_int
  • float πίνακας 11 στοιχείων με το όνομα arr_float
  • ένας πίνακας χαρακτήρων 6 στοιχείων που ονομάζεται arr_char

Ένας πίνακας, όπως μια μεταβλητή, έχει το δικό του όνομα και τύπο δεδομένων. Επιπλέον, ο πίνακας έχει ένα επιπλέον χαρακτηριστικό - το μέγεθος του πίνακα. Το μέγεθος ενός πίνακα είναι ο αριθμός των στοιχείων που μπορούν να αποθηκευτούν σε αυτόν. Στην αναλογία κουτιών μας, αυτός είναι ο αριθμός των κουτιών.

Σημείωση!

Η αρίθμηση των στοιχείων του πίνακα ξεκινά από το μηδέν, όχι από το ένα.

Δήλωση και προετοιμασία ενός πίνακα

Η δήλωση ενός πίνακα είναι πολύ παρόμοια με τη δήλωση μιας μεταβλητής. Η μόνη διαφορά είναι ότι θα πρέπει επιπλέον να υποδείξετε το μέγεθος του πίνακα σε αγκύλες. Να μερικά παραδείγματα:

Λίστα 1.

Int arr_int; διπλό arr_float; float αριθμός?

Το όνομα του πίνακα υπόκειται σε περιορισμούς παρόμοιους με αυτούς που επιβάλλονται στο όνομα της μεταβλητής.

Κανόνας ονομασίας πίνακα

Ένα όνομα πίνακα είναι οποιαδήποτε ακολουθία χαρακτήρων, αριθμών και η κάτω παύλα "_" που αρχίζει με ένα γράμμα. Η υπόθεση επιστολής είναι σημαντική.

Ακολουθούν μερικά ακόμη παραδείγματα δηλώσεων πίνακα:

Λίστα 2.

Int βαθμοί, παραγγελία? διπλές τιμές?

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

Λίστα 3.

Int arr_int = (2, 5, 5, 3, 4); διπλό arr_float = (1,2, -2,3, 4,5, 3,83, 0,01, -0,12, 44,2, 123,7, 23,44, -3,7, 7);

Εάν πρέπει να αντιστοιχίσετε μηδενικές τιμές σε όλα τα στοιχεία ενός πίνακα, μπορείτε να το κάνετε ως εξής:

Λίστα 4.

Διπλό τόξο = (0);

Εργασία με μεμονωμένα στοιχεία πίνακα

Για να αναφερθείτε σε ένα μεμονωμένο στοιχείο πίνακα, πρέπει να γράψετε το όνομα και τον αύξοντα αριθμό του σε αγκύλες. Μην ξεχνάτε ότι η αρίθμηση ξεκινά από το μηδέν, όχι από το ένα.

Ας εμφανίσουμε, για παράδειγμα, τα στοιχεία ενός πίνακα πέντε στοιχείων στην οθόνη.

Λίστα 5.

#περιλαμβάνω int main(void)( int arr = (2, 4, 3, 5, 5); printf("%d %d %d %d %d\n", arr, arr, arr, arr, arr); return (0);

Φυσικά, αν ο πίνακας είναι πολύ μεγάλος, τότε η έξοδος του στοιχείο προς στοιχείο με αυτόν τον τρόπο εξακολουθεί να είναι ευχάριστη. Και κανείς δεν το κάνει αυτό με μικρές συστοιχίες. Είναι καλύτερο και πιο σωστό να χρησιμοποιείτε βρόχους. Για παράδειγμα:

Λίστα 6.

#περιλαμβάνω int main(void)( int arr = (0); for(int i = 0; i< 100; i = i + 1){ arr[i] = 2*i; } for(int i = 0; i < 100; i = i + 1){ printf("%d\t",arr[i]); } return(0); }

Το πρόγραμμα στον πρώτο βρόχο αποθηκεύει τους πρώτους εκατό ζυγούς αριθμούς σε έναν πίνακα και στον δεύτερο βρόχο τους εμφανίζει στην οθόνη.

Οπλισμένοι με τα νέα μας εργαλεία, ας ξαναγράψουμε το πρόγραμμά μας από την αρχή του μαθήματος έτσι ώστε να χρησιμοποιεί έναν πίνακα για την αποθήκευση στατιστικών τυχαίων αριθμών.

Λίστα 7.

#περιλαμβάνω #περιλαμβάνω #περιλαμβάνω int main(void) ( srand(time(NULL)); int count = (0); int rand_number; for (int i = 0; i< 100000; i = i + 1){ rand_number = rand()%3; count = count + 1; } for(int i = 0; i < 3; i = i + 1){ printf("%d - %d\n", i, count[i]); } return 0; }

Δώστε προσοχή στην τεχνική που χρησιμοποιείται σε αυτό το πρόγραμμα.
Το μηδενικό στοιχείο του πίνακα αποθηκεύει τον αριθμό των εμφανίσεων του αριθμού 0, το πρώτο στοιχείο - τον αριθμό των εμφανίσεων του αριθμού 1, το δεύτερο στοιχείο - τον αριθμό 2. Δηλαδή, ο ίδιος ο αριθμός που δημιουργείται σας επιτρέπει να προσδιορίσετε σε ποιο στοιχείο του πίνακα πρέπει να προσθέσετε ένα. Επομένως, δεν υπάρχει ανάγκη για δήλωση επιλογής διακόπτη. Βολικό, έτσι δεν είναι;