Buna seara ! Va rog foarte frumos ! Nu-mi iese problema de mai jos . Va rog , ma puteti ajuta?
Să considerăm următorul şir:
a, b, ba, bab, babba, babbabab, ...
Cerinţă
Scrieţi un program care să determine care este cel de-al n-lea termen al şirului.
Date de intrare
Fişierul de intrare sirul.in conţine o singură linie pe care se află numărul natural n.
Date de ieşire
Fişierul de ieşire sirul.out va conţine o singură linie pe care se află al n-lea termen din şir.
Restricţii
1<=n<=20
Exemple
sirul.in sirul.out
4
bab
Multumesc frumos ! (este problema ,,sirul " de pe campion edu arhiva educationala )
Răspunsuri la întrebare
Răspuns:
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("sirul.in");
ofstream fout("sirul.out");
int n;
char a[6770],b[6770],c[6770];
int main()
{
fin >> n;
strcpy(a,"a");
strcpy(b,"b");
if (n==1) fout << a;
else
{
if (n==2) fout << b;
else
{
while (n>2)
{
strcpy(c,b);
strcat(c,a);
strcpy(a,b);
strcpy(b,c);
--n;
}
fout << c;
}
}
}
Explicație:
a,b,ba,bab,babba,babbabab, ...
este o analogie cu şirul Fibonacii: 1,1,2,3,5,8,13,...
numai că aici se concatenează două şiruri pentru al obţine pe următorul.
Valoarea lui n din şirul Fibonacci ne spune care este lungimea şirului de pe locul n. Din condiţie 1<=n<=20, am calculat al 20-lea termen al şirului Fibonacii şi este 6765, deaceea am declarat pentru termenii a,b,c acea dimensiune...
Sper că cunoşti funcţiile de prelucrare a sirurilor de caractere....