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

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

Δημοσ.

#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 εκει που καλο την συναρτηση για να διμιοθργησω τον δυναμικο πινακα και να τον γεμισω με στοιχεια

Δημοσ.

printf("dwse n*n stoixeia gia na gemisei o pinakas %d",**dimiourgeiapinaka(int)); Σε αυτην την προταση φαινεται να εχω προβλημα

 

^^^^^^

 

Αν δεν βάλεις code tags στον κωδικά σου, αυτό το πράγμα δεν διαβάζεται..

 
Δημοσ.
printf("dwse n*n stoixeia gia na gemisei o pinakas %d",**dimiourgeiapinaka(int));

Τι ακριβώς περιμένεις να κάνει αυτή η εντολή; Ας το πάμε λίγο αντίστροφα, πως θα δώσεις N x N στοιχεία για να γεμίσει ο πίνακας; Μήπως πρώτα πρέπει να πάρεις το Ν από τον χρήστη και μετά να καλέσεις αυτή την συνάρτηση με το Ν ως παράμετρο; Και προφανώς όχι στην printf μέσα, εκτός και αν επιστρέφεις κάτι από την συνάρτηση που θέλεις να το τυπώσεις, κάτι που δεν διαφαίνεται εδώ.

Δημοσ.

Εφοσον χρησιμοποιεις το 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)

Δημοσ.

Εφοσον χρησιμοποιεις το 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)

 

 

Ωχ το μάτι μου... ελπίζω να μην δουλεύεις σε καμία σοβαρή εταιρία. Θα σε είχαν απολύσει... χτές.

 

Άντε γεια!

Δημοσ.

Ωχ το μάτι μου... ελπίζω να μην δουλεύεις σε καμία σοβαρή εταιρία. Θα σε είχαν απολύσει... χτές.

 

Άντε γεια!

 

 

Θα μπορούσες να δείξεις στους υπόλοιπους ποιο είναι το σωστό ή γιατί αυτό είναι λάθος; 

 

Δημοσ.

Μπα... βαρίεμαι. Έχω δουλειά τώρα. Άλλη φορά, εχμ...Τιμόν?!!!? και... Πούμπα?!!!! 

 

LOL

 

:-D  Ασε που θα μάθει να γράφει και καλό κώδικα μετά και θα μου πάρει τη δουλειά... δε ξέρεις ποτε  :-(  :mad:  :unsure: 

 

:devil:  :devil:  :devil: 

Δημοσ.

Μπα... βαρίεμαι. Έχω δουλειά τώρα. Άλλη φορά, εχμ...Τιμόν?!!!? και... Πούμπα?!!!! 

 

LOL

 

:-D  Ασε που θα μάθει να γράφει και καλό κώδικα μετά και θα μου πάρει τη δουλειά... δε ξέρεις ποτε  :-(  :mad:  :unsure: 

 

:devil:  :devil:  :devil: 

 

Πολύ καλογραμμένο βρίσκω τον κώδικα, ειδικά όταν έχει φροντίσει ακόμα να  αντικαταστήσει κάτι το οποίο θα μπορούσε να είναι το παρακάτω τραγικό:

 std::vector< std::pair <std::function<bool(std::vector<std::vector<int>>)>, std::string>>;

Αν εξαιρέσεις τα greeklish functions τα οποία τα πήρε απο τον topic starter ο κώδικας είναι πολύ καθαρός :)

 

Δημοσ.

Μην δώσεις κώδικα... έτσι απλά σχόλια. Να πεις γιατί είναι τόσο χάλια ο κώδικάς του.

 

Αυτό ούτε χρόνο θα σου πάρει αλλά και ούτε θα μάθει σε κανέναν τίποτα. 

 

 

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

 

Οπότε, αναμένουμε. 

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

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

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

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

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

Σύνδεση

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

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