freestuff.gr αρχική σελίδα
 FAQFAQ    ΑναζήτησηΑναζήτηση   Λίστα ΜελώνΛίστα Μελών   Ομάδες ΜελώνΟμάδες Μελών   <b>Εγγραφή Μέλους</b>Εγγραφή Μέλους 
 ΠροφίλΠροφίλ   Επιλογές μέλους Επιλογές   Τα bookmarks μου Τα bookmarks μου   Προσωπικά μηνύματαΠροσωπικά μηνύματα 
  διαφήμιση  

Καλώς ήρθατε στο forum μας! Για να συμμετάσχετε στις συζητήσεις θα πρέπει να είσαστε μέλος. Γίνετε μέλος τώρα!.

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


 Forum index » Δημιουργία Web Sites, Γραφικών & Προγραμματισμός » Γλώσσες Προγραμματισμού » C, C++
Moderators:  Super-Moderators, WebDev Moderators
Εισαγωγή νέου Θέματος   Απάντηση στο Θέμα Σελίδα 1 από 1 [6 Μηνύματα]      Bookmarks Tags: άσκηση Mark the topic unread :: Προηγούμενο θέμα :: Επόμενο θέμα
ΑποστολέαςΜήνυμα
mariosxania


Μέλος από: 23 Νοε 2009
Μηνύματα: 3

View users profile
ΜήνυμαΣτις: 23 Νοε 2009 04:04    Θέμα: Help έχω κολλήσει σε άσκηση στην c...
Περιγραφή θέματος: c
Απάντηση με παράθεση  Mark this post and the followings unread

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

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

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

void anast1(int p[][])
{

}


main()
{
    int temp,dimx,dimy,i,j;
    srand(time(0));
    temp=rand()%15;
    dimx=temp;
    dimy=temp;
    int pinax[dimx][dimy];
    for(i=0;i<temp;i++)
        {
            for(j=0;j<temp;j++)
                pinax[i][j]=rand()%10;
        }
printf("\no pinakas einai o eksis:\n");
    for(i=0;i<temp;i++)
        {   printf("\n");
            for(j=0;j<temp;j++)
                printf("%5d",pinax[i][j]);
        }
epiloges();



}


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

Μέλος από: 16 Σεπ 2005
Μηνύματα: 256+

View users profile Visit posters website
blog deviantART facebook linkedin 
ΜήνυμαΣτις: 23 Νοε 2009 10:38    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Αν έχετε κάνει pointers αυτό μάλλον θα σε βοηθήσει να βγάλεις άκρη
κώδικας:
#include <stdio.h>
#include <stdlib.h>

#define ARRAY_ROWS   (6)
#define ARRAY_COLS   (9)

void print_array(int rows, int cols, int *p)
{
   int i,j;
   
   for (i=0; i<rows;i++)
   {
      for (j=0; j<cols; j++)
      {
         printf( "%3d", p[i*cols+j] );
      }
      puts("");
   }
}

int main(int argc, char** argv)
{
   int arr[ARRAY_ROWS][ARRAY_COLS];
   int i,j;
   
   for (i=0; i<ARRAY_ROWS; i++)
   {
      for (j=0;j<ARRAY_COLS; j++)
      {
         arr[i][j]= 10*(i+1)+(j+1);
      }
   }
   print_array( ARRAY_ROWS, ARRAY_COLS, (int *)arr );
   return 0;
}
virxen75


Μέλος από: 18 Φεβ 2009
Μηνύματα: 256+
Περιοχή: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ
View users profile
ΜήνυμαΣτις: 23 Νοε 2009 11:29    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

dva_dev ανέφερε:
Αν έχετε κάνει pointers αυτό μάλλον θα σε βοηθήσει να βγάλεις άκρη
κώδικας:
#include <stdio.h>
#include <stdlib.h>

#define ARRAY_ROWS   (6)
#define ARRAY_COLS   (9)

void print_array(int rows, int cols, int *p)
{
   int i,j;
   
   for (i=0; i<rows;i++)
   {
      for (j=0; j<cols; j++)
      {
         printf( "%3d", p[i*cols+j] );
      }
      puts("");
   }
}

int main(int argc, char** argv)
{
   int arr[ARRAY_ROWS][ARRAY_COLS];
   int i,j;
   
   for (i=0; i<ARRAY_ROWS; i++)
   {
      for (j=0;j<ARRAY_COLS; j++)
      {
         arr[i][j]= 10*(i+1)+(j+1);
      }
   }
   print_array( ARRAY_ROWS, ARRAY_COLS, (int *)arr );
   return 0;
}



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

κώδικας:

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

void anast1(int *p,int nrows,int ncols)
{
    int i,j;
printf("\nektelesi anast1:");
    for(i=0;i<nrows;i++)
        {   printf("\n");
            for(j=0;j<ncols;j++)
                p[i * ncols + j]++;//αυξάνει τα στοιχεία του πίνακα κατά 1
        }
}


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

printf("\nmeta tin anast1 o pinakas einai o eksis:\n");
    for(i=0;i<temp;i++)
        {   printf("\n");
            for(j=0;j<temp;j++)
                printf("%5d",pinax[i][j]);
        }       
 
       
epiloges();
getchar();


}
mariosxania


Μέλος από: 23 Νοε 2009
Μηνύματα: 3

View users profile
ΜήνυμαΣτις: 25 Νοε 2009 00:30    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

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

Μέλος από: 16 Σεπ 2005
Μηνύματα: 256+

View users profile Visit posters website
blog deviantART facebook linkedin 
ΜήνυμαΣτις: 25 Νοε 2009 00:50    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

παράθεση:
τι ορίσματα πρέπει να βάλω για να παίρνει ένα δισδιαστατο πίνακα ανεξαρτήτως γραμμών και στηλλών?

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


Μέλος από: 23 Νοε 2009
Μηνύματα: 3

View users profile
ΜήνυμαΣτις: 25 Νοε 2009 17:16    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Ναι έχεις δίκιο φίλε dva_dev τώρα ανέβασε την λύση και το κάνει έτσι αλλά στην εκφώνηση δεν το ζητούσε.Βέβαια το είπε μάλλον αλλά εγώ δεν ήμουν στο μάθημα...
Ευχαριστώ πάντως...
Εμφάνιση Μηνυμάτων:   
Εισαγωγή νέου Θέματος   Απάντηση στο Θέμα Σελίδα 1 από 1 [6 Μηνύματα] Mark the topic unread :: Προηγούμενο θέμα :: Επόμενο θέμα
 Forum index » Δημιουργία Web Sites, Γραφικών & Προγραμματισμός » Γλώσσες Προγραμματισμού » C, C++
Τώρα είναι 09 Δεκ 2016 09:43 | All times are UTC + 2


Email This Page to Someone! add to Favorites

     Powered by p h p B B © 2001,2005 p h p B B Group
Για άμεση επικοινωνία με τον διαχειριστή του freestuff.gr στο email: freestuff.gr(παπάκι)gmail.com


Copyright © 1999-2013 Freestuff.gr All Rights Reserved  
Version Aegean, designed by N. Tsaganos