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

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

ανακατασκεύαζει τον πίνακα Α...


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


Μέλος από: 20 Μαη 2006
Μηνύματα: 6

View users profile
ΜήνυμαΣτις: 20 Μαη 2006 18:31    Θέμα: ανακατασκεύαζει τον πίνακα Α... Απάντηση με παράθεση  Mark this post and the followings unread

Καλησπέρα σας,

'Εχω γράψει το παρακάτω πρόγραμμα σε γλώσσα c αλλά κάτι μάλλον πρέπει να κάνω λάθος.

#include <stdio.h>
#define N 6
void main()

{
char A[N];
int romeo[256];
int i;
CHAR NEXT_CH;
CHAR CH;
for(i=0;i<N;i++)
{
printf("Dose xaraktira no%d:",i+1);
fflush(stdin);
scanf("%c",&A[i]);
}
for(i=0;i<256;i++)
romeo[i]=0;
for(i=0;i<N;i++)
romeo[A[i]]++;
NEXT_CH=CH+1;
for(i=0;i<N;i++)
printf("A[%d]:%c\n",i+1,A[i]);
}

Όπου με μικρά γράμματα είναι η βάση του κώδικα και με κεφαλαία μάλλον είναι ο κώδικας που προκαλεί το πρόβλημα.

Ο παραπάνω κώδικας πρέπει να ανακατασκεύαζει τον πίνακα Α χρησιμοποιώντας την αντιστοίχηση χαρακτήρων και εμφανίσεων. Στην αρχή ο Α θεωρείται κενός. Διατρέχοντας τον πίνακα romeo τοποθετούμε στην αρχή του πίνακα Α τόσους χαρακτήρες που αντιστοιχούν στην πρώτη θέση του πίνακα romeo όσο και η τιμή που είναι αποθηκευμέη στην πρώτη θέση του πίνακα romeo κλπ. Όταν διατρέξουμε με αυτόν τον τρόπο όλο τον πίνακα romeo ο πίνακας Α θα έχει ταξινομηθεί.

Παρακαλώ πολύ για τις παρατηρήσεις σας σε αυτό το πρόβλημα.

Ευχαριστώ εκ των προτέρων για την βοήθειά σας.
dva_dev
Script Master

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

View users profile Visit posters website
blog deviantART facebook linkedin 
ΜήνυμαΣτις: 20 Μαη 2006 19:11    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Η εντολή που έχεις γράψει με κεφαλαία ούτε έχει κάποιο λάθος ούτε προκαλεί κάτι στον κώδικα σε σχέση με αυτό που θέλεις να πάρεις (εκτός του ότι χρησιμοποιείς μή αρχικοποιημένες μεταβλητές). Είναι σαν να μην υπάρχουν - για αυτό που ζητάς.

παράθεση:
Όταν διατρέξουμε με αυτόν τον τρόπο όλο τον πίνακα romeo ο πίνακας Α θα έχει ταξινομηθεί.


Θα έχει ταξινομηθεί ώς προς τι; Δεν βλέπω να κάνεις πουθενά ταξινόμηση, ούτε να διατρέχεις τον πίνακα romeo.

Αν θέλεις να μας δώσεις κάποια παραδείγματα του τι θα δίνεις σαν είσοδο και τι πρέπει να βγάζει σαν έξοδο...
John B


Μέλος από: 20 Μαη 2006
Μηνύματα: 6

View users profile
ΜήνυμαΣτις: 20 Μαη 2006 19:38    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Ευχαριστώ πάρα πολύ ( για άλλη μια φορά ) για τις παρατηρήσεις σου.

Το πρόγραμμα πρέπει να ταξινομεί τον πίνακα χαρακτήρων Α. Ο κώδικας χρησιμοποεί τον πίνακα romeo ο οποίος είναι τόσων θέσεων όσοι και οι υπάρχοντες χαρακτήρες ( θέσεις 256 ) και αρχικοποιεί όλα τα στοιχεία του στο 0.Στη συνέχεια μετράει τις εμφανίσεις του κάθε χαρακτήρα στον πίνακα Α.

Ο πίνακας romeo αντιστοιχίζει χαρακτήρες με εμφάνισεις χαρακτήρων.

Για παράδειγμα αν romeo['j']==9 o χαρακτήρας j εμφανίζεται 9 φορές στον πίνακα Α.

Τα παραπάνω στοιχεία , ελπίζω να σας βοηθήσουν να καταλάβετε ποιό είναι το σκεπτικό του προγράμματος.
Εαν νομίζετε ότι ο κώδικας που αναγράφεται με κεφαλαία γράμματα δεν χρειάζεται για την επίτευξη του αποτελέσματος του προγράμματος, παρακαλώ να προτείνετε κάτι το οποίο θα έχει το επιθυμητό αποτέλεσμα.

Για ακόμη μια φορά σας ευχαριστώ για την βοήθεια σας.
dva_dev
Script Master

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

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

Είδα ότι η ταξιμόνηση θέλεις να γίνεται με βάση το πλήθος εμφανίσεων, αλλά Αύξουσα ή φθίνουσα;
Αν κάποια στοιχεία έχουν το ίδιο πλήθος εμφανίσεων, τι γίνεται;

Αν δώσεις δηλαδή για είσοδο τους χαρακτήρες
1) A,B,A,B,C,C
2) A,A,A,A,A,A
3) F,E,D,C,B,A
4) A,B,C,C,C,Β

Tι αποτελέσματα θα πρέπει να δώσει σε κάθε περίπτωση;

Δες πάντως αν σου κάνει το παρακάτω (με όσο το δυνατόν λιγότερες αλλαγές στον κώδικα σου):

κώδικας:

#include <stdio.h>

#define N 6

int main(int argc,char**argv)
{
   char A[N];
   int romeo[256];
   int i;

   /*-----------------------------------------------------------*/
   /*Θα χρειαστούν για την ταξινόμηση*/
   int BB[N];
   int nItems=0;
   int j;
   int tmp;
   char chtmp;
   /*-----------------------------------------------------------*/

   for(i=0;i<N;i++)
   {
      printf("Dose xaraktira no%d:",i+1);
      fflush(stdin);
      scanf("%c",&A[i]);
   }
   
   for(i=0;i<256;i++)
      romeo[i]=0;

   for(i=0;i<N;i++)
      romeo[A[i]]++;

   /*-----------------------------------------------------------*/
   for(i=0;i<N;i++)
   {
      A[i]='\0';
      BB[i]=0;
   }

   for (i=0;i<256;i++)
   {
      if (romeo[i]>0)
      {
         A[nItems]=(char)i;
         BB[nItems++]=romeo[i];
      }
   }

   /*Ταξινομούμε τον A με βάση τον BB (simple bb sort) */
   for (i=0; i<nItems-1;i++)
      for (j=i+1;j<nItems;j++)
         if (BB[j]<BB[i]){
            tmp=BB[j];  BB[j]=BB[i]; BB[i]=tmp;
            chtmp=A[j]; A[j]=A[i];   A[i]=chtmp;
         }
   /*-----------------------------------------------------------*/

   for(i=0;i<nItems;i++)
   {
      printf("A[%d]:%c\n",i+1,A[i]);
   }
}

Ελπίζω να βοήθησα
John B


Μέλος από: 20 Μαη 2006
Μηνύματα: 6

View users profile
ΜήνυμαΣτις: 21 Μαη 2006 01:52    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Για άλλη μια φορά η βοήθεια σου ήταν πολύτιμη.

Όπως είδες ο συγκεκριμένος κώδικας ήταν μόνο για μια απλή ταξινόμηση πλήθους εμφανίσεων.

Το προγραμματάκι που έφτιαξες ήταν άψογο για την συγκεκριμένη περίπτωση.

Και πάλι χίλια ευχαριστώ για την πολύτιμη βοήθεια σου και τον χρόνο σου.

Υ.Σ. Μήπως έχεις κατά νου κανένα site ή e-book που να ασχολείται με το πρόβλημα
Hanoi Towers ( αρχικοποίηση πύργων , εισαγωγή , διαγραφή , μετακίνηση δίσκου ,
μετακίνηση πύργου και εκτύπωση πύργων ) σε γλώσσα C , αλλά να χρησιμοποιεί
αναδρομικό αλγόριθμο και οι 3 πύργοι θα πρέπει να αναπαρασταθούν με 3 στοίβες οι
οποίες θα υλοποιηθούν με χρήση ενός δυσδιάστατου πίνακα ;;;;;

Σε ευχαριστώ πάρα πολύ.
dva_dev
Script Master

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

View users profile Visit posters website
blog deviantART facebook linkedin 
ΜήνυμαΣτις: 21 Μαη 2006 15:17    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Δοκίμασε να ξεκινήσεις από το http://hanoitower.mkolar.org/index.php και συνέχισε με το google.
θέλει διάβασμα...
John B


Μέλος από: 20 Μαη 2006
Μηνύματα: 6

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

Καλησπέρα,

σε ευχαριστώ πάρα πολύ για το site που μου είπες.

Έχω ήδη ψάξει στο google και έχω βρει διάφορα αλλά δεν έχω βρεί ακριβώς αυτό που ψάχνω.

Το παραπάνω site δεν το είχα βρει και φαίνεται να είναι πολύ ενδιαφέρον οπότε το μόνο που μένει είναι ψάξιμο και φυσικά διάβασμα...........

Για άλλη μια φορά χίλια ευχαριστώ.
Εμφάνιση Μηνυμάτων:   
Εισαγωγή νέου Θέματος   Απάντηση στο Θέμα Σελίδα 1 από 1 [7 Μηνύματα] Mark the topic unread :: Προηγούμενο θέμα :: Επόμενο θέμα
 Forum index » Δημιουργία Web Sites, Γραφικών & Προγραμματισμός » Γλώσσες Προγραμματισμού » C, C++
Τώρα είναι 21 Ιαν 2017 08:22 | 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