Probleme rezolvate

Puteți învăța cu ajutorul unor probleme rezovate!

1. Se citesc de la tastatură două şiruri s1 şi s2. Să se elimine toate apariţiile lui s2 în s1. Şirul s2 conţine doar un cuvânt.

//STERGE

#include <conio.h> 

#include <iostream.h>

#include <string.h>

void main()

{char s1[100],s2[30],*p;

int l;

cout<<"introduceti textul:";cin.get(s1,100);

cout<<"introduceti cuvantul:";cin>>s2;

l=strlen(s2); //determina lungimea sirului s2

p=strstr(s1,s2); //cauta s2 in s1

while(p)

{strcpy(p,p+l); //sterge sirul s2, copiind sirul de pa pozitia p+l pe pozitia p

p=strstr(s1,s2); //cauta o noua aparitie a lui s2 in s1

}

cout<<s1;

getch();

}


2. Se citeşte un şir s şi două cuvinte c1 şi c2. Să se înlocuiască toate apariţiile lui c1 în s cu c2.

 //INLOCUIRE

#include <conio.h>

#include <iostream.h>

#include <string.h>

void main()

{char s[100],ss[100]="",c1[30],c2[30],*p; //ss sir vid

int l;

cout<<"introduceti textul:";cin.get(s,100);

cout<<"introduceti primul cuvantul:";cin>>c1;

cout<<"introduceti al doilea cuvantul:";cin>>c2;

l=strlen(c1); //determina lungimea lui c1

p=strstr(s,c1); //determina prima aparitie a lui c1 in s

while(p)

{strncat(ss,s,p-s); //concateneaza p-s caractere la sirul ss

strcat(ss,c2); //concateneaza c2 la ss

strcat(ss,p+l); //concateneaza sirul de dupa aparitia lui c1 la ss

strcpy(s,ss); //copiaza ss in s

strcpy(ss,""); //anuleaza sirul ss

p=strstr(s,c1); //cauta urmatoarea aparitie a lui c1 in s

}

cout<<s; getch();

}

3.Se citeşte de la tastatură un text care conţine cuvinte separate prin spaţiu, virgulă sau punct. Să se afişeze cuvintele textului în ordine alfabetică. Vom separa cuvintele textului folosind funcţia strtok şi le vom memora rănd pe rând într-un tablou. Vom ordona tabloul.

//ORDONARE CUVINTE

#include<iostream.h> 

#include<conio.h>

#include<string.h>

char s[100],*p,a[20][20],separator[]=" ,.";//a-tablou de siruri,retine cuvintele

int k=0,i;

void separare();

void afisare();

void ordonare();

void main()

{ cout<<"Dati sirul:"<<endl;cin.get();cin.get(s,100,'\n');

separare();

cout<<"cuvintele:"<<endl; afisare();

ordonare();

cout<<"cuvintele ordonate:"<<endl; afisare();

getch();

}

void separare() //separa cuvintele

{ p=strtok(s,separator);

while (p)

{ strcpy(a[k],p);

k++;

p=strtok(NULL,separator);

}

}

void afisare() //afiseaza cuvintele

{ int i;

for(i=0;i<k;i++)

cout<<a[i]<<endl;

}

void ordonare() //ordoneaza cuvintele

{int sw,i;

char aux[20];

do {sw=1;

for(i=0;i<k-1;i++)

if (strcmp(a[i],a[i+1])>0)

{ strcpy(aux,a[i]);

strcpy(a[i],a[i+1]);

strcpy(a[i+1],aux);

sw=0;

}

}

while(!sw);

}

4. Se citeste un cuvant c cu cel mult 20 de litere. Sa se elimine din cuvantul c toate aparitiile primei litere.
Exemplu: c="anamaria" dupa prelucrare ramane "nmri"

5. Se citeste un cuvant s format din cel mult 100 de litere mici. Se citeste un numar natural p (p<=100). Afisati cuvintele obtinute prin eliminarea unei secvente de p litere din s.
Exemplu: s="adina", si p=3, rezulta cuvintele: na aa ad. 

6. Se citeste de la tastatura un cuvant cu cel putin una si cel mult 20 de litere ale alfabetului englez. Construiti si afisati pe ecran cuvantul obtinut prin interschimbarea primei consoane cu ultima vocala din cuvantul citit. In cazul in care cuvantul este format numai din vocale sau numai din consoane, afisati pe ecran mesajul IMPOSIBIL. Se considera vocale literele a, e, i, o, u, A, E, I, O, U.
Exemplu: dacã se citeste cuvantul Marmorat se va obtine si afisa cuvantul aarmorMt

7.Ce memorează variabila s, de tip şir de caractere, după executarea instrucţiunilor de mai jos? strncpy(s,"informatica",strlen("2013"));
s[strlen("2013")]='\0';
strcat(s,"BAC");
raspuns: infoBAC  

8.În secvenţa alăturată, variabilele s1, s2 şi s3 reţin şiruri de caractere. După executarea acesteia, variabila întreagă val primeşte valoarea 1 dacă:

if(!(strcmp(s1,s2)||strcmp(s1,s3)))
val=1;
else
val=2;

  1. s1, s2, s3 reţin şiruri de caractere ordonate lexicografic
  2. s1 este obţinut prin concatenarea şirurilor reţinute în s2 şi s3
  3. s1, s2, s3 reţin şiruri de caractere de lungimi diferite
  4. s1, s2, s3 reţin şiruri identice de caracter

raspuns: 4 

9. Se citeste un numar natural n si apoi n cuvinte formate din cel mult 20 de litere fiecare. Calculati si afisati cate dintre cele n-1 cuvinte citite incepand cu cel de al doilea au proprietatea ca primul cuvant citit le este sufix.
Exemplu: daca n=6, iar cuvintele citite sunt ion, revelion, ionel, bulion, milion, pionu se afişează 3

 10. Scrieţi un program în limbajul C++ care citeşte de la tastatură două şiruri, formate fiecare din cel mult 20 de caractere. Primul şir reprezintă numele unei persoane, iar al doilea şir reprezintă prenumele aceleiaşi persoane. Atât numele cât şi prenumele sunt formate numai din litere ale alfabetului englezesc şi fiecare conţine cel puţin o consoană. Programul construieşte în memorie şi afişează pe ecran un al treilea şir de caractere, care conţine consoanele din prenumele citit dispuse în ordinea în care apar în prenume urmate de exact un spaţiu şi de numele citit.

Exemplu: dacă primul şir citit este "Mihai", iar al doilea este "Popa" se va construi şi apoi se va afişa pe ecran şirul "Mh Popa".

Soluție:

#include <iostream>

 #include<string.h>

 using namespace std; 

int main() 

{ char nume[20], prenume[20], numecomplet[40], vocale[]={"aeiou"}; 

int i; 

cin.getline(nume,20); 

cin.getline(prenume,20); 

for(int i=0;i<strlen(prenume);i++) if(strchr(vocale, prenume[i])) strcpy(prenume+i, prenume+i+1) ; strcat(numecomplet, prenume); strcat(numecomplet, " "); 

strcat(numecomplet, nume); 

cout<<numecomplet; 

return 0; } 

Înapoi                                                                                                                                     Înainte

Doriți să ajungeţi la pagina principală?

Informatica e uşoară dacă o iei pas cu pas!
Creat cu Webnode
Creați un site gratuit! Acest site a fost realizat cu Webnode. Creați-vă propriul site gratuit chiar azi! Începeți