Help έχω κολλήσει σε άσκηση στην c...

Συζητήσεις για την γλώσσα C και C++

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
mariosxania
Δημοσιεύσεις: 3
Εγγραφή: 23 Νοέμ 2009 03:56

Help έχω κολλήσει σε άσκηση στην c...

Δημοσίευση από mariosxania » 23 Νοέμ 2009 04:04

Λοιπόν παιδιά καλώς σας βρήκα πρώτα από όλα είμαι νέο μέλος :D
Εχω μια απορία στην c και δεν μπορώ να προχωρήσω την εξής άσκηση

Κώδικας: Επιλογή όλων

#include <stdio.h>
#include <stdlib.h>

void epiloges&#40;&#41;
&#123;
    printf&#40;"\n\n"&#41;;
    printf&#40;"Eisagete ton antistoixo ari8mo tis epilogis sas apo to parakato menoy\n"&#41;;
    printf&#40;"&#40;1&#41; gia anastrofh ws tin prwti diagwnio\n"&#41;;
    printf&#40;"&#40;2&#41; gia anastrofi ws tin deyteri diagonio\n"&#41;;
    printf&#40;"&#40;3&#41; symmetrikoi os pros grammes\n"&#41;;
    printf&#40;"&#40;4&#41; gia  symmetrikoi os pros stiles\n"&#41;;
    printf&#40;"&#40;5&#41; gia deksia strofi 90 moiron\n"&#41;;
    printf&#40;"&#40;6&#41; gia strofi 180 moiron\n"&#41;;
    printf&#40;"&#40;7&#41; gia aristeri strofi 90 moiron\n"&#41;;
&#125;

void anast1&#40;int p&#91;&#93;&#91;&#93;&#41;
&#123;

&#125;


main&#40;&#41;
&#123;
    int temp,dimx,dimy,i,j;
    srand&#40;time&#40;0&#41;&#41;;
    temp=rand&#40;&#41;%15;
    dimx=temp;
    dimy=temp;
    int pinax&#91;dimx&#93;&#91;dimy&#93;;
    for&#40;i=0;i<temp;i++&#41;
        &#123;
            for&#40;j=0;j<temp;j++&#41;
                pinax&#91;i&#93;&#91;j&#93;=rand&#40;&#41;%10;
        &#125;
printf&#40;"\no pinakas einai o eksis&#58;\n"&#41;;
    for&#40;i=0;i<temp;i++&#41;
        &#123;   printf&#40;"\n"&#41;;
            for&#40;j=0;j<temp;j++&#41;
                printf&#40;"%5d",pinax&#91;i&#93;&#91;j&#93;&#41;;
        &#125;
epiloges&#40;&#41;;



&#125;
Αυτό που θέλω να ρωτήσω είναι πώς θα δηλώσω την συνάρτηση(την anast1) τι ορίσματα πρέπει να βάλω για να παίρνει ένα δισδιαστατο πίνακα ανεξαρτήτως γραμμών και στηλλών?

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Help έχω κολλήσει σε άσκηση στην c...

Δημοσίευση από dva_dev » 23 Νοέμ 2009 10:38

Αν έχετε κάνει pointers αυτό μάλλον θα σε βοηθήσει να βγάλεις άκρη

Κώδικας: Επιλογή όλων

#include <stdio.h>
#include <stdlib.h>

#define ARRAY_ROWS	&#40;6&#41;
#define ARRAY_COLS	&#40;9&#41;

void print_array&#40;int rows, int cols, int *p&#41;
&#123;
	int i,j;
	
	for &#40;i=0; i<rows;i++&#41;
	&#123;
		for &#40;j=0; j<cols; j++&#41;
		&#123;
			printf&#40; "%3d", p&#91;i*cols+j&#93; &#41;;
		&#125;
		puts&#40;""&#41;;
	&#125;
&#125;

int main&#40;int argc, char** argv&#41;
&#123;
	int arr&#91;ARRAY_ROWS&#93;&#91;ARRAY_COLS&#93;;
	int i,j;
	
	for &#40;i=0; i<ARRAY_ROWS; i++&#41;
	&#123;
		for &#40;j=0;j<ARRAY_COLS; j++&#41;
		&#123;
			arr&#91;i&#93;&#91;j&#93;= 10*&#40;i+1&#41;+&#40;j+1&#41;;
		&#125;
	&#125;
	print_array&#40; ARRAY_ROWS, ARRAY_COLS, &#40;int *&#41;arr &#41;;
	return 0;
&#125;

Άβαταρ μέλους
virxen75
Δημοσιεύσεις: 493
Εγγραφή: 18 Φεβ 2009 00:17
Τοποθεσία: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ

Help έχω κολλήσει σε άσκηση στην c...

Δημοσίευση από virxen75 » 23 Νοέμ 2009 11:29

dva_dev έγραψε:Αν έχετε κάνει pointers αυτό μάλλον θα σε βοηθήσει να βγάλεις άκρη

Κώδικας: Επιλογή όλων

#include <stdio.h>
#include <stdlib.h>

#define ARRAY_ROWS	&#40;6&#41;
#define ARRAY_COLS	&#40;9&#41;

void print_array&#40;int rows, int cols, int *p&#41;
&#123;
	int i,j;
	
	for &#40;i=0; i<rows;i++&#41;
	&#123;
		for &#40;j=0; j<cols; j++&#41;
		&#123;
			printf&#40; "%3d", p&#91;i*cols+j&#93; &#41;;
		&#125;
		puts&#40;""&#41;;
	&#125;
&#125;

int main&#40;int argc, char** argv&#41;
&#123;
	int arr&#91;ARRAY_ROWS&#93;&#91;ARRAY_COLS&#93;;
	int i,j;
	
	for &#40;i=0; i<ARRAY_ROWS; i++&#41;
	&#123;
		for &#40;j=0;j<ARRAY_COLS; j++&#41;
		&#123;
			arr&#91;i&#93;&#91;j&#93;= 10*&#40;i+1&#41;+&#40;j+1&#41;;
		&#125;
	&#125;
	print_array&#40; ARRAY_ROWS, ARRAY_COLS, &#40;int *&#41;arr &#41;;
	return 0;
&#125;

και στην περίπτωση σου το παραπάνω γίνεται

Κώδικας: Επιλογή όλων

#include <stdio.h>
#include <stdlib.h>
#include <time.h>  //χρειάζεται για να χρησιμοποιήσεις την time
void epiloges&#40;&#41;
&#123;
    printf&#40;"\n\n"&#41;;
    printf&#40;"Eisagete ton antistoixo ari8mo tis epilogis sas apo to parakato menoy\n"&#41;;
    printf&#40;"&#40;1&#41; gia anastrofh ws tin prwti diagwnio\n"&#41;;
    printf&#40;"&#40;2&#41; gia anastrofi ws tin deyteri diagonio\n"&#41;;
    printf&#40;"&#40;3&#41; symmetrikoi os pros grammes\n"&#41;;
    printf&#40;"&#40;4&#41; gia  symmetrikoi os pros stiles\n"&#41;;
    printf&#40;"&#40;5&#41; gia deksia strofi 90 moiron\n"&#41;;
    printf&#40;"&#40;6&#41; gia strofi 180 moiron\n"&#41;;
    printf&#40;"&#40;7&#41; gia aristeri strofi 90 moiron\n"&#41;;
&#125;

void anast1&#40;int *p,int nrows,int ncols&#41;
&#123;
    int i,j;
printf&#40;"\nektelesi anast1&#58;"&#41;;
    for&#40;i=0;i<nrows;i++&#41;
        &#123;   printf&#40;"\n"&#41;;
            for&#40;j=0;j<ncols;j++&#41;
                p&#91;i * ncols + j&#93;++;//αυξάνει τα στοιχεία του πίνακα κατά 1
        &#125;
&#125;


main&#40;&#41;
&#123;
    int temp,dimx,dimy,i,j;
    srand&#40;time&#40;NULL&#41;&#41;;
    temp=rand&#40;&#41;%15+1;//για να ξεκινάει από το 1,το μηδεν δεν έχει νόημα
    dimx=temp;
    dimy=temp;
    int pinax&#91;dimx&#93;&#91;dimy&#93;;
    for&#40;i=0;i<temp;i++&#41;
        &#123;
            for&#40;j=0;j<temp;j++&#41;
                pinax&#91;i&#93;&#91;j&#93;=rand&#40;&#41;%10;
        &#125;
printf&#40;"\no pinakas einai o eksis&#58;\n"&#41;;
    for&#40;i=0;i<temp;i++&#41;
        &#123;   printf&#40;"\n"&#41;;
            for&#40;j=0;j<temp;j++&#41;
                printf&#40;"%5d",pinax&#91;i&#93;&#91;j&#93;&#41;;
        &#125;
        anast1&#40;&pinax&#91;0&#93;&#91;0&#93;,dimx,dimy&#41;;//κλήση της συνάρτησης

printf&#40;"\nmeta tin anast1 o pinakas einai o eksis&#58;\n"&#41;;
    for&#40;i=0;i<temp;i++&#41;
        &#123;   printf&#40;"\n"&#41;;
            for&#40;j=0;j<temp;j++&#41;
                printf&#40;"%5d",pinax&#91;i&#93;&#91;j&#93;&#41;;
        &#125;        
  
        
epiloges&#40;&#41;;
getchar&#40;&#41;;


&#125; 

mariosxania
Δημοσιεύσεις: 3
Εγγραφή: 23 Νοέμ 2009 03:56

Help έχω κολλήσει σε άσκηση στην c...

Δημοσίευση από mariosxania » 25 Νοέμ 2009 00:30

Ευχαριστώ πολύ αν και δεν είχαμε κάνει pointer αλλά δεν πειράζει.Σας ευχαριστώ πολύ...

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Help έχω κολλήσει σε άσκηση στην c...

Δημοσίευση από dva_dev » 25 Νοέμ 2009 00:50

τι ορίσματα πρέπει να βάλω για να παίρνει ένα δισδιαστατο πίνακα ανεξαρτήτως γραμμών και στηλλών?
Αν δεν έχετε κάνει pointers δεν γίνεται. Αυτό όμως που γίνεται είναι να περνάς πάντα έναν πίνακα με προκαθορισμένες μέγιστες διαστάσεις, ώστε να τον χρησιμοποιείς για όλους τους πίνακες που θέλεις μέχρι αυτές τις διαστάσεις.
Δηλαδή δηλώνεις έναν πίνακα 10Χ10 και περνάς αυτόν ακόμα και αν χρησιμοποιείς μόνο το κομμάτι 2Χ2 ή 3Χ3 ή 4Χ4. Βέβαια επειδή το πρόγραμμα ξέρει ότι εσύ περνάς 10Χ10 θα πρέπει και να του πεις και ποιές είναι οι διαστάσεις που έχεις γεμίσει (2Χ2) ή (3Χ3), κ.λπ...

mariosxania
Δημοσιεύσεις: 3
Εγγραφή: 23 Νοέμ 2009 03:56

Help έχω κολλήσει σε άσκηση στην c...

Δημοσίευση από mariosxania » 25 Νοέμ 2009 17:16

Ναι έχεις δίκιο φίλε dva_dev τώρα ανέβασε την λύση και το κάνει έτσι αλλά στην εκφώνηση δεν το ζητούσε.Βέβαια το είπε μάλλον αλλά εγώ δεν ήμουν στο μάθημα...
Ευχαριστώ πάντως...

Απάντηση

Επιστροφή στο “C, C++”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες