Προς το περιεχόμενο

Μια μικρή βοήθειa αν γίνεται...


WordUp

Προτεινόμενες αναρτήσεις

Δημοσ.

Έχουμε το εξής πρόβλημα

 

4: Have a program request the user to enter an uppercase letter. Use nested loops to produce a pyramid pattern like this:

raciue.png

 

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 για τα μέσα, αλλά και πάλι δεν βγάζω άκρη.

 

Δεν πρόκειται περί πανεπιστημιακής άσκησης του εξωτερικού :-D

Από το βιβλίο C Primer Plus είναι.

 

Δεν θέλω έτοιμο κώδικα, απλά κάποια hints, ώστε να το επεξεργαστώ

thanks people

Δημοσ.

Δεν νομίζω ότι είναι απαραίτητες τόσες for, έφτιαξα κάτι *παρόμοιο που δίνει έξοδο:

 

>
        A
       ABA
      ABCBA
     ABCDCBA
    ABCDEDCBA

 

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

 

Κώδικα δεν δημοσιεύω για να μην σου χαλάσω το ψάξιμο ;)

 

*παρόμοιο διότι η έξοδος μου είναι διαφορετική από εκείνη που παραθέτεις στην γραμμή 4 -τυπογραφικό μήπως αντί για D έπρεπε να είναι B;- αλλά δημιουργεί ανάλογο σχήμα σε όλες τις υπόλοιπες.

 

Καλή τύχη!!

Δημοσ.

Συνήθως αυτά τα προβλήμα λύνονται με 3 for

 

μία για τις γραμμές

μία για τα κενά στην αρχή της κάθε γραμμής

και μία για τα γράμματα

(ίσως και δύο για αυτήν την υλοποίηση)

Δημοσ.

Σε 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

Δημοσ.

<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' τι θα κάνει ο κώδικάς σου:rolleyes:
  • Αφού ο άνθρωπας δεν ζήτησε κώδικα γιατί του το χαλάς:confused:

</offtopic>

Δημοσ.

Δέν είναι αυτός ο σκοπός...

 

>
 Σε c με μία μόνο γραμή...
 printf("    A\n   ABA\n  ABCBA\n ABCDCBA\n ABCDEDCBA");

Δημοσ.

@vag_pRiMi: O κώδικας που έδωσα είναι proof of concept, την νοοτροπία δείχνει. Αν αναλύσεις τον κώδικα θα καταλάβεις αυτά που με λόγια έχουν πει ο drm και ο directx παραπάνω. Και στην τελική εσύ γιατι διαμαρτύρεσαι έτσι έντονα?

 

@drm: Σε μία γραμμή γίνεται, το θέμα είναι να γίνεται και αλγοριθμικά...

Δημοσ.

Το κατάφερα

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

βεβαίως, μπορείτε να ποστάρετε και τον δικό σας τρόπο, γιατί ο δικός μου δεν μου φαίνεται τόσο καλός)

 

>#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;
}

Δημοσ.

Μπράβο, να και η δικιά μου εκδοχή:

 

>
/*-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;
}
/*---------------------------------------------------------------------------*/

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...