Informatică, întrebare adresată de MădălinaSpiridon, 9 ani în urmă

Se consideră fișierul prosir.in care conține pe primul rând un text format din cel mult 199 de caractere litere mici și spații. Cuvintele din text sunt separate prin unul sau mai multe spații. Să se modifice textul citit din fișier prin înlocuirea ultimei litere a fiecărui cuvânt cu cifra 5. Textul modificat se va afișa pe ecran. Date de intrare Fișierul de intrare prosir.in conține pe prima linie șirul de caractere. Date de ieșire Fișierul de ieșire prosir.out va conține pe prima linie șirul modificat conform cerinței. Restricții și precizări lugimea șirului citit este maximum 200 ultimul cuvânt din text se termină cu caracterul ‘.’

#include
#include
using namespace std;
ifstream fin("prosir.in");
ofstream fout("prosir.out");
char sir[202],sep[]=" ",*p;
char c[]="5";
int i;
int main()
{fin.getline(sir,201);
for(i=0;i if(sir[i+1]==' ')
strcpy(sir+i,c);
if(sir[i+1]=='.')
strcpy(sir+i,c);

}

fout << sir<< endl;
}


express: Problema nu se face asa...trebuie sa folosesti functia strtok....
express: Pentru 50 de puncte iti ofer o solutie
ralluccalp15: Nu este adevarat, se poate face si fara strtok
ralluccalp15: Doar ca este mai complicat, pentru ca ai mai multe spatii. Dar mereu exista mai multe solutii

Răspunsuri la întrebare

Răspuns de ralluccalp15
7
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
int main()
{    char char s[201];
     int i;
     ifstream in("prosir.in");
     ofstream out("prosir.out");
     in.get(s,201);
     for(i=1;s[i];i++)
       if(s[i]==' ' and isalpha(s[i-1]))
         s[i-1]='5';
     s[strlen(s)-2]='5';
     cout<<s;
     return 0;
}

#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
int main()
{    char char s[201],s1[201],*p;
     int i;
     ifstream in("prosir.in");
     ofstream out("prosir.out");
     in.get(s,201);
     p=strtok(s," ");
     while(p)
       {p[strlen(p)-1]='5';
        strcat(s1,p);
        strcat(s1," ");
        p=strtok(NULL," ");
       }
    cout<<s1;
    return 0;
}
    

ralluccalp15: A doua solutie nu e pe deplin corecta pentru ca trebuie numarate si adaugate toate spatiile, iar cazul ultimului cuvant care se temina cu '.' nu este tratat
ralluccalp15: Ai putea totusi sa adaugi
ralluccalp15: s1[strlen(s1)-2]='5';
Alte întrebări interesante