👤
Alexutaq
a fost răspuns

Scrieti un program care citeste un sir de numere format din cel mult 20 de caractere,care reprezinta numele si prenumele.Intre ele se afla,un numar oarecare de caractere "spatiu".Numele si prenumele sunt formate din litere mici ale alfabetului englez.Programul construieste in memorie un alt sir de caractere,care sa contina initiala prenumelui urmata de "punct" si de nume.

Răspuns :

#include <iostream>
#include <cstring>
#include <cctype>
using namespace std;

int main(){
    char s[20], s2[20];
    int i=0, step=0, k=0;
    cin.get(s, 20);

    for(i=0;i<strlen(s);i++){
        if(step == 0){
            //Suntem la step0, primul pas
            if(i==0){
                //Luăm primul caracter dacă am
                //ajuns la primul caracter din string
                s2[k] = toupper(s[i]);
                s2[k+1] = '.';
                s2[k+2] = ' ';
                k+=3;
            }else if(s[i] == ' '){
                //Dacă am ajuns la primul spațiu, trecem la step1
                step++;
            }
        }else if(step == 1){
            if(isalpha(s[i])){
                //Dacă am ajuns la primul caracter din prenume, îl facem mare
                //în punem în s2, apoi trecem la step2
                s2[k] = toupper(s[i]);
                k++;
                step = 2;
            }
        }else{
            s2[k] = s[i];
            k++;
        }
    }
    s2[k] = '\0'; //Adăugăm la final caracterul nul
    cout<<s2;
}