Προς το περιεχόμενο

C/C++: topothetontas stoixeio stin epomeni thesi enos array, xwris na kserw tin thesi


Stilewag

Προτεινόμενες αναρτήσεις

Δημοσ.

Exw enan array kai thelw na topothetisw ena stoixeio (stin prokeimeni periptosi enai int array) stin teleftaia eleftheri thesi.

 

P.x.: an exw apothikefsei stoixeia mexri tin thesi 4, thelw na mou apothikefsei sti thesi 5 dixws egw na tou pw pws einai i thesi 5 stin opoia prepei na to apothikefsei.

 

to parakatw dinei error (stin pascal douleve omws):

 

Table1 = 5;

 

...Fisika mporw na valw mia metavliti "k" kai na exw a[k] alla kanei poly periploko ton kwdika mou. Skeftika mipws iparxei pio efkolos tropos.

Δημοσ.

Φίλε Stilewag, η δήλωση ενός Πίνακα με την κλασσική μέθοδο (int a[N] για τη C/C++ ή array[1..N] για την Pascal) σημαίνει τη δέσμευση της απαραίτητης μνήμης για την καταχώρηση Ν μεταβλητών (εν προκειμένω ακεραίων).

Ολα τα στοιχεία του Πίνακα έχουν τιμή (έστω κι αν η Borland συνηθίζει να τη θέτει ίση με το 0). Ποιές -και πόσες- από τις τιμές αυτές είναι "νόμιμες" για το πρόγραμμά σου δεν μπορεί να το ξέρει παρά μόνο ο κώδικας που έγραψες: Μπορεί π.χ. να κρατάς ένα μετρητή (αυτό λές ότι δεν το θες) ή να αρχικοποιείς τον πίνακα, να θέτεις δηλ. όλα τα στοιχεία του ίσα προς μια τιμή που -αψηφώντας τον Νόμο του Μέρφυ- θεωρείς ότι δεν θα πάρει ποτέ.

Σ' αυτή την τελευταία περίπτωση εξετάζοντας π.χ. τον αριθμό των επισκεπτών ανά ημέρα σε μια εκθεση, θέτεις όλες τις τιμές ίσες με -99, οπότε ψάχνεις μ' ένα while το πρώτο -99 για να προσδιορίσεις την "πρώτη κενή" θέση του πίνακα.

Κατά τη γνώμη μου, ή κάτι τέτοιο πρέπει να θυμάσαι από την Pascal ή αναφέρεσαι όχι σε πίνακα, αλλά σε δυναμική δομή, όπου αναζητούσες μάλλον μεταβλητή τύπου pointer ίση με NIL.

(Παίζει και μια τρίτη περίπτωση: Να μην έχω καταλάβει τίποτε από αυτό που ψάχνεις και να σε ζαλίζω με άσχετα :-) )

Δημοσ.

Έκανα λάθος. Αναφερόμουν σε String της Pascal. Και ακόμα και την δεύτερη φορά που το έγραψα το έκανα λάθος. Το παρακάτω πρόγραμμα εξηγεί καλύτερα από εμένα τι θέλω να κάνω :) (το δοκίμασα σε Borland Turbo Pascal 7.0)

 

PROGRAM StringTest;

 

VAR

OneWord: string[4];

 

BEGIN;

 

OneWord := OneWord + 'a';

OneWord := OneWord + 'b';

OneWord := OneWord + 'c';

 

writeln;

writeln;

 

write(OneWord[1],OneWord[2],OneWord[3]);

 

END.

Δημοσ.

C++:

 

#include <string>

#include <iostream>

 

using namespace std;

 

int main()

{

string OneWord;

 

OneWord = OneWord + 'a';

OneWord = OneWord + 'b';

OneWord = OneWord + 'c';

 

cout << OneWord[0] << " " << OneWord[1] << " " << OneWord[2] << endl;

 

return 0;

}

Δημοσ.

ouch! C++ ε; χμμμ... τι κάνει το "cout"; Το έχω δεί πολλές φορές αλλά δεν έχω ιδέα.

 

Τελικά έβαλα έναν counter, μου πήρε μερικές ώρες... :(

Αρχειοθετημένο

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

  • Δημιουργία νέου...