THMMY.gr

Μαθήματα Βασικού Κύκλου => Δομημένος Προγραμματισμός => Topic started by: ripper_george on May 10, 2008, 14:53:02 pm



Title: 2x2 Matrix
Post by: ripper_george on May 10, 2008, 14:53:02 pm
Λίγη Βοήθεια please με τους δυναμικούς δισδιάστατους πίνακες!

Τι λάθος έχει ο κώδικας στο τέλος?:

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

void main()
{
   int i,j,**U,n,m,x,y;
   scanf("%d %d",&n,&m);
   U=(int**)malloc(n*sizeof(int*));
   for (i=0;i<n;i++)
   {
      U=(int*)malloc(m*sizeof(int));
   }
   printf("Enter Matrix\n");
   for (i=0;i<n;i++)
   {
      for (j=0;j<m;j++)
      {
         scanf("%d",&U[j]);
      }
   }
      for (i=0;i<n;i++)
   {
      printf("\n");
      for (j=0;j<m;j++)
      {
         printf("%d",U[j]);
      }
   }
      printf("\nWhich location of the matrix to print?\n");
      scanf("%d %d",&x,&y);
      printf("%d",*(*(U+x)+y));
}

Thx in advance.


Title: Re: 2x2 Matrix
Post by: Γιώργος on May 10, 2008, 14:56:34 pm
      printf("%d",*(*(U+x)+y));
Γιατί τόσο περίπλοκο κι όχι κάτι πιο απλό όπως:
Code:
printf("%d", U[x][y]);


Επίσης το U+x είναι λάθος γιατί προσθέτεις (int **) με int. :)


Title: Re: 2x2 Matrix
Post by: ripper_george on May 10, 2008, 14:57:31 pm
Στην αρχή αυτό το συμβολισμό είχα αλλά έβγαζε πάλι Error....


Title: Re: 2x2 Matrix
Post by: ripper_george on May 10, 2008, 15:17:15 pm
Αν έλεγα:

printf("%d",*(*(U+x*sizeof(int))+y));

????
Would it do anything???

Επίσης,

ο συμβολισμός  U(x)(y)  δεν βγάζει σωστό αποτέλεσμα.....  :(

(Εννοιείται ότι είναι [] και όχι ().... απλά δεν το έβγαζε σωστά το site...


Title: Re: 2x2 Matrix
Post by: Nessa NetMonster on May 10, 2008, 15:37:34 pm
Επίσης το U+x είναι λάθος γιατί προσθέτεις (int **) με int. :)

Μπα, δεν υπάρχει πρόβλημα σ'αυτό.

Κανονικά πάντως το U[x][y] δεν έπρεπε να βγάζει Error. Άρα κάπου παραπάνω έχεις λάθος.


Title: Re: 2x2 Matrix
Post by: Γιώργος on May 10, 2008, 15:41:20 pm
Επίσης το U+x είναι λάθος γιατί προσθέτεις (int **) με int. :)

Μπα, δεν υπάρχει πρόβλημα σ'αυτό.

Κανονικά πάντως το U
  • [y] δεν έπρεπε να βγάζει Error. Άρα κάπου παραπάνω έχεις λάθος.
Ναι οκ, το δέχεται ο compiler, απλά δεν βγάζει κάτι με "νόημα".



Κάτι έχει το forum, btw, το:
Code:
U[x][y]

Το βγάζει U[y].  :-\
Και ναι, αυτό είναι απλά αδύνατον να μην είναι σωστό. :)


Title: Re: 2x2 Matrix
Post by: ripper_george on May 10, 2008, 15:43:52 pm
Άρα τι να κάνω για να μου εμφανίσει το στοιχείο που βρίσκετε στη χ,ψ θέση του πίνακα???


Title: Re: 2x2 Matrix
Post by: Γιώργος on May 10, 2008, 15:44:52 pm
Άρα τι να κάνω για να μου εμφανίσει το στοιχείο που βρίσκετε στη χ,ψ θέση του πίνακα???
Code:
printf("%d", U[x][y]);


Τον DEV χρησιμοποιείς, έτσι;


Title: Re: 2x2 Matrix
Post by: Nessa NetMonster on May 10, 2008, 15:46:26 pm
Επίσης το U+x είναι λάθος γιατί προσθέτεις (int **) με int. :)

Μπα, δεν υπάρχει πρόβλημα σ'αυτό.
Ναι οκ, το δέχεται ο compiler, απλά δεν βγάζει κάτι με "νόημα".

Όχι, θα σου βγάλει το επόμενο στοιχείο του πίνακα (δες σημειώσεις Κορτέση).


Title: Re: 2x2 Matrix
Post by: Γιώργος on May 10, 2008, 15:47:32 pm
Όχι, θα σου βγάλει το επόμενο στοιχείο του πίνακα (δες σημειώσεις Κορτέση).
Α ναι, γιατί αλλάζουμε θέση μνήμης. Βασικά απλά δείχνει κάποια άλλη θέση μνήμης, ανάλογα με την τιμή του x.


Title: Re: 2x2 Matrix
Post by: ripper_george on May 10, 2008, 15:52:51 pm
Δεν έχω dev but visual studio

Ε λοιπόν μια μαλακία ήταν που μου χαλούσε το πρόγραμμα....
Σπασιμο.......

Thx για την βοήθεια...