Kan jeg få litt hjelp med leksene mine som har å gjøre med counter-kontrollerte repetisjon og argumenter?

stemmer
1

Ok, så jeg må ha utgang ser ut som en diamant med stjerner, med hver rad øker med 2 stjerne til midten har 9 stjernene ... og deretter radene avta. Funksjonen hoved må være:

int main (void){  
   int i;    
   i = 0;  
   while (i < 5){  
      printline (4-i, i*2+1);  
      i = i + 1;  
   }  
   i = 3;  
   while (i >= 0) {  
      printline (4-i, i*2+1);  
      i = i - 1;  
   }  
   return 0;  
}  

Nå skal jeg definere funksjon Print å skrive en eneste linje med figuren hver gang den blir kalt. Det tar 2 argumenter, antallet plasser og antallet av stjerner som skal skrives ut på linjen. Bruk teller styrt repetisjon for å skrive ut det riktige antall mellomrom og igjen å skrive ut det riktige antall stjerner.

char print_line (int spaces, int stars){  
   for (int i = 4; i>=spaces; i--){  
      printf( );  
   }  
   for (int i = 1; i<=stars; i+=2){  
      printf(*);  
   }  
   printf(\n);  
}

Woohoo! Jeg er nesten ferdig! Utgangene ganske riktig, bortsett fra at i stedet for en linje med 4 plasser med en stjerne, en linje med 3 rom med 3 stjerner, og så videre opp til ingen mellomrom og 9 stjerner, (og deretter reverserer) ... Jeg får en linje med en stjerne, en linje med en plass og 2 stjerner, en linje med to mellomrom tre stjerner, osv, inntil 4 plasser fem stjerner (og deretter reverserer) ...
grunnen Print er annerledes er fordi jeg har problemer med å skrive med denne noen ganger, og jeg holdt på å få kursiv når jeg prøvde å skrive det ...

Publisert på 07/03/2009 klokken 07:30
kilden bruker
På andre språk...                            


1 svar

stemmer
5

Noen hint:

  • Din funksjon trenger bare skrive ut tegn, det kommer ikke tilbake noe (det er en bestemt returtype for dette)
  • Antallet plasser og antall stjerner til print er sannsynligvis heltall
  • Du kan skrive ut et enkelt rom ved hjelp printf(" ");
  • Du kan skrive ut en enkelt stjerne hjelp printf("*");
  • Du kan skrive ut en "linjeskift" (som går til neste linje) ved hjelp printf("\n");
  • Hvis du sier int i=0; for(i=0; i<n; i++) { printf("X"); }at du vil skrive bokstaven Xtotalt nganger (du kanskje ikke har lært etter looper på dette punktet, hvis ikke, kan du bruke neste hint)
  • Hvis du sier int i=0; while(i<n) { printf("X"); i++; }at du vil også skrive ut brevet Xtotalt nganger
  • Du vil bli mye lykkeligere hvis du bruker parameternavn enn aog b. Prøv å tenke på et navn som samsvarer med hva parameteren representerer .

Svaret å redigere ditt:

  • Du vil ønske å bruke to separate sløyfer; en som skriver ut mellomrom, og deretter en som skriver stjernene
  • for løkker er alltid konstruert med en initializer, en kontrolltilstanden, og ett skritt / inkrement
  • Du bør ikke trenger å tilordne verdier til starseller spaces; de er tallene gitt til deg av den som ringer din printlinefunksjon (dvs. de allerede har en verdi)

Svar på andre redigerings:

  • I dine forlooper, har du sannsynligvis vil bruke en indeks variabel annet enn parameter blir vedtatt i (for eksempel for(i=0; i<spaces; i++), der ier bare en teller du deklarerer på toppen av din funksjon, som i koden fra oppdraget) i den nåværende konstruksjonen, det vil prøve å skrive ut 4 mellomrom, uansett hva innringeren spesifisert når de kalte funksjon din.
  • Du trenger bare å sende ut linjeskift en gang, etter at du er ferdig med alle mellomrom og stjerner (dvs. outputing linjeskift ikke hører hjemme i en forloop)
  • Du har sannsynligvis bare trenger å øke telleren etter 1hver gang du ut en stjerne.
  • Dersom oppdraget sier å lage en funksjon som heter printline, kan du ikke kalle det print_line; det er ikke det samme (verken si PrintLine)

Svar på tredje redigere:

  • Ikke glem "Du har sannsynligvis bare trenger å øke telleren etter 1hver gang du ut en stjerne."
  • Ikke glem "Din funksjon trenger bare skrive ut tegn, det kommer ikke tilbake noe (det er en bestemt returtype for dette)" (dvs. det skal ikke være tilbake en char)
  • Jeg tror du vil koden som skriver ut mellomrom for å se mer ut koden som skriver ut stjerner
Svarte 07/03/2009 kl. 07:39
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more