• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Rekurencja choinka.

0 głosów
1,436 wizyt
pytanie zadane 24 stycznia 2020 w C i C++ przez rysiek5555 Początkujący (300 p.)

Mam napisać funkcję rekurencyjną, która wyświetla choinkę o wysokości n (gwiazdkami). Wyskakuje mi błąd i nie wiem jak to naprawić. Napisałem tyle ale coś jest nie tak.

#include <stdio.h>
#include <stdlib.h>


void choinka(int n,int przesuniecie)
{
 int i;
 if (n!=0)
 {
 choinka(n-1,++przesuniecie);
 for( i=przesuniecie; i>=0;i--) printf( " ");
 for( i=0; i< 2*n-1; i++) printf( "*");
 printf( "\n"); }
 }


int main()
{
    int n;
    printf("Podaj wysokosc choinki: ");
    scanf("%d", &n);
choinka(n);

return 0;
}

 

3 odpowiedzi

0 głosów
odpowiedź 24 stycznia 2020 przez Michałełe Nałogowiec (25,600 p.)
Zapomniałeś o drugim argumencie dla funkcji choinka :)
0 głosów
odpowiedź 25 stycznia 2020 przez rysiek5555 Początkujący (300 p.)
#include <stdio.h>
#include <stdlib.h>


void choinka(int n,int przesuniecie)
{
 int i;
 if (n!=0)
 {
 choinka(n-1,++przesuniecie);
 for( i=przesuniecie; i>=0;i--) printf( " ");
 for( i=0; i< 2*n-1; i++) printf( "*");
 printf( "\n"); }
 }


int main()
{
    int n;
    int przesuniecie;

    printf("Wysokosc choinki:", n , przesuniecie);
    scanf("%d%d", &n ,&przesuniecie);
 choinka(n,przesuniecie);

return 0;
}

Mogłby ktos to poprawic zeby po wpisaniu wysokosci choinki od razu wyswietlalo choinke.

0 głosów
odpowiedź 25 stycznia 2020 przez Chess Szeryf (76,730 p.)
edycja 25 stycznia 2020 przez Chess
<pre>
<?php

function append_space($n) {
  
  static $a = '';

  if(strlen($a) < $n) {
    $a .= ' ';
    return append_space($n);
  }

  $ret_val = $a;
  $a = '';

  return $ret_val;
}

function spruce($height) {
  
 
  static $a = 1;
  static $ast = "*"; 
  
//echo str_repeat(' ', $height-$a) . ( ($height == 0) ? '' : $ast ) . "\n";
  echo append_space($height-$a) . ( ($height == 0 ) ? '' : $ast ) . "\n";

  if($a < $height) {
    $ast .= "**";
    $a++;
    spruce($height);
  } else {
    echo "\n";
  }
}
spruce(9);
//   *
//  ***
// *****
//*******

?>
</pre>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


char* append_space(char n) {

  static char a [64] = {0};

  if(strlen(a) < n) {
    strcat(a, " ");
    return append_space(n);
  }

  char *retval = &a[0]; 

  a[n] = '\0';
  
  return retval;
}


void spruce(char height) {


  static char ast[64] = "*";
  static char i = 1;



  printf("%s%s\n", (height-i <= 0) ? append_space(0) : append_space(height-i), (height != 0) ? ast  : "");

  if(i < height) {
    strcat(ast, "**");

    i++;
    spruce(height);
  } 
}

int main() {
  
  spruce(2);
  
  return 0;
}

Przepisanie kodu z PHP na C, czy C++ pozostawiam Tobie.

Edit: Ulepszenie kodu pozostawiam*.

Podobne pytania

0 głosów
0 odpowiedzi 1,316 wizyt
pytanie zadane 4 listopada 2021 w Java przez Rafał Masny Obywatel (1,700 p.)
0 głosów
1 odpowiedź 1,258 wizyt
pytanie zadane 20 stycznia 2020 w C i C++ przez MrReus Nowicjusz (140 p.)
0 głosów
1 odpowiedź 8,288 wizyt
pytanie zadane 21 grudnia 2017 w PHP przez MakaBresk Obywatel (1,060 p.)

93,733 zapytań

142,669 odpowiedzi

323,287 komentarzy

63,293 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...