Jump to content



Απλή (;) άσκηση σε C


Recommended Posts

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

 

Έχω καταφέρει να γράψω κώδικα που κάνει αυτό, αλλά σβήνει και ένα χαρακτήρα από την προηγούμενη των κενών λέξη.

 

Το "tricky" κομμάτι είναι πως "απαγορεύεται" η χρήση πινάκων και δεικτών, γιατί μετά θα χρησιμοποιηθεί και σε άσκηση το κομμάτι αυτό. Έχω φάει το κεφάλι μου 3-4 μέρες και δεν μπορώ να το διορθώσω... Any help appreciated.

Έγινε επεξεργασία από TechMonkey
Link to comment
Share on other sites

while((c = getchar()) != EOF)       {               if(c == ' ')               {                       sc++;               }               if(c == ' ' && sc >= 1)               {                       putchar('\b');                       putchar(c);                       sc--;               }               else               {                       putchar(c);                       sc = 0;               }       } 

Χαρακτήρα- χαρακτήρα. Έχω κοιτάξει πολλές παραλλαγές, το else μάλλον τσάμπα υπάρχει τώρα.

 

Tώρα, και με ένα κενό, σβήνει και τον προηγούμενο χαρακτήρα. Δηλαδή αν του πατήσεις: as as θα σου βγάλει a as. Το ίδιο με όσους χαρακτήρες και κενά και αν του βάλεις.

Link to comment
Share on other sites

while((c = getchar()) != EOF)       {               if(c == ' ')               {                       sc++;               }               if(c == ' ' && sc >= 1)               {                       putchar('\b');                       putchar(c);                       sc--;               }               else               {                       putchar(c);                       sc = 0;               }       } 

Χαρακτήρα- χαρακτήρα. Έχω κοιτάξει πολλές παραλλαγές, το else μάλλον τσάμπα υπάρχει τώρα.

 

Tώρα, και με ένα κενό, σβήνει και τον προηγούμενο χαρακτήρα. Δηλαδή αν του πατήσεις: as as θα σου βγάλει a as. Το ίδιο με όσους χαρακτήρες και κενά και αν του βάλεις.

 

 

αν ο χαρακτήρας είναι κενό αυξάνει το sc κατά ένα. Στη συνέχεια μπαίνει στο δεύτερο if, ο χαρακτήρας είναι κενό, και το sc είναι >=1. Σβήνει τον προηγούμενο χαρακτήρα και βάζει το κενό. Μειώνει το sc.

 

α) Θες else if στο δεύτερο if (με πρόλαβε ο EraserheadX)

β) γιατί μειώνεις το sc στο δεύτερο if;

Link to comment
Share on other sites

β) γιατί μειώνεις το sc στο δεύτερο if;
 

 

Από χαζομάρα μου, καθώς φαίνεται....  :redface:  Όντως είναι μάλλον περιττό.

 

Κατ' αρχήν ευχαριστώ για τις άμεσες απαντήσεις σας. Κατά δεύτερον και με τις αλλαγές που προτείνετε πάλι το ίδιο αποτέλεσμα έχω. Σβήνει όσα κενά και να του βάλεις, αφήνοντας μόνο ένα, αλλά σβήνει και τον χαρακτήρα πριν το κενό.  :wall:

Link to comment
Share on other sites

Επίσης, ανάμεσα στις απεγνωσμένες μου προσπάθειες να βγάλω άκρη, ανακάλυψα πως στο else if (τώρα πια) αν κάνω το sc >= 1 σκέτο sc > 1 σβήνει το κενό όταν είναι ένα, κάνει αυτό που θέλω για 2 και 3 κενά, και πάνω από τα 4 αφήνει παραπάνω του ενός.

Link to comment
Share on other sites

Γενικά η άσκηση πολλά λέει, ας μην το κάνουμε θέμα :ρ Δεν θέλω βοήθεια σε αυτή, ακόμα τουλάχιστον... White character λέει, αλλά ζητάει και άλλα, αυτό μάλλον είναι το λιγότερο.

 

που κόλλησες;

Πουθενά, απλά το έγραψα στον κώδικα εκείνη την στιγμή, δεν έκατσα να το δω πως λειτουργεί για να το καταλάβω πως δουλεύει.

  • Like 1
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Δημιουργία...

Important Information

Ο ιστότοπος theLab.gr χρησιμοποιεί cookies για να διασφαλίσει την καλύτερη εμπειρία σας κατά την περιήγηση. Μπορείτε να προσαρμόσετε τις ρυθμίσεις των cookies σας , διαφορετικά θα υποθέσουμε ότι είστε εντάξει για να συνεχίσετε.