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

Ασκησουλα με πινακες C++


oallosmoueautos

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

Να γραφεί πρόγραμμα το οποίο να δεχεται από τη γραμμη εντολών τη διάσταση

Ν δύο άνω τριγωνικών πινάκων ακεραίων. Πιο συγκεκριμένα, θα εχει Ν γραμμες. Η

πρώτη γραμμη του κάθε πίνακα κα εχει Ν κελιά. Η δευτερη γραμμη του πίνακα θα

εχει Ν-1 κελιά κ.ο.κ. Το πρόγραμμά σας θα δεσμευει δυναμικά μνημη (με τον

τελεστη new) για τους δυο πίνακες και θα τους γεμίζει διαβάζοντας τιμές από το

cin. Εν συνεχεία κα τους προσθετει και κα τυπώνει το αποτελεσμα.

 

Καμια υποδειξη μπορειτε να μου δώσετε?

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Υποδειξη (μπορεις να παραβλεψεις οτι ήδη εχεις κανει/ξερεις)

 

1) Γραψε, μεταγλωτισσε και τρεξε ενα προγραμμα που γραφει "Hello World" (ή οτι εσυ θες) στην οθονη. (Hint, χρηση std::cout)

2) Περασμα ορισματων. Μαθε πως παιρνεις όρισμα απο τη γραμμη εντολών (google for command line arguments). Παρε την τιμη Ν απο το χρήστη (ενας ακεραιος ειναι) και τυπωσε το ορισμα στην οθονη, του στυλ " User input was: 1821"

3) Δυναμική δέσμευση πίνακα. Φτίαξε ένα πινακα ακεραιων Ν στοιχειων (οπου Ν ειανι η μεταβλητη που έδψσε ο χρηστης στο βημα 2). Μετα δοκιμασε να τον κανεις ΝΧΝ. Αντιστοιχη συζητησουλα εδω http://www.cplusplus.com/forum/beginner/63/ ενω επισης μπορεις να google-αρεις για dynamic 2-dimensional arrays. Θα το κανεις 2 φορες, για τους 2 πινακες

4) Γεμισμα τιμων. Εδω εχει λιγο μανουρα, θα πρεπει να παιρνεις μια-μια τις τιμε απο το χρηστη και να τις βαζεις στον πινακα, θα γινει μεσα σε διπλο for loop (δηλ ενα for μεσα σε ένα άλλο for).Του στυλ, για κάθε γραμμη, για καθε στηλη, ζητα απο το χρηστη το στοιχειο για την αντιστοιχη γραμμη/στηλη. Catch: επειδη ειναι άνω τριγωνικος πινακας, στο 2ο for (το πιο μεσα, που μετραει στηλες), η αρχικη τιμη θα πρεπει να ειναι καθε φορα ενα παραπανω

γενικο πχ

>
for(int row = 0; row < N; row++)
{
   for(int column = row; column < N; column++)
   {
	  cout << "Give value for " << row << ", " << column << ": ";
	  cin >> array[row][column];
   }
}

Θα επαναλαβεις το ιδιο και για τον 2ο πινακα

5) Εκτυπωση των περιεχομενων διδιαστατου πινακα. Αν και γινεται τελευταιο, ειναι χρησιμο να το κανεις πρωτα ωστε να ελεγξεις αν εβαλες τις τιμες σωστα.

6) Προσθεση 2 διδιαστατων πινακων. Θα χρειαστει να φτιαξεις ακομα ενα πινακα (βημα 3) για να κρατησεις το αποτελεσμα. Google for it. Bonus αν το οπτιμαρεις για ανω-τριγωνικους πινακες, δηλαδη δε προσπαθησεις να προσθεσεις τα στοιχεια που ξερεις πως ειναι μηδενικα ετσι και αλλιως.

7) Εκτυπωση του αποτελεσματoς

 

Καλη επιτυχια

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Εχει αρκετη δουλίτσα δηλαδη.. Δεν ειναι τοσο απλο οσο ακουγεται.. Σιγουρα δεν εχει κανα πιο ευκολο τροπο με λιγότερο κώδικα?

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ναι, διδιαστατος και ο χώρος του αποθηκεύεται έτσι

>
int** ar = (int**) malloc(sizeof(int*) * N);
for (i = 0; i < N; i++)
ar[i] = (int*) malloc(sizeof(int) * N);

 

 

Δεν νομίζω ότι είναι καλή ιδέα δέσμευση μνήμης με malloc στη C++.

 

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

  • Like 2
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δεν νομίζω ότι είναι καλή ιδέα δέσμευση μνήμης με malloc στη C++.

 

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

 

Σωστό, νόμιζα C (αν και το λέει στον τίτλο)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δεν νομίζω ότι είναι καλή ιδέα δέσμευση μνήμης με malloc στη C++.

 

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

 

Αν θες κανεις ενα παραδειγμα να το δω?.. στο ιδιο ακριβως που εβαλε ο φίλος για να συγκρινω..

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Μ' αρεσει που σου εδωσα και λινκ.......

Αντε να κανω paste

 

>
#include <iostream.h>
void main() {
const int rows = 4;
const int cols = 4;
// declaration
int ** a;
// allocation
a = new int*[rows];
for(int i = 0; i < rows; i++)
 a[i] = new int[cols];
// initialization
for(int j = 0; j < rows; j++)
 for(int i = 0; i < rows; i++)
  a[i][j] = 0;
}

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Μ' αρεσει που σου εδωσα και λινκ.......

Αντε να κανω paste

 

>
#include <iostream.h>
void main() {
const int rows = 4;
const int cols = 4;
// declaration
int ** a;
// allocation
a = new int*[rows];
for(int i = 0; i < rows; i++)
a[i] = new int[cols];
// initialization
for(int j = 0; j < rows; j++)
for(int i = 0; i < rows; i++)
a[i][j] = 0;
}

 

Ναι ωραια.. δεν το ειχα δει το λινκ.. Ευχαριστω πολυ.. Μπραβο ρε παιδια παντως ατσίδες ειστε.. Να κανουμε παρέα να μου μαθετε και μενα τιποτε.. Παω να εργαστω..

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...