Pagini recente » Cod sursa (job #2828869) | Cod sursa (job #1563818) | Cod sursa (job #1290735) | Cod sursa (job #1649133) | Cod sursa (job #868147)
Cod sursa(job #868147)
#include <iostream>
#include <fstream>
//#include <cstring>
using namespace std;
char adn[18][30002];
char raspuns[1000000];
char subsircurent[1000000];
//int sl(char *ptr);//O.K.
int citiredate();//O.K.
bool fsim(char *str1, char *str2, int k);//O.K.
void assign(char *str1, char *str2, int pos);
int main()
{
int n, i = 0, rpos = 0;
n = citiredate();n--;
if(fsim(adn[i], adn[n], 0)) assign(raspuns, subsircurent, 0);
else if(fsim(adn[n], adn[i], 0)) assign(raspuns, subsircurent, 0);
i++;
while(i < n)
{
if(fsim(raspuns, adn[i], 0)) assign(raspuns, subsircurent, 0);
else if(fsim(adn[i], raspuns, 0)) assign(raspuns, subsircurent, 0);
i++;
}
//cout << raspuns;
ofstream out("adn.out");
out << raspuns;
out.close();
return 0;
}
int citiredate()
{
short int n;
fstream in("adn.in");
in >> n;
for(short int i = 0; i < n; i++)
{
in >> adn[i];
}
in.close();
return n;
}
bool fsim(char *str1, char *str2, int k)
{
int i = 0, j = 0;
while(str1[i] != str2[j] && str1[i] != '\0')
{
subsircurent[k] = str1[i];
i++;k++;
}
if(str1[i] == '\0') return false;
while(str1[i] == str2[j] && str1[i] != '\0' && str2[j] != '\0')
{
subsircurent[k] = str1[i];
i++;j++;k++;
}
if(str1[i] == '\0')
{
while(str2[j] != '\0')
{
subsircurent[k] = str2[j];
j++;k++;
}
return true;
}
else if(str2[j] == '\0')
{
while(str1[i] != '\0'){
subsircurent[k] = str1[i];
i++;k++;
}
return true;
}
else
{
return fsim(&str1[i], str2, k);
}
}
/*
int sl(char *ptr)
{
int i = 0;
while(*(ptr + i) != '\0') i++;
return i;
}
*/
void assign(char *str1, char *str2, int pos)
{
int i = 0;
while(str2[i] != '\0')
{
str1[pos] = str2[i];
i++;pos++;
}
str1[pos] = '\0';
}