Rezolvare completă PbInfo #2108 Fraze

Alina este pasionată de rebus şi literatură. Recent, a citit un articol în limba engleză despre fraze denumite pangram. O frază pangram este formată din cuvinte, separate printr-un singur caracter (spaţiu sau virgulă) şi care folosește fiecare literă din alfabetul unei limbi cel puțin o dată.
O frază pangram perfectă este o frază pangram care folosește fiecare literă din alfabet doar o singură dată. Alina se decide să stabilească frazele pangram, numărul de fraze pangram şi numărul de fraze pangram perfecte dintr-un text. Fiecare frază din text începe cu o literă mare şi se încheie cu caracterul punct.

Cerința

Scrieţi un program care să determine numărul de fraze pangram, numărul de fraze pangram perfecte dintr-un text dat şi să afişeze frazele pangram în ordine lexicografică.

Date de intrare

Fişierul de intrare fraze.in conţine un text pe mai multe linii, format din fraze ce se încheie cu caracterul punct. Fiecare frază ocupă o linie din text.

Date de ieșire

Fişierul de ieşire fraze.out conţine pe prima linie două numere naturale, separate printr-un spaţiu, ce reprezintă numărul de fraze pangram şi numărul de fraze pangram perfecte din textul dat în fişierul de intrare. Pe următoarele linii din fişier sunt scrise frazele pangram, în ordine lexicografică. Fiecare frază se scrie pe o linie.

Restricții și precizări

• Fiecare linie din text începe cu o literă mare şi se incheie cu Enter
• Un cuvânt reprezintă o succesiune de litere mari şi mici din alfabetul englez
• O frază conţine cuvinte separate prin unul din caracterele spaţiu sau virgulă, se încheie cu caracterul punct şi are cel mult 255 de caractere
2 ≤ Numărul de fraze din text ≤ 100


Exemplu

fraze.in

Pangrams are used to test fonts because they provide a quick view of all the letters.
Din cauza marilor distante si lipsei de lumina proprie planetele extrasolare nu pot fi vazute direct.
Quasarul descoperit se afla in galaxia Zwicky si va mai fi observat joi in constelatia Hora.
The quick brown fox  jumps over the lazy dog.
Pentru numele oficial al planetelor care inconjoara o stea se folosesc litere.
Skp,xqlon,trhyf,wgcam,bej,vid,uz.
Sfinx,Kripton,Willy sunt in echipa de handbal GQ si vor juca maine,in zori.

fraze.out

4 1
Quasarul descoperit se afla in galaxia Zwicky si va mai fi observat joi in constelatia Hora.
Sfinx,Kripton,Willy sunt in echipa de handbal GQ si vor juca maine,in zori.
Skp,xqlon,trhyf,wgcam,bej,vid,uz.
The quick brown fox  jumps over the lazy dog.

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema Fraze:

#include <fstream>
#include<stdio.h>
#include <iomanip>
#include<algorithm>
#include<cstring>
#include<iostream>
using namespace std;

int conditie(char a[], char b[])
{
  if(strcmp(a,b)>=0)
     return 0;
  return 1;
}
main()
{
char rez[100][255], p[255],l,c, aux[255];
ifstream fin("fraze.in");
ofstream fout("fraze.out");
int poz=0,k=0, fp=0, fpp=0, okp, okpp, i, nr, sort;
while(fin.get(c))
{
if(c!='.')p[poz++]=c;
else
{
p[poz++]='.';p[poz]=0;fin.get();
okp=1;okpp=1;
for(l='a';l<='z'&&okp==1;l++)
{nr=0;
for(i=0;i<poz;i++)
if(p[i]==l || p[i]==(char)(l-32) )nr++;
if (nr==0){okp=0;okpp=0;}
if(nr>1)okpp=0;
}
if(okp){fp++;strcpy(rez[k++],p);}
if(okpp)fpp++;
poz=0;
}
}
fout<<fp<<' '<<fpp<<'\n';
do
{
sort=1;
for(i=0;i<k-1;i++)
    if(strcmp(rez[i],rez[i+1])>0)
    {strcpy(aux,rez[i]);strcpy(rez[i], rez[i+1]);strcpy(rez[i+1],aux);
    sort=0;
    }
}while(!sort);
for(i=0;i<k;i++)
    fout<<rez[i]<<'\n';

fout.close();
return 0;
}

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #2108 Fraze

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #2108 Fraze de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!