Fişierul atestat.in conţine o singură linie pe care se află scris un text format din cel mult 70 de caractere, primul și ultimul caracter fiind literă, iar cuvintele din text sunt separate prin unul sau mai multe spaţii. Fiecare cuvânt este format doar din litere mari ale alfabetului limbii engleze.
Să se scrie un program, în limbajul Pascal/C/C++, care:
a) afişează textul pe o singură linie a ecranului, transformând ultima litera a fiecarui cuvant în literă mica;
b) prin intermediul unui subprogram, afişează pe ecran pe următoarea linie, textul inițial din care au fost șterse toate vocalele;
c) scrie în fişierul atestat.out, pe prima linie, toate cuvintele din textul inițial care au a doua literă vocală, separate printr-un spațiu. Dacă nu există astfel de cuvinte, se va scrie pe prima linie a fişierului mesajul “NU EXISTĂ ASTFEL DE CUVINTE”.
Exemplu: atestat.in
CLOPOTUL VECHI UMPLE CU GLASUL LUI SARA
am nevoie in c++
Răspunsuri la întrebare
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("atestat.in");
ofstream g ("atestat.out");
char s[70], aux[70], sep[]=" ", *cuv, voc[]="AEIOU";
short n, i, m;
int main()
{
f.getline(s,70);
n=strlen(s);
strcpy(aux,s);;
for (i=0; i<n; ++i)
{
if ((s[i]>='A' && s[i]<='Z' && s[i+1]==' ')|| i==n-1)
s[i]=s[i]+('a'-'A');
}
cout << s << "\n";
for (i=0; i<n; ++i)
{
if (!strchr(voc,aux[i])) cout << aux[i];
}
cout << endl;
strcpy(s,aux);
int exista=0;
cuv=strtok(s,sep);
while (cuv)
{
if (cuv[1]=='A' || cuv[1]=='E' || cuv[1]=='I' || cuv[1]=='O' || cuv[1]=='U')
{ g << cuv << " "; exista=1; }
cuv=strtok(0,sep);
}
if (exista==0) g << "NU EXISTA ASTFEL DE CUVINTE";
}