Informatică, întrebare adresată de ginomarian2, 9 ani în urmă

Cerința
Scrieţi un program care citeşte din fişierul de intrare mai multe şiruri de caractere formate din litere mici ale alfabetului englez şi determină câte dintre acestea sunt formate din două şiruri identice (cu lungimea cel puţin 1) concatenate.

Date de intrare
Fișierul de intrare siruri_concatenate.in conține pe prima linie un număr natural nenul n, iar pe următoarele n linii câte un şir format din litere mici ale alfabetului englez.

Date de ieșire
Fișierul de ieșire siruri_concatenate.out va conține pe prima linie numărul de şiruri din fişierul de intrare care sunt formate din două şiruri identice concatenate.

Restricții și precizări
1 ≤ n ≤ 1000000
şirurile au cel mult 5000 de caractere.
Exemplu:
siruri_concatenate.in

5
sirsir
micropico
pp
vara
nanonano
siruri_concatenate.out

3
Explicație
Cele 3 şiruri din fişier obţinute prin concatenarea a două şiruri identice sunt: sirsir (sir), pp (p) şi nanonano (nano).

Răspunsuri la întrebare

Răspuns de express
2
#include <bits/stdc++.h>
using namespace std;
char s[5001], s1[2501];
int i, n, nr, j, r, p, c, lu;
int main()
{
    ifstream f("siruri_concatenate.in");
    ofstream g("siruri_concatenate.out");
    f >> n;
    f.get();
    for(i = 1; i <= n; i ++)
    {
        f.getline(s, sizeof(s));
        lu = strlen(s);
        if(lu % 2 == 0)
        {
            memset(s1,0,sizeof(s1));
            r = lu / 2;
            strncpy(s1, s, r);
            c = strcmp(s1, s + r);
            if(c == 0) nr ++;
        }
    }
    g << nr;
    return 0;
}


ginomarian2: DAR IN LOC DE MEMSET NU PUTEM FOLOSI ALTCEVA,TE ROG
ginomarian2: ca e mai mult de facultate si neee...imi taie
express: memset este o functie care reseteaza sirul s1...il face sir vid...la fel si la vectori de numere....orice profesor de liceu trebuie sa stie functia memset....nu are voie sa-ti taie...ar da dovada de "incultura informatica"
Alte întrebări interesante