Directx Δημοσ. 30 Ιανουαρίου 2011 Δημοσ. 30 Ιανουαρίου 2011 Το βρηκα το προβλημα γιατι κλεινει κατι παιζει μετα l-- και m++ που εχω βαλει τα αλλαξα σε l=l-1 και τωρα δεν βγαζει προβλημα... Αλλα τωρα δεν συνεχιζει το προγραμμα κατι γινεται με την for και την while. Βλεπετε κατι λαθος; :-( Καταρχήν άλλαξε την δήλωση μεγέθους πίνακα σε κάθε κλήση της emfanisi από 30 σε 29, κάνε το ίδιο και για το emfanisi του τελικού πίνακα (δηλαδή άλλαξε το μέγεθος από 15 σε 14). Ύστερα αφαίρεσε το do & while βρόχο από την for(k=0;.. > #include <cstdlib> #include <iostream> using namespace std; void emfanisi(int v[],int n) { int i; for(i=0;i<=n;i++){ cout<<v[i]<<endl; } } int main(int argc, char *argv[]) { int PinA[30]; int i; for(i=0;i<=29;i++) { PinA[i]= rand()%10 + 1; } cout<<"o pinakas PinA apoteleitai apo"<<endl; emfanisi(PinA,29); int Npin[15]; int k,l=0,m=29; for(k=0;k <=14;k++) { // do { Npin[k]=PinA[l]-PinA[m]; l++; m--; // } while (l==14); } cout<<"o pinakas Npin apoteleitai apo"<<endl; emfanisi (Npin,14); getchar(); return EXIT_SUCCESS; } Η έξοδος που θα πάρεις με αυτές τις μετατροπές είναι: > o pinakas PinA apoteleitai apo 1 3 1 7 8 6 6 9 7 5 9 2 10 3 1 3 2 4 8 10 2 1 6 5 10 3 2 10 7 2 o pinakas Npin apoteleitai apo -1 -4 -9 5 5 -4 1 3 6 3 -1 -6 6 1 -2 * Προσπάθησα να μην κάνω καμία σημαντική αλλαγή στον κώδικα σου για να μην σε μπερδέψω. * Οι τιμές του πίνακα είναι τυχαίες αλλά δεν αλλάζουν ποτέ μεταξύ των εκτελέσεων του προγράμματος (διότι δεν κάνεις seed την γεννήτρια ψευδοτυχαίων αριθμών) και μπορεί να διαφέρουν [?] από compiler σε compiler.
Evgenios1 Δημοσ. 30 Ιανουαρίου 2011 Δημοσ. 30 Ιανουαρίου 2011 Και μια generic λυση απο μενα >template< class _It> void Print(_It first, _It last) { for(; first != last; ++first) { std::cout<< *first << std::endl; } } template< class _It> // το _It ειναι ο Χ τυπος μας, στη περιπτωση μας ειναι το int* void DoSomthing( _It pin1First, // πρωτο στοιχειο του πρωτου πινακα (pinN) _It pin1Last, // τελευταιο +1 στοιχειο του πρωτου πινακα (pinN+15) _It pin2First, // πρωτο στοιχειο του δευτερου πινακα (PinA) _It pin2Last) // τελευταιο +1 στοιχειο του δευτερου πινακα (PinA+30) { for(--pin2Last ; // εφοσον το pin2Last ειναι το τελευταιο +1 στοιχειο, πρεπει να το παμε μια θεση πισω pin1First != pin1Last && pin2First != pin2Last; // οσο η θεση του πρωτου στοιχειου του πρωτου πινακα δεν εχει φτασει το // τελευταιο +1 στοιχειο του πρωτου πινακα ΚΑΙ αντιστοιχα για το δευτερου // πινακα κανε τα παρακατω ++pin1First, // βαλε το pin1First να δειχνει το επομενο στοιχειο --pin2Last, // βαλε το pin2Last να δειχνει το προηγουμενο στοιχειο ++pin2First) // βαλε το pin2First να δειχνει το επομενο στοιχειο { *pin1First = *pin2Last - *pin2First ; // κανε τη πραξη } /* φαση 1 ================================================================================================= pinN ___________________________________ |0|1|2|3|4|5|6|7|8|9|10|11|12|13|14| |_|_|_|_|_|_|_|_|_|_|__|__|__|__|__| ^ ^ +-----------------------------------|----- pin1First +----- pin1Last PinA _____________________________________________________________________________ |0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|29| |_|_|_|_|_|_|_|_|_|_|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__| ^ ^ +-----------------------------------------------------------------------------|--- pin2First +--- pin2Last ================================================================================================ φαση 2 ( for(--pin2Last ;....) ================================================================================================= pinN ___________________________________ |0|1|2|3|4|5|6|7|8|9|10|11|12|13|14| |_|_|_|_|_|_|_|_|_|_|__|__|__|__|__| ^ ^ +-----------------------------------|----- pin1First +----- pin1Last PinA _____________________________________________________________________________ |0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|29| |_|_|_|_|_|_|_|_|_|_|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__| ^ ^ +-------------------------------------------------------------------------|--- pin2First +--- pin2Last ================================================================================================ φαση 3 ( looping ) ================================================================================================= pinN ___________________________________ |0|1|2|3|4|5|6|7|8|9|10|11|12|13|14| |_|_|_|_|_|_|_|_|_|_|__|__|__|__|__| ^ ^ +---------------------------------|----- pin1First +----- pin1Last PinA _____________________________________________________________________________ |0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|29| |_|_|_|_|_|_|_|_|_|_|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__| ^ ^ +--------------------------------------------------------------------|--- pin2First +--- pin2Last ================================================================================================ φαση 4 ( looping... ) ================================================================================================= pinN ___________________________________ |0|1|2|3|4|5|6|7|8|9|10|11|12|13|14| |_|_|_|_|_|_|_|_|_|_|__|__|__|__|__| ^ ^ +-------------------------------|----- pin1First +----- pin1Last PinA _____________________________________________________________________________ |0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|29| |_|_|_|_|_|_|_|_|_|_|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__| ^ ^ +---------------------------------------------------------------|--- pin2First +--- pin2Last ================================================================================================ φαση 16 ( looping... ) ================================================================================================= pinN ___________________________________ |0|1|2|3|4|5|6|7|8|9|10|11|12|13|14| |_|_|_|_|_|_|_|_|_|_|__|__|__|__|__| ^ ^ +---|----- pin1First +----- pin1Last PinA _____________________________________________________________________________ |0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|29| |_|_|_|_|_|_|_|_|_|_|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__| ^ +----------------------------------------------- pin2First +----------------------------------------------- pin2Last ================================================================================================ The End */ } int main(int argc, char *argv[]) { int PinA[30]; int i; for(i=0;i<=29;i++) { PinA[i]=rand()%10+1; } cout<<"o pinakas PinA apoteleitai apo"<<endl; Print(PinA,PinA+30); int Npin[15]; DoSomthing(Npin,Npin+15,PinA,PinA+30); cout<<"o pinakas Npin apoteleitai apo"<<endl; Print(Npin,Npin+15); system("PAUSE"); return EXIT_SUCCESS; } EDIT: Best view at 1020p
padelis71992 Δημοσ. 30 Ιανουαρίου 2011 Μέλος Δημοσ. 30 Ιανουαρίου 2011 Ευχαριστω παιδια για τη λυση της ασκησης την εστειλα μολις. Βεβαια σωστη μονο τη μια γιατι την αλλη δεν την μπορεσα. Αλλα δεν πειραζει Ευχαριστω και παλι!
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.