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

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.


alexutaq: eu sunt la inceput,inca nu ne a invatat toate aceste coduri
alexutaq: acum nu stiu daca imi poti reda mai simplu,dar multumesc mult ca mi ai acordat timp ca sa mi explici ce si cum
alexutaq: nu am avansat atat de mult
artur99: a, dar e primul lucru care se învață la ASCII. Adică fiecare caracter, de fapt, nu este un caracter, ci un număr de la 0 la 255(aici fiind vorba de cele din char-uri).
artur99: Iar fiecărui număr îi corespunde un caracter. Și când se afișează acea variabilă sau vector de tip char, se vor afișa, de fapt, caracterele corespondente.
alexutaq: inseamna ca mai avem pana la aceste lucruri :))
artur99: Posibil. Dar fără astea nu văd alt mod de a face un caracter din minusculă în majusculă. :))
alexutaq: da,aici nu te contrazic,pentru ca tu esti mult mai experimentat in domeniu
artur99: Ăăă, nu știu dacă sunt așa experimentat :)) poate ați făcut la școală alte metode care probabil nu le știu...?
alexutaq: noi suntem la inceput,adica tot ce mi ai explicat aici inca nu am facut nimic din toate astea

Răspunsuri la întrebare

Răspuns de artur99
0
#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;
}
Alte întrebări interesante