Informatică, întrebare adresată de Pinaplepie, 8 ani în urmă

Cerința Pentru un cuvânt format din litere mici ale alfabetului englez s și un număr natural x mai mic sau egal cu lungimea cuvântului, definim următoarea operație: dacă x este par, la s se vor adăuga primele sale x litere, în ordinea din șir; dacă x este impar, la s se vor adăuga primele sale x litere, în ordinea inversă din șir. Se dă un cuvânt s și un șir de n numere naturale x[1], x[2], …, x[n]. Se aplică succesiv operația definită mai sus între șirul s și numerele din șir, în ordinea acestora. Afișați șirul s după aplicarea acestor operații. Date de intrare Programul citește de la tastatură cuvântul s, numărul n și cele n elemente ale șirului. Date de ieșire Programul va afișa pe ecran cuvântul rezultat. Restricții și precizări lungimea inițială a cuvântului este de cel mult 1000 de caractere 1 ≤ n ≤ 1000 fiecare element al șirului dat va fi mai mic sau egal cu minimul dintre 1000 și lungimea curentă a șirului s Exemplu Intrare alina 3 4 3 2 Ieșire alinaalinilaal

Răspunsuri la întrebare

Răspuns de boiustef
5

#include <iostream>

#include <cstring>

using namespace std;

char s[1001002];

int n, num, j, i, k;

int main()

{

   cin >> s >> n;

   j=strlen(s);

   for (i=1; i<=n; ++i)

   {

       cin >> num;

       if (num%2==0)

       {

           for (k=0; k<num; ++k)

               s[j++]=s[k];

       }

       else

       {

           for (k=num-1; k>=0; --k)

               s[j++]=s[k];

       }

   }

   s[j]='\0';

   cout << s;

}

Alte întrebări interesante