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


(Abaraniecka1) #1

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


(Drobok) #2

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];


(stanek.94) #3

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

 


(Abaraniecka1) #4

 

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ć?