Usunięcie licznika lini c++

0

Witam. Szybka sprawa mianowicie mam taki program:

#include<stdio.h>
#include<string.h>



static int count=0;


    
void print_permutations(char arr[], char prefix[], int n, int k) 
{
        int i,j,l=strlen(prefix);
        char newprefix[l+2]; 
 

        if(k==0)
        {
           printf("%d %s\n",++count,prefix);
           
           return;
        }
 
        for(i=0;i<n;i++) 
        {
            
            for(j=0;j<l;j++)   
            newprefix[j] = prefix[j];
            newprefix[l] = arr[i];
            newprefix[l+1] = '\0'; 
 
            print_permutations(arr, newprefix, n, k-1); 
        }
}
int main() 
{            
       
 
        int n=26,k=3;
        char arr[27] = "abcdefghijklmnopqrstuvwxyz";
    
	print_permutations(arr,"",n,k);  
        return 0;        
}

Program działa dobrze jednak muszę wyniki mieć w samym ciągu typy: aaa bbb abc dbd itp. bez licznika linijek tak by na początku program nie zliczał lini a wyświetlał samą kombinację.
Z góry dziękuję

2

Przeczytaj i zastosuj w swoim kodzie: https://www.cplusplus.com/reference/cstdio/printf/

Podpowiedź:

  • nie chcesz nowej linii, usuń znak nowej linii z łańcucha formatu;
  • nie chcesz licznika linijek, usuń licznik linijek z łańcucha formatu oraz odwołanie do zmiennej licznika, w następnym parametrze.
0

@Spine: Okej wybacz.. Jeśli nawet uda mi się usunąć 0 to czy dalej przed wynikiem będzie puste miejsce spacji ??

1
  1. Najłatwiej sprawdzić samemu. Eksperymentować.
  2. Wynik będzie wyglądał tak jak "format string". Możesz w nim umieszczać spacje. W tym łańcuchu tylko % są podmieniane na wartości kolejnych argumentów przekazywanych do funkcji printf.
0

@Spine: Widzę że jesteś bardzo dobry jeśli chodzi o znajomość c++ na prawdę potrzebuje mieć skończony ten kod do rana czy mógłbyś napisać mi go dosłownie z pozbyciem się tego 0 a ja go przeanalizuje ? Bo z moim ilorazem inteligencji i godziną raczej sam tego nie ogarne.

1
#include<stdio.h>
#include<string.h>

void print_permutations(char arr[], char prefix[], int n, int k)
{
	int i,j,l=strlen(prefix);
	char newprefix[l+2];

    if(k==0)
    {
       printf("%s ",prefix);

       return;
    }

    for(i=0;i<n;i++) 
    {
        for(j=0;j<l;j++)   
        newprefix[j] = prefix[j];
        newprefix[l] = arr[i];
        newprefix[l+1] = '\0'; 

        print_permutations(arr, newprefix, n, k-1); 
    }
}

int main()
{
    char arr[] = "abcdefghijklmnopqrstuvwxyz";
    int n=strlen(arr) - 1;
    int k = 3;
    
    print_permutations(arr, "", n, k);  
    
    return 0;
}

Na przyszłość zabierz się do zadania wcześniej i przerabiaj kursy.

0

@Spine: Tylko w obecnej formie program wyświetla ciagi obok siebie a ja muszę je mieć w jednej kolumnie jedno pod drugim

0

@pawixx 12: Napisałeś co innego:

muszę wyniki mieć w samym ciągu typy: aaa bbb abc dbd

Poza tym to dla Ciebie zadanie domowe... Zamień spację w printf na znak nowej linii, żeby mieć kolumnę.

0

Po dodaniu znaku spacji program całkowicie sie sypie

1

Nie wiem gdzie i jak dodałeś ten znak spacji. Nie widzę co masz na ekranie.

Moje odpowiedzi mogą być równie nieprecyzyjne, np. spróbuj wyłączyć i włączyć komputer.

0

Dobra już mam dziękuję piękne

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