Lista katalogów

0

Cześć, ktoś się zna cokolwiek na rekurencji ?
Bo już z pół dnia siedzę nad zadaniem i próbuje ugryźć na różny sposób i nie mogę dojść do ładu z tym.
Zadanie :

A oto co udało mi się już stworzyć:

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

 
char *concat( char *tab1, char *tab2 ) {
   char* wynik;
   wynik =malloc((strlen(tab1)+strlen(tab2))*sizeof(char)+1);
 
 
    int g;
        for(g=0; g<strlen(tab1); ++g)
            wynik[g]=tab1[g];
 
 		int w;
        for(w=0; w<strlen(tab2); ++g, ++w){
        	wynik[g]=tab2[w];
		}
             
 	wynik[strlen(tab1) + strlen(tab2)] = '\0';
 	return wynik;
}
 
 void drzewo(int n){
	int i,j;
	char *odstep = "|   ";
	char *odstepKoncowy = ": -  "; 
	char *katalog = "katalog";
	char *tmp="   ";
	
	if(n<=0) {
		return ;
	}		
	else{		
		drzewo(n-1);	
		for(i=0;i<n-1;i++){
		   tmp = concat(tmp,odstep); 	
		}
		tmp = concat(tmp,odstepKoncowy); 		
		tmp = concat(tmp,katalog); 
		printf("%s\n",tmp);		   	
	} 	
}

void katalogi(int n){
	int i;
	char *odstep = "|   ";
	char *odstepKoncowy = ": -  "; 
	char *plik = "plik";
	char *tmp="   ";
	printf("- katalog\n");
	
	drzewo(n-1);
	for(i=0;i<n-1;i++){
		   tmp = concat(tmp,odstep); 	
	}
	tmp = concat(tmp,odstepKoncowy);
	tmp = concat(tmp,plik);
	printf("%s\n",tmp);
	printf("%s\n",tmp);
		
	drzewo(n-1); 
	printf("%s\n",tmp);
	printf("%s\n",tmp);
}

int main()
{
katalogi(5);
}
0

Ad 1:

#include <stdio.h>

typedef struct iterator { struct iterator *prev; unsigned i; } iterator;

void ladder(iterator *curr,int last)
  {
   static const char *sign[2][2]={{"\xB3 ","  "},{"\xC3\xC4","\xC0\xC4"}};
   if(!curr) return;
   ladder(curr->prev,0);
   printf(sign[last][curr->i]);
  }

void folders(unsigned deep,iterator *prev)
  {
   iterator cur;
   cur.prev=prev;
   ladder(prev,1);
   printf("\xDC %s\n",deep?"katalog":"plik");
   if(deep--) for(cur.i=0;cur.i<2;++cur.i) folders(deep,&cur);
  }

int main()
  {
   folders(5,NULL);
   return 0;
  }

Ad 2: Programowanie dynamiczne.

1 użytkowników online, w tym zalogowanych: 0, gości: 1