Μαντσιος Δημοσ. 5 Μαρτίου 2014 Δημοσ. 5 Μαρτίου 2014 #include <iostream>#include <stdio.h>#include <stdlib.h>using namespace std;int symetrikos(int **, int);int anwtrigwnikos(int **, int);int katwtrigwnikos(int **, int);int araios(int **, int);int**dimiourgeiapinaka(int);int main(){int **a;int **b;int n;printf("Dwse tis diastaseis tou pinaka");scanf("%d",&n);printf("dwse n*n stoixeia gia na gemisei o pinakas %d",**dimiourgeiapinaka(int)); if ( anwtrigwnikos(a,n) == 1){ printf("O pinakas einai anw trigwnikos\n");} else{ printf("O pinakas den einai anw trigwnikos\n");} if ( katwtrigwnikos(a,n) == 1){ printf("O pinakas einai katw trigwnikos\n");} else{ printf("O pinakas den einai katw trigwnikos\n");} if ( symetrikos(a,n) == 1){ printf("O pinakas einai symetrikos\n");} else{ printf("O pinakas den einai symetrikos\n");} if ( araios(a,n) == 1){ printf("O pinakas einai araios\n");} else{ printf("O pinakas den einai araios\n");} return 0;}int anwtrigwnikos(int **b, int n){ int i,j; for (i = 1;i < n;i++){ for (j = 0;j < i;j++){ if ( (*(*(b+i) + j) ) != 0){ return 0; } } }return 1;}int katwtrigwnikos(int **b, int n){ int i,j; for (j = 1;j < n;j++){ for (i = 0;i < j;i++){ if ( (*(*(b+i) + j) ) != 0){ return 0; } } }return 1;}int symetrikos(int **b, int n){ int i,j; for (i=0;i<n;i++){ for (j=0;j<n;j++){ if ( (*(*(b+i) + j) ) != (*(*(b+j) + i) )){ return 0;} } }return 1;}int araios(int **b, int n){ int i,j,count=0; for (i=0;i<n;i++){ for (j=0;j<n;j++){ if ( (*(*(b+i) + j) ) == 0){ count++; } } } if (count >= n*n*80/100){ return 1; } else{ return 0; }}int ** dimiourgeiapinaka(int n){ int i, j, number1,number2; int **B; B=(int **)malloc(n*sizeof(int *)); for(i=0; i<n; i++){ B=(int *)malloc(n*sizeof(int)); } for(i=0; i<n; i++){ printf("dwse mou enan arithmo"); scanf("%d",&number1); B[j]=number1; for(j=0; j<n; j++){ printf("dwse mou enan arithmo"); scanf("%d", &number2); B[j]=number2; } return B; }αυτος ειναι ο κωδικας μου και μου κρασαρει στην αρχη στο printf εκει που καλο την συναρτηση για να διμιοθργησω τον δυναμικο πινακα και να τον γεμισω με στοιχεια
Tmark Δημοσ. 5 Μαρτίου 2014 Δημοσ. 5 Μαρτίου 2014 Αν δεν βάλεις code tags στον κωδικά σου, αυτό το πράγμα δεν διαβάζεται.. 1
Μαντσιος Δημοσ. 5 Μαρτίου 2014 Μέλος Δημοσ. 5 Μαρτίου 2014 printf("dwse n*n stoixeia gia na gemisei o pinakas %d",**dimiourgeiapinaka(int)); Σε αυτην την προταση φαινεται να εχω προβλημα
arc Δημοσ. 5 Μαρτίου 2014 Δημοσ. 5 Μαρτίου 2014 printf("dwse n*n stoixeia gia na gemisei o pinakas %d",**dimiourgeiapinaka(int)); Σε αυτην την προταση φαινεται να εχω προβλημα ^^^^^^ Αν δεν βάλεις code tags στον κωδικά σου, αυτό το πράγμα δεν διαβάζεται..
bokarinho Δημοσ. 5 Μαρτίου 2014 Δημοσ. 5 Μαρτίου 2014 printf("dwse n*n stoixeia gia na gemisei o pinakas %d",**dimiourgeiapinaka(int)); Τι ακριβώς περιμένεις να κάνει αυτή η εντολή; Ας το πάμε λίγο αντίστροφα, πως θα δώσεις N x N στοιχεία για να γεμίσει ο πίνακας; Μήπως πρώτα πρέπει να πάρεις το Ν από τον χρήστη και μετά να καλέσεις αυτή την συνάρτηση με το Ν ως παράμετρο; Και προφανώς όχι στην printf μέσα, εκτός και αν επιστρέφεις κάτι από την συνάρτηση που θέλεις να το τυπώσεις, κάτι που δεν διαφαίνεται εδώ.
DeltaLover Δημοσ. 5 Μαρτίου 2014 Δημοσ. 5 Μαρτίου 2014 Εφοσον χρησιμοποιεις το namespace std, προφανως χρησιμοποιεις C++. Σε αυτη την περιπτωση θα συνιστουσα να ξεκιναγες απο κατι τετοιο και να το βελτιωνες οπου νομιζεις οτι χρειαζεσαι περισσοτερη expressibility, performance η code reuse... #include <iostream> #include <string> #include <vector> #include <utility> #include <functional> #include <assert.h> using INTEGER_ARRAY = std::vector<int>; using MATRIX = std::vector<INTEGER_ARRAY>; using MATRIX_CREF = const MATRIX&; using MATRIX_PROPERTY_FUNC = std::function<bool(MATRIX_CREF)>; using MATRIX_PROPERTIES = std::vector< std::pair <MATRIX_PROPERTY_FUNC, std::string>>; using MATRIX_PROPERTIES_CREF = const MATRIX_PROPERTIES&; void assert_matrix(MATRIX_CREF matrix){ const int rows = matrix.size(); for(auto& row: matrix){ assert(row.size() == rows); } } bool anwtrigwnikos(MATRIX_CREF matrix) { assert_matrix(matrix); for (int i = 1; i < matrix.size(); ++i){ for (int j = 0; j < i; ++j){ if (matrix [j] [i] != 0){ return false; } } } return true; } bool katwtrigwnikos(MATRIX_CREF matrix) { assert_matrix(matrix); for (int j = 1;j < matrix.size(); ++j){ for (int i = 0;i < j; ++i){ if (matrix [j] [i] != 0){ return false; } } } return true; } bool symetrikos(MATRIX_CREF matrix) { assert_matrix(matrix); for (int i=0; i < matrix.size(); ++i){ for (int j=0;j < matrix.size(); ++j){ if ( matrix[i][j] != matrix[j][i]){ return false; } } } return true; } bool araios(MATRIX_CREF matrix) { assert_matrix(matrix); int count=0; for (int i=0;i < matrix.size(); ++i){ for (int j=0; j < matrix.size(); ++j){ if (matrix[i][j] == 0){ count++; } } } return count >= matrix.size()*matrix.size()*80/100; } MATRIX read_matrix(int N) { int input; MATRIX matrix; for(int row = 0; row < N; ++row){ INTEGER_ARRAY new_row; for(int col = 0; col < N; ++col){ std::cout << row << ":" << col << " -> "; std::cin >> input; new_row.push_back(input); } matrix.push_back(new_row); } assert_matrix(matrix); return matrix; } MATRIX_PROPERTIES properties = { std::make_pair (anwtrigwnikos, "ανω τριγωνικος"), std::make_pair (katwtrigwnikos,"κατω τριγωνικος"), std::make_pair (symetrikos,"συμμετρικος"), std::make_pair (araios,"αραιος"), }; void show_properties(MATRIX_CREF matrix) { std::cout << "Ιδιοτητες: " << std::endl; for(auto& property : properties){ std::cout << (property.first(matrix) ? "" : "δεν ") << "ειναι " << property.second << std::endl; } } int main() { show_properties(read_matrix(2)); } (για να κανεις compile : g++ -std=c++0x prog_name.cpp)
DeltaLover Δημοσ. 7 Μαρτίου 2014 Δημοσ. 7 Μαρτίου 2014 Τελικα, δεν εισαι ο δελαπορτας. Δεν καταλαβα τον υπαινιγμο παπι.. Δωσε hint...
Moderators Kercyn Δημοσ. 7 Μαρτίου 2014 Moderators Δημοσ. 7 Μαρτίου 2014 Δεν καταλαβα τον υπαινιγμο παπι.. Δωσε hint... hint 1
PCC Δημοσ. 12 Μαρτίου 2014 Δημοσ. 12 Μαρτίου 2014 Εφοσον χρησιμοποιεις το namespace std, προφανως χρησιμοποιεις C++. Σε αυτη την περιπτωση θα συνιστουσα να ξεκιναγες απο κατι τετοιο και να το βελτιωνες οπου νομιζεις οτι χρειαζεσαι περισσοτερη expressibility, performance η code reuse... #include <iostream> #include <string> #include <vector> #include <utility> #include <functional> #include <assert.h> using INTEGER_ARRAY = std::vector<int>; using MATRIX = std::vector<INTEGER_ARRAY>; using MATRIX_CREF = const MATRIX&; using MATRIX_PROPERTY_FUNC = std::function<bool(MATRIX_CREF)>; using MATRIX_PROPERTIES = std::vector< std::pair <MATRIX_PROPERTY_FUNC, std::string>>; using MATRIX_PROPERTIES_CREF = const MATRIX_PROPERTIES&; void assert_matrix(MATRIX_CREF matrix){ const int rows = matrix.size(); for(auto& row: matrix){ assert(row.size() == rows); } } bool anwtrigwnikos(MATRIX_CREF matrix) { assert_matrix(matrix); for (int i = 1; i < matrix.size(); ++i){ for (int j = 0; j < i; ++j){ if (matrix [j] [i] != 0){ return false; } } } return true; } bool katwtrigwnikos(MATRIX_CREF matrix) { assert_matrix(matrix); for (int j = 1;j < matrix.size(); ++j){ for (int i = 0;i < j; ++i){ if (matrix [j] [i] != 0){ return false; } } } return true; } bool symetrikos(MATRIX_CREF matrix) { assert_matrix(matrix); for (int i=0; i < matrix.size(); ++i){ for (int j=0;j < matrix.size(); ++j){ if ( matrix[i][j] != matrix[j][i]){ return false; } } } return true; } bool araios(MATRIX_CREF matrix) { assert_matrix(matrix); int count=0; for (int i=0;i < matrix.size(); ++i){ for (int j=0; j < matrix.size(); ++j){ if (matrix[i][j] == 0){ count++; } } } return count >= matrix.size()*matrix.size()*80/100; } MATRIX read_matrix(int N) { int input; MATRIX matrix; for(int row = 0; row < N; ++row){ INTEGER_ARRAY new_row; for(int col = 0; col < N; ++col){ std::cout << row << ":" << col << " -> "; std::cin >> input; new_row.push_back(input); } matrix.push_back(new_row); } assert_matrix(matrix); return matrix; } MATRIX_PROPERTIES properties = { std::make_pair (anwtrigwnikos, "ανω τριγωνικος"), std::make_pair (katwtrigwnikos,"κατω τριγωνικος"), std::make_pair (symetrikos,"συμμετρικος"), std::make_pair (araios,"αραιος"), }; void show_properties(MATRIX_CREF matrix) { std::cout << "Ιδιοτητες: " << std::endl; for(auto& property : properties){ std::cout << (property.first(matrix) ? "" : "δεν ") << "ειναι " << property.second << std::endl; } } int main() { show_properties(read_matrix(2)); } (για να κανεις compile : g++ -std=c++0x prog_name.cpp) Ωχ το μάτι μου... ελπίζω να μην δουλεύεις σε καμία σοβαρή εταιρία. Θα σε είχαν απολύσει... χτές. Άντε γεια!
Timonkaipumpa Δημοσ. 12 Μαρτίου 2014 Δημοσ. 12 Μαρτίου 2014 Ωχ το μάτι μου... ελπίζω να μην δουλεύεις σε καμία σοβαρή εταιρία. Θα σε είχαν απολύσει... χτές. Άντε γεια! Θα μπορούσες να δείξεις στους υπόλοιπους ποιο είναι το σωστό ή γιατί αυτό είναι λάθος;
PCC Δημοσ. 12 Μαρτίου 2014 Δημοσ. 12 Μαρτίου 2014 Μπα... βαρίεμαι. Έχω δουλειά τώρα. Άλλη φορά, εχμ...Τιμόν?!!!? και... Πούμπα?!!!! LOL Ασε που θα μάθει να γράφει και καλό κώδικα μετά και θα μου πάρει τη δουλειά... δε ξέρεις ποτε
ZAKKWYLDE Δημοσ. 12 Μαρτίου 2014 Δημοσ. 12 Μαρτίου 2014 Μπα... βαρίεμαι. Έχω δουλειά τώρα. Άλλη φορά, εχμ...Τιμόν?!!!? και... Πούμπα?!!!! LOL Ασε που θα μάθει να γράφει και καλό κώδικα μετά και θα μου πάρει τη δουλειά... δε ξέρεις ποτε Πολύ καλογραμμένο βρίσκω τον κώδικα, ειδικά όταν έχει φροντίσει ακόμα να αντικαταστήσει κάτι το οποίο θα μπορούσε να είναι το παρακάτω τραγικό: std::vector< std::pair <std::function<bool(std::vector<std::vector<int>>)>, std::string>>; Αν εξαιρέσεις τα greeklish functions τα οποία τα πήρε απο τον topic starter ο κώδικας είναι πολύ καθαρός
Timonkaipumpa Δημοσ. 12 Μαρτίου 2014 Δημοσ. 12 Μαρτίου 2014 Μην δώσεις κώδικα... έτσι απλά σχόλια. Να πεις γιατί είναι τόσο χάλια ο κώδικάς του. Αυτό ούτε χρόνο θα σου πάρει αλλά και ούτε θα μάθει σε κανέναν τίποτα. Δεν θα σου πάρει χρόνο γιατί ξέρεις ήδη τι δεν είναι σωστό και δεν θα μάθει κανείς τίποτα γιατί δεν θα το δει στην πράξη. Μόνο λόγια θα γράψεις. Οπότε, αναμένουμε.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα