0% au considerat acest document util (0 voturi)
16 vizualizări18 pagini

Informatics

Programul citește un șir de caractere care poate conține cuvinte separate prin spații și înlocuiește vocalele din fiecare cuvânt cu aceeași vocală urmată de litera mare corespunzătoare.

Încărcat de

Diana Maria
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOCX, PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
16 vizualizări18 pagini

Informatics

Programul citește un șir de caractere care poate conține cuvinte separate prin spații și înlocuiește vocalele din fiecare cuvânt cu aceeași vocală urmată de litera mare corespunzătoare.

Încărcat de

Diana Maria
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOCX, PDF, TXT sau citiți online pe Scribd

Varianta 2 S se scrie un program C/C++ care citete de la tastatur un cuvnt format din cel mult 20 de caractere, doar litere

mici ale alfabetului englez. Programul determin transformarea cuvntului citit prin nlocuirea fiecrei vocale a cuvntului, cu un ir format din dou caractere i anume vocala respectiv urmat de litera mare corespunztoare, restul literelor nemodificndu-se, ca n exemplu. Programul afieaz pe ecran cuvntul obinut, pe o singur linie. Se consider vocale literele din mulimea ,a,e,i,o,u-. Exemplu: pentru cuvntul bacalaureat se va afia pe ecran: baAcaAlaAuUreEaAt #include<iostream.h> #include<string.h> void main() { char s[40]; cin>>s; char v[]="aeiou"; for(int i=0;i<strlen(s);i++) if(strchr(v,s[i])!=0) //e vocala mica { char *aux; strcpy(aux,s+i); strcpy(s+i+1,aux); //dubleaza vocala mica s[i+1]=s[i+1]-32; //transforma dublura in mare } cout<<s; } Varianta 7 Se consider un text cu maximum 255 de caractere, format din litere mici ale alfabetului englez i spaii. Textul conine cel puin o consoan. Scriei un program C/C++ care citete de la tastatur textul i apoi determin transformarea acestuia, eliminnd numai ultima consoan care apare n text, ca n exemplu. Programul va afia pe ecran textul obinut. Exemplu: dac de la tastatur se introduce textul: mare frig saci pe ecran se va afia: mare frig sai #include<iostream.h> #include<string.h> void main() { char s[255]; [Link](s,255); char v[]=" aeiou"; int gata=0,i; i=strlen(s)-1; while(!gata) //ca sa stearga o singura data { if(strchr(v,s[i])==0){ strcpy(s+i, s+i+1); gata=1; } i--; } cout<<s; }

Varianta 21 Se consider un text alctuit din cel mult 250 de caractere, n care cuvintele sunt formate doar din litere mici ale alfabetului englez i sunt separate prin unul sau mai multe caractere *. Scriei un program C/C++ care citete de la tastatur textul i afieaz pe ecran, pe cte o linie, toate secvenele formate din cte dou litere identice, ca n exemplu. #include<iostream.h> #include<string.h> void main() { char s[251], i; [Link](s,251); for(i=0;i<strlen(s)-1;i++) if(s[i]==s[i+1] && s[i]!='*') cout<<s[i]<<s[i+1]<<endl; } Varianta 24 Scriei un program C/C++ care citete de la tastatur dou iruri de caractere formate din maximum 100 litere mici ale alfabetului englez i afieaz pe ecran cel mai lung sufix comun al celor dou iruri de caractere. Dac cele dou iruri nu au niciun sufix comun, atunci programul va afia pe ecran mesajul NU EXIST. #include<iostream.h> #include<string.h> void main() { char a[100],b[100]; int i,j; cin>>a>>b; i=strlen(a)-1; j=strlen(b)-1; while(a[i]==b[j]) { i--; j--; } cout<<a+i+1; } Varianta 28 irul de caractere s2 este clona irului de caractere s1 dac se poate obine din s1 prin eliminarea tuturor apariiilor unei singure vocale. Se consider vocal orice liter din mulimea ,a,e,i,o,u-. Scriei programul C/C++ care citete de la tastatur un cuvnt format din cel mult 20 litere mici ale alfabetului englez i afieaz pe ecran (dac exist), toate clonele acestui cuvnt, fiecare pe cte o linie a ecranului. Exemplu: pentru cuvntul informatica se afieaz, nu neaprat n aceast ordine, clonele scrise alturat.

#include<iostream.h> #include<string.h> void main()

{ char s[100],v[]="aeiou"; int i; cin>>s; for(i=0;i<=4;i++) if(strchr(s,v[i])!=0) { for(int j=0;j<strlen(s);j++) if(s[j]!=v[i]) cout<<s[j]; cout<<endl; } } Varianta 31 Se consider o list liniar simplu nlnuit alocat dinamic n care fiecare nod memoreaz n cmpul info un cuvnt format din cel mult 20 de caractere, doar litere mari ale alfabetului englez, iar n cmpul urm, adresa urmtorului nod al listei sau NULL dac nu exist un element urmtor. Scriei un program C/C++ care citete de la tastatur un numr natural n (n100) i apoi n cuvinte distincte, fiecare cuvnt fiind format din cel mult 20 de caractere, doar litere mari ale alfabetului englez, i construiete o list simplu nlnuit, cu acele cuvinte citite, care ncep i se termin cu aceeai liter. Cuvintele se vor memora n list n ordine invers citirii lor. Exemplu: pentru n=9 i cuvintele citite: URSUZU IRI E SUPARAT POP DORIS SI ANA CITESC #include<fstream.h> #include<string.h> struct nod{char info[30]; nod *leg; }; nod *prim; void adaugf(nod *&prim,char x[30]) {nod *nou=new nod; strcpy(nou->info,x); nou->leg=prim; prim=nou; } void afis(nod *prim) {nod *p=prim; while(p) {cout<<p->info<<" "; p=p->leg; } cout<<endl; }

Varianta 32 Scriei un program C/C++ care citete de la tastatur dou caractere c1 i c2 (litere distincte ale alfabetului englez), i un text avnd cel mult 250 caractere (doar spaii i litere ale alfabetului englez), pe care l modific nlocuind toate apariiile caracterului memorat n c1 cu cel memorat n c2 i toate apariiile caracterului memorat n c2 cu cel memorat n c1. Programul afieaz pe linii separate ale ecranului att textul iniial ct i textul obinut dup efectuarea nlocuirilor. (10p.)

Exemplu: dac pentru c1 se citete a, pentru c2 se citete o iar textul citit este: hocus pocus preparatus se va afia : hocus pocus preparatus hacus pacus preporotus #include<iostream.h> #include<string.h> void main() { char s[250],c1,c2; [Link](s,250); cin>>c1>>c2; cout<<s<<endl; for(int i=0; i<strlen(s); i++) if(s[i]==c1) s[i]=c2; else if(s[i]==c2) s[i]=c1; cout<<s; } Varianta 39 Un ir cu maximum 255 de caractere conine cuvinte separate prin cte un spaiu. Cuvintele sunt formate numai din litere mici ale alfabetului englez. Scriei un program C/C++ care citete de la tastatur un astfel de ir i l afieaz pe ecran modificat, inversnd prin oglindire doar cuvintele care ncep cu vocal, ca n exemplu. Se consider ca fiind vocale urmtoarele litere: a, e, i, o, u. Exemplu: pentru irul: maine este proba la informatica se va afia: maine etse proba la acitamrofni #include<iostream.h> #include<string.h> void main() { int i,p,j; char s[255],v[]="aeiou"; [Link](s,255); i=0; if(strchr(v,s[i])) { p=i; while(s[i]!=' ') i++; for(j=i-1;j>=p;j--) cout<<s[j]; } else while(s[i]!=' ') { cout<<s[i]; i++; } cout<<' '; i++; while(i<strlen(s)) { if(strchr(v,s[i]) && s[i-1]==' ') { p=i; while(s[i]!=' '&& i<strlen(s)) i++; for(j=i-1;j>=p;j--) cout<<s[j]; } else while(s[i]!=' ' && i<strlen(s))

{ } i++; cout<<" "; } } Varianta 40

cout<<s[i]; i++;

Un ir cu maximum 255 de caractere conine cuvinte cuvinte formate numai din litere mici ale alfabetului englez. Fiecare cuvnt este urmat de un caracter *. Scriei un program C/C++ care citete un astfel de ir i afieaz pe ecran irul obinut prin eliminarea tuturor apariiilor primului cuvnt, ca n exemplu. Exemplu: pentru irul: bine*albine*foarte*bine* se va afia: *albine*foarte** #include<iostream.h> #include<string.h> void main() { char s[255]; char a[255]=""; char *p; cin>>s; int i=0; while(s[i]!='*') { a[i]=s[i]; i++; } a[i+1]='\0'; strcpy(s,s+i); p=strstr(s,a); while(strstr(p,a)) { p=strstr(p,a); if((p-1)[0]=='*' && (p+strlen(a))[0]=='*') strcpy(p,p+strlen(a)); else p=p+strlen(a); } cout<<s; } Varianta 51 Se consider un ir s avnd maximum 52 de caractere, ir ce conine numai litere mici ale alfabetului englez i cifre. Primul caracter al irului este o liter mic, ultimul caracter al irului este o cifr i fiecare liter mic din ir este urmat de o cifr nenul. Scriei un program C/C++ care citete de la tastatur irul s, apoi construiete i afieaz pe ecran un nou ir de caractere, format numai din litere mici ale alfabetului englez, ir construit dup urmtoarea regul: fiecare liter mic se va repeta de attea ori de cte ori o indic cifra situat pe poziia imediat urmtoare n irul iniial, ca n exemplu. Exemplu: dac se citete de la tastatur irul a2b1f2 atunci irul cerut este aabff #include<iostream.h> #include<string.h>

void main() { char s[52],a[200]=""; int i,k=0; cin>>s; for(i=0;i<strlen(s);i=i+2) for(int j=1;j<=s[i+1]-'0';j++) { a[k]=s[i]; k++; } a[k]=0; cout<<a; } Varianta 55 Scriei un program C/C++ care citete de la tastatur un ir de caractere format din maximum 10 caractere, reprezentnd un numr real n care partea ntreag este separat de partea zecimal prin caracterul punct. Programul afieaz pe ecran valoarea obinut prin adunarea numrului corespunztor prii ntregi i a numrului corespunztor prii zecimale ale datei citite. Exemplu: dac se citete de la tastatur irul de caractere 120.456 atunci se va afia 576, iar dac se citete de la tastatur irul de caractere 121.090 atunci se va afia 130. #include<iostream.h> #include<string.h> #include<stdlib.h> void main() { char s[10]; cin>>s; char *p=strchr(s,'.'); strncpy(s,s,p-s); long a=atol(s); long b=atol(p+1); while(b%10==0) b=b/10; cout<<a+b; } Varianta 59 Scriei un program C/C++ care citete de la tastatur un ir de cel mult 50 de caractere (litere mici i mari ale alfabetului englez, cifre, puncte, virgule i spaii) i afieaz pe ecran cifra care apare de cele mai multe ori n irul citit. Dac irul conine mai multe cifre cu numr maxim de apariii, atunci se va afia cea mai mic dintre acestea. Dac irul nu conine cifre, se va afia pe ecran mesajul NU. Exemplu: dac se citete irul: Voi lua 9,5 la matematica 10 la informatica si 10 la romana atunci se va afia cifra 0 (pentru c cifrele 0 i 1 apar de cele mai multe ori n ir, iar 0 este cea mai mic dintre ele) #include<iostream.h> #include<string.h> int main() {

char s[51],c,cmax; int i,max=0,n,k; [Link](s,51); n=strlen(s); for(c='0'; c<='9';c++) { k=0; for(i=0; i<n;i++) if(s[i]==c) k++; if(k>max) { cmax=c; max=k; } } if(max==0) cout<<"NU"; else cout<<cmax; return 0; } Varianta 60 Scriei un program C/C++ care citete de la tastatur un ir de cel mult 50 de caractere (litere mici i mari ale alfabetului englez, cifre i spaii) i afieaz pe ecran litera mic cel mai des ntlnit n irul citit. Dac exist mai multe litere mici cu numr maxim de apariii, programul o va afia pe prima dintre ele n ordine alfabetic. Dac irul nu conine litere mici, atunci pe ecran se va afia mesajul nu. Exemplu: dac se citete irul: mergem la munte atunci se va afia: e (pentru c literele e i m apar de cele mai multe ori n ir, iar e este prima dintre ele n ordine alfabetic). #include<iostream.h> #include<string.h> void main() { char s[50]; int f[130]; [Link](s,255); for(char i='a';i<='z';i++) f[i]=0; // cu vector de frecvente for(int j=0;j<strlen(s);j++) if(s[j]>='a' && s[j]<='z') f[s[j]]++; int max=0; char l; for(i='a';i<='z';i++) if(f[i]>max) { max=f[i]; l=i; } cout<<l; }

Varianta 62 Scriei un program C/C++ care citete de la tastatur un text de cel mult 255 de caractere, dintre care cel puin unul este o liter mic a alfabetului englez, i afieaz pe ecran, pe o singur linie, desprite prin cte un spaiu, toate literele mici ale alfabetului englez care apar n text. Fiecare liter va fi afiat o singur dat, n ordinea primei ei apariii n text. Exemplu: pentru textul: Calculati valoarea expresiei #include<iostream.h> #include<string.h> void main() { char s[256]; int i,j, gasit; [Link](s,256); for(i=0;i<strlen(s);i++) if(s[i]>='a' && s[i]<='z') { gasit=0; for(j=0;j<i;j++) if(s[i]==s[j]) gasit=1; if(!gasit) cout<<s[i]<<" "; } } Varianta 71 Scriei programul C/C++ care citete de la tastatur, separate prin Enter, dou iruri de caractere: un ir s de maximum 255 de caractere, care pot fi litere ale alfabetului englez i spaii, apoi un ir c de maximum 20 de caractere. Programul va nlocui n irul s toate apariiile irului c cu un ir de exact aceeai lungime efectiv cu c, format doar din caractere *, ca n exemplu. irul s obinut n urma acestei prelucrri va fi afiat pe ecran. n cazul n care c nu apare n s, programul va afia mesajul NU APARE. Exemplu: dac irul S citit este Din departare se vede tare iar c este tare atunci pe ecran se va afia: Din depar**** se vede **** #include<iostream.h> #include<string.h> void main() { char s[255], c[20]; [Link](s,255); [Link](); [Link](c,20); if(strstr(s,c)==0) cout<<"NU APARE"; else { while(strstr(s,c)!=0) { char *p=strstr(s,c); for(int i=0;i<strlen(c);i++) p[i]='*'; } cout<<s; } }

Varianta 78 Scriei programul C/C++ care citete de la tastatur un text cu cel mult 100 de caractere (doar litere mici ale alfabetului englez i spaii) i un cuvnt cu cel mult 15 caractere, doar litere mici ale alfabetului englez, i care afieaz pe ecran irul obinut prin inserarea n textul iniial a caracterului ? dup fiecare apariie a cuvntului citit. Dac n text nu apare cuvntul citit, se va afia mesajul NU APARE. Exemplu: dac se citete de la tastatur textul examenului examenul de bacalaureat si examenul de atestat i cuvntul examenul se va afia: examenului examenul? de bacalaureat si examenul? de atestat #include<string.h> #include<iostream.h> void main() { char s1[200], s2[15], *p, aux[200]; int cont=0; [Link](s1,200); [Link](); cin>>s2; p=s1; while(strstr(p,s2)) { char *q=strstr(p,s2); if(((q-1)[0]==' ' || p==s1) && (q+strlen(s2))[0]==' ') { char aux[200]; strcpy(aux,s2); strcat(aux,"?"); strcat(aux,q+strlen(s2)); strcpy(q,aux); cont=1; } p=q+strlen(s2); } if(cont) cout<<s1; else cout<<"nu exista"; } Varianta 79 Scriei programul C/C++ care citete de la tastatur un text cu cel mult 100 de caractere (doar litere ale alfabetului englez i spaii), construiete n memorie i apoi afieaz pe ecran irul de caractere obinut din irul iniial, n care se insereaz dup fiecare vocal caracterul *. Se consider vocale literele a, e, i, o, u, A, E, I, O, U. Dac textul citit nu conine vocale, se va afia mesajul FARA VOCALE. Exemplu: dac se citete de la tastatur textul Examenul de bacalaureat se va obine i afia: E*xa*me*nu*l de* ba*ca*la*u*re*a*t. #include<iostream.h> #include<string.h> void main() { char v[]="aeiouAEIOU", s[200], aux[200];

int i; [Link](s,100); for(i=0;i<strlen(s);i++) if(strchr(v,s[i])) { strcpy(aux,s+i); strcpy(s+i+1,aux); s[i+1]='*'; } cout<<s; } Varianta 80 Scriei programul C/C++ care citete de la tastatur un cuvnt cu cel puin una i cel mult 20 de litere ale alfabetului englez, construiete i afieaz pe ecran cuvntul obinut prin interschimbarea primei consoane cu ultima vocal din cuvnt. n cazul n care cuvntul este format numai din vocale sau numai din consoane, programul afieaz pe ecran mesajul IMPOSIBIL. Se consider vocale literele a, e, i, o, u, A, E, I, O, U. Exemplu: dac se citete cuvntul Marmorat se va obine i afia cuvntul aarmorMt #include<iostream.h> #include<string.h> void main() { char s[20], v[]="aeiouAEIOU"; int i,j; cin>>s; i=0; while(strchr(v,s[i])!=0 && i<strlen(s)) i++; j=strlen(s)-1; while(strchr(v,s[j])==0 && j>=0) j--; if(i>=strlen(s) || j==-1) cout<<"imposibil"; else { char aux=s[i]; s[i]=s[j]; s[j]=aux; cout<<s; } }

1. Sa se afiseze unul sub altul, toate prefixele proprii ale unui cuvant citit de la tastatura (prefix L subsirurile formate din primele 1, 2, 3,..,L-1) #include<iostream> #Include<string> #include<cunio> #include<stdio> Using namespace std; Int main () { char s[20], prefixe[20]; Int L, I; Clrscr() Gets(s); L=strlen(s)

For(i=1;i<=L-1;i++) { Strncpy(prefix,s,i); Prefix[i]=NULL Puts(prefix) } Getch() } 2. Sa se afiseze unul sub altul toate sufixele proprii ale unui cuvant citit de la tastatura. #include<iostream> #include<string> #include<stdio> Void main() {FILE*f,*g; Char v[20][30]; Int I, j, n; Int sol=0; F=[Link] (D:\\[Link], r); G=[Link](D:\\[Link], w); Fscan f(f, %d/n, &n); For(i=0; i<=n; i++) Fscan f(f, %s/n, v*i+); For (i=0; i<=n-2; i++) For (j=i+1; i<=n-1; j++) If (strstr(v[i], v[j])! =NULL||strstr(v[j], v[i])!=NULL) { Fprint f(g, %s\n, v*i+, v*j+); Sol=1;} Fclose(f); Fclose(g); If (sol) cout<<\n S-au scris perechile in fisierul de [Link]; Else cout<<\n NU exista solutie!; 3. Se citesc cuvintele (sortate alfabetic) char cuvinte[10][25], man[25]; int i,n, gasit; cout<<"n="; cin>>n; for(i=0;i<n;i++) { cout<<"cuvant"; cin>>cuvinte[i];} do {gasit=o; for(i=0;i<n-1;i++) if(strcmp(cuvinte[i], cuvinte[i+1]>0) {strcpy(cuvinte[i], cuvinte[I+1]); strcpy(cuvinte[I+1], man); gasit=1;} }

while(gasit) for(i=0;i<n;i++) cout<<cuvinte[i]<<endl; } 4. Stergerea tuturor aparitiilor unui subsir din cadrul unui sir. Imediat ce am identificat adresa de inceput a subsirului, restul sirului (fara subsir) este copiat pe pozitia de inceput a subsirului.

char sir[1000], subsir[25], *p; int lung_subsir; cout<<"introduceti textul"; [Link](sir,1000); [Link](); cout<<"introduceti subsirul"; [Link](subsir,25); lung_subsir=strlen(subsir); p=strstr(sir,subsir); while(p) {strcpy(p,p+lung_subsir); p=strstr(p,subsir); } cout<<sir; } 5. Se citeste un sir de caractere care nu contine caractere albe. Sa se verifice daca sirul este alcatuit din caractere numerice.

6. Se citeste un sir de caractere care nu contine caractere albe. Sa se verifice daca sirul este alcatuit din caractere numerice.

S-ar putea să vă placă și