[ C++ ] Wypisz pierwsze n znaków ciągu

Witajcie,

 

mam takie zadanie:

Bajtek ma dany nieskończony okresowy ciąg ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ… Wypisz pierwsze n znaków tego ciągu.

Wejście

Jedna liczba naturalna n (1 ≤ n ≤ 100 000).

Wyjście

Wypisz pierwsze n znakow tego nieskończonego ciągu.

 

Przykład

Dla danych wejściowych

30

poprawną odpowiedzią jest

ABCDEFGHIJKLMNOPQRSTUVWXYZABCD

 

#include <iostream>



#include <cstring>







using namespace std;







int main()



{



    int ile;



    char alfabet [] = {"ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ"};



    char kopia [30];







    cin >> ile;



    strncpy (kopia, alfabet, ile);



    kopia [ile] = '\0';



    cout << kopia;







    return 0;



}

 

Problem pojawia się przypadku, gdy wpiszę liczbę większą niż długość mojego ciągu znaków alfabet. Jak zrobić, aby zamiast mojego określonego ciągu znaków był jak w poleceniu nieskończony ciąg?

 

Z góry dziękuję za pomoc.

 

Aga

Zacznij od tego, że masz tablicę. Masz też liczbę znaków które wypisujesz. Więc wypisuj po kolei aż się skończy twój licznik. (bez żadnego kopiowania, zmiennych tymczasowych itd)

Robisz resztę z dzielenia licznika przez ilość elementów w tablicy i będziesz ją wypisywać w kółko:

for(unsigned int i=0;i<n;i++)  cout <<arr[i%26];

Nie wiem z jakich ksiazek sie uczysz albo kto cie tak nauczyl ale robisz to zle.

Zainteresuj sie funkcjami std::copy, std::copy_n  jesli chcesz cos kopiowac. Do twojego zadania akurat nie jest to potrzebne

I nie rob tego:

using namespace std;

Lepiej do poczatku uczyc sie pisac normalnie : std::cout, std::copy

 

 

Symfonia C++ Grębosza, Język C++ Prata i wiele innych włącznie z wykładowcą na studiach.

Jak powinno być dobrze? Możesz podpowiedzieć?