WordUp Δημοσ. 5 Μαρτίου 2009 Δημοσ. 5 Μαρτίου 2009 Έχουμε το εξής πρόβλημα 4: Have a program request the user to enter an uppercase letter. Use nested loops to produce a pyramid pattern like this: The pattern should extend to the character entered. For example, the preceding pattern would result from an input value of E. Έχετε καμία ιδέα. Δίνει και hint ότι να το κάνω με μια main loop για τις σειρές και άλλες 3 για τα μέσα, αλλά και πάλι δεν βγάζω άκρη. Δεν πρόκειται περί πανεπιστημιακής άσκησης του εξωτερικού Από το βιβλίο C Primer Plus είναι. Δεν θέλω έτοιμο κώδικα, απλά κάποια hints, ώστε να το επεξεργαστώ thanks people
Directx Δημοσ. 5 Μαρτίου 2009 Δημοσ. 5 Μαρτίου 2009 Δεν νομίζω ότι είναι απαραίτητες τόσες for, έφτιαξα κάτι *παρόμοιο που δίνει έξοδο: > A ABA ABCBA ABCDCBA ABCDEDCBA με 2 for, αν αυτό μπορεί να σε βοηθήσει. Κατά την γνώμη μου χρειάζεται λίγη πονηριά, δες πως χτίζει κάθε γραμμή και την θέση των χαρακτήρων σε αυτή. Κώδικα δεν δημοσιεύω για να μην σου χαλάσω το ψάξιμο *παρόμοιο διότι η έξοδος μου είναι διαφορετική από εκείνη που παραθέτεις στην γραμμή 4 -τυπογραφικό μήπως αντί για D έπρεπε να είναι B;- αλλά δημιουργεί ανάλογο σχήμα σε όλες τις υπόλοιπες. Καλή τύχη!!
drm Δημοσ. 5 Μαρτίου 2009 Δημοσ. 5 Μαρτίου 2009 Συνήθως αυτά τα προβλήμα λύνονται με 3 for μία για τις γραμμές μία για τα κενά στην αρχή της κάθε γραμμής και μία για τα γράμματα (ίσως και δύο για αυτήν την υλοποίηση)
warchief Δημοσ. 5 Μαρτίου 2009 Δημοσ. 5 Μαρτίου 2009 Σε python με ενα loop και 5 γραμμές κώδικα: > letters = ['A', 'B', 'C', 'D', 'E', 'F', 'G'] for index, letter in enumerate(letters): prefix = ''.join(letters[0:index]) postfix = '' if index is 0 else ''.join(letters[index-1::-1]) print prefix + str(letter) + postfix
vag_pRiMi Δημοσ. 6 Μαρτίου 2009 Δημοσ. 6 Μαρτίου 2009 <offtopic> Σε python με ενα loop και 5 γραμμές κώδικα: > letters = ['A', 'B', 'C', 'D', 'E', 'F', 'G'] for index, letter in enumerate(letters): prefix = ''.join(letters[0:index]) postfix = '' if index is 0 else ''.join(letters[index-1::-1]) print prefix + str(letter) + postfix Και αν το γράμμα του χρήστη είναι 'J' τι θα κάνει ο κώδικάς σου Αφού ο άνθρωπας δεν ζήτησε κώδικα γιατί του το χαλάς </offtopic>
drm Δημοσ. 6 Μαρτίου 2009 Δημοσ. 6 Μαρτίου 2009 Δέν είναι αυτός ο σκοπός... > Σε c με μία μόνο γραμή... printf(" A\n ABA\n ABCBA\n ABCDCBA\n ABCDEDCBA");
warchief Δημοσ. 6 Μαρτίου 2009 Δημοσ. 6 Μαρτίου 2009 @vag_pRiMi: O κώδικας που έδωσα είναι proof of concept, την νοοτροπία δείχνει. Αν αναλύσεις τον κώδικα θα καταλάβεις αυτά που με λόγια έχουν πει ο drm και ο directx παραπάνω. Και στην τελική εσύ γιατι διαμαρτύρεσαι έτσι έντονα? @drm: Σε μία γραμμή γίνεται, το θέμα είναι να γίνεται και αλγοριθμικά...
WordUp Δημοσ. 7 Μαρτίου 2009 Μέλος Δημοσ. 7 Μαρτίου 2009 Το κατάφερα το ποστάρω, μην τυχόν μπήκε κάποιος θέλησε τη λύση (πράγμα απίθανο, αλλά εντάξει) και για όποιον, γενικά ενδιαφέρεται. βεβαίως, μπορείτε να ποστάρετε και τον δικό σας τρόπο, γιατί ο δικός μου δεν μου φαίνεται τόσο καλός) >#include <stdio.h> int main(void) { char inp1; int i, j, k; printf("Enter an uppercase letter: "); scanf("%c", &inp1); inp1 -= 4; k = 4; for (i=1; i<6; i++, k--, inp1 -=1) { for (j=0; j<k; j++) printf(" "); for (j=0; j<i; j++, inp1++) printf("%c", inp1); for (j=1; j<i; j++, inp1--) printf("%c", (inp1-2)); printf("\n"); } return 0; }
Directx Δημοσ. 7 Μαρτίου 2009 Δημοσ. 7 Μαρτίου 2009 Μπράβο, να και η δικιά μου εκδοχή: > /*-Word Tree by directx- */ #include <stdio.h> #include <string.h> #ifdef __BORLANDC__ #pragma hdrstop #endif /*---------------------------------------------------------------------------*/ #ifdef __BORLANDC__ #pragma argsused #endif int main() { char szLetter[10] = "A"; /* 10 should be enough */ int nLine = 0; /* Main for-loop */ for(; nLine < 5; nLine++) { static int nCharIdx = 0; int nRIdx = 0; /* Print from left to right */ printf("%10s", szLetter); /* Second for-loop, reverse print */ for(nRIdx = nCharIdx - 1; nRIdx >= 0; nRIdx--) putchar(szLetter[nRIdx]); /* Change line! */ putchar('\n'); /* Build next line */ szLetter[nCharIdx + 1] = szLetter[nCharIdx++] + 1; } /* End of program */ getchar(); return 0; } /*---------------------------------------------------------------------------*/
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.