题解:P11387 [COCI 2024/2025 #1] 身份证 / Osobna

· · 题解

简单模拟题。

运用知识:字符串。

按照题意模拟。注意名字首字母大写,其他小写。字符串首位从零开始。

除了名和姓长度位置不确定,其他都是固定的。

字符串中间没有空格,用 cin 即可。(如果有空格可以用 getline

#include<bits/stdc++.h>
using namespace std;
int main(){
    string s1,s2,s3;
    cin>>s1>>s2>>s3;
    bool b=1,b1=1;
    cout<<"Ime: ";
    for(int i=0;i<30;i++){
        if(s3[i]!='<' && b1){
            cout<<s3[i];
            b1=0;
        }
        else if(s3[i]!='<' && !b1){
            cout<<char(s3[i]-'A'+'a');
        }
        else if(b){
            cout<<"\nPrezime: ";
            b=0;
            b1=1;
            i++;
        }
        else{
            cout<<"\n";
            break;
        }
    }
    cout<<"Datum rodjenja: "<<s2[4]<<s2[5]<<"-"<<s2[2]<<s2[3]<<"-";
    if(s2[0]>'2'){
        cout<<"19"<<s2[0]<<s2[1]<<"\n";
    }
    else if(s2[0]=='2' && s2[1]>'4'){
        cout<<"19"<<s2[0]<<s2[1]<<"\n";
    }
    else{
        cout<<"20"<<s2[0]<<s2[1]<<"\n";
    }
    cout<<"OIB: "<<s1[15]<<s1[16]<<s1[17]<<s1[18]<<s1[19]<<s1[20]<<s1[21]<<s1[22]<<s1[23]<<s1[24]<<s1[25];
}