sâmbătă, 15 martie 2014

Probleme rezolvate



PROBLEMA 1

Se citeşte de la tastatura o propoziţie terminata cu ENTER. Cuvintele ce formează propoziţia sunt despărţite printr-un singur spaţiu.    Sa se afişeze fiecare cuvânt din propoziţie pe cate un rând.

char s1[150], s2[150];

void main (void)
{
     gets (s1);
     int i=0, j;
     while (s1[i])
       {
         j=0;
         while ((s1[i]!=' ')&&(s1[i]!='\0')) s2[j++]=s1[i++];
         s2[j]='\0';
         i++;
         cout << endl<< s2;
  }
 }



PROBLEMA 2
Se citeşte de la tastatura o propoziţie terminata cu PUNCT    Cuvintele ce formează propoziţia sunt despărţite prin unul sau mai multe spatii    Sa se afişeze fiecare cuvânt din propoziţie pe cate un rând.
char s1[150], s2[150];
void main (void)
{
     int i, j;
     for (i=0; (s1[i]=getche())!='.'; i++);

     s1[i]='\0';     i=0;
     while (s1[i])
      {
          j=0;
          while ((s1[i]!=' ') && (s1[i]!='\0'))
                s2[j++]=s1[i++];
          s2[j]='\0';
          while (s1[i] && s1[i]==' ') i++;
          cout << endl<< s2;
  }
}
PROBLEMA 3
Se citeşte de la tastatura o propoziţie terminata cu PUNCT    Cuvintele ce formează propoziţia sunt despărţite prin unul sau mai multe spatii.  Sa se calculeze de cate ori apare fiecare litera din propoziţie in propoziţie.

char s1[150], s2[150], c;
int nr;
void main (void)
{
clrscr();

     int i=0, j;
     for (; (s1[i]=getche())!='.'; i++);

     for (c='a'; c<='z'; c++)
     {
          i=0; nr=0;
          while (s1[i])
                {
                     if (s1[i]==c) nr++;
                     i++;
                }
           if (nr==1) cout <<endl<<"Litera "<<c<<" apare o singura data";
           if (nr>1) cout <<endl<<"Litera "<<c<<" apare de "<<nr<< " ori";
     }
for (c='A'; c<='Z'; c++)
     {
          i=0; nr=0;
          while (s1[i])
                {
                     if (s1[i]==c) nr++;
                     i++;
                }
           if (nr==1) cout <<endl<<"Litera "<<c<<" apare o singura data";
           if (nr>1) cout <<endl<<"Litera "<<c<<" apare de "<<nr<< " ori";
     }
getch();
}

PROBLEMA 4
Se citeste o propozitie terminata cu punct.  Cuvintele sunt despartite printr-un singur spatiu.
Sa se afiseze fiecare cuvant din propozitie pe cate un rand si in dreapta sa inversul sau.

char s[200], p[30], q[30];
int i,j,k;

void main (void)
{
clrscr();

     for (i=0; (s[i]=getche())!='.';i++);
     s[i]=’\0’;

     for (i=0,cout<<endl ; s[i] ; i++,cout<<q<<endl)
     {
          for (j=0; s[i] && s[i]!=32; p[j++]=s[i++]);
          p[j]=0;

          for(k=0,cout<<p<<" "; j ; q[k++]=p[--j]);
          q[k]=0;
     }

getch();
}

PROBLEMA 5
Se citeşte o propoziţie terminată cu punct.  Cuvintele sunt despărţite printr-un singur spaţiu.  Să se înlocuiască fiecare litera mică din şir cu litera mare corespunzătoare si fiecare litera mare cu litera mică corespunzătoare.

char s[200];
int i;

void main (void)
{
clrscr();
     for (i=0; (s[i]=getche())!='.';i++);
     s[i]=0;
     cout <<endl; puts(s);
     for (i=0;s[i];i++)
          if (('a'<=s[i]) && (s[i]<='z'))
                s[i]-=32;
          else
                if (('A'<=s[i]) && (s[i]<='Z'))
                     s[i]+=32;

     cout <<endl; puts(s);
getch();
}

PROBLEMA 6

Se citeşte un cuvânt. Să se decidă dacă este palindrom.

char s[200],ok=1;
int i,j;

void main (void)
{
clrscr();
     cin >> s;
     for (i=0; s[i]; i++);
     for (j=0; j<=(i-1)/2+(i-1)%2 && ok; j++)
          ok=(s[j]==s[i-1-j]);
     ok ? cout<<"DA": cout<<"NU";
getch();
}


PROBLEMA 7

Se citeşte o propoziţie terminată cu punct.  Cuvintele sunt despărţite printr-un singur spaţiu. Să se afiseze cuvântul de lungime maximă.
char s[200];
int i,j,k=0, max=0, poz_max=0;
void main (void)
{
clrscr();
            for (i=0; (s[i]=getche())!='.';i++);
     s[i]=0;

     for (i=0; s[i] ; i++)
     {
          for (j=0, k=i; s[i] && s[i]!=32; i++,j++);
          if (j>max)
                {
                     max=j;
                     poz_max=k;
                }
     }
     for (cout<<endl,i=poz_max; s[i]&&s[i]!=' '; cout<<s[i++]);
getch();
}



PROBLEMA 8

 Se citesc 2 cuvinte a si b. Sa se determine daca sunt anagrame.


#include <iostream>
#include <stdlib.h>

using namespace std;

int main()
{
  char a[30],b[30];
  cin>>a>>b;
  if(strlen(a)!=strlen(b)) cout<<"nu";
  else
  {
      int ok=1;
      while(strcmp(a,b)!=0 && ok)
      {
          if(strchr(b,a[0])!=0)
          {
              strcpy(strchr(b,a[0]), strchr(b,a[0])+1);
              strcpy(a,a+1);
          }    
          else ok=0;
      }           
     if(ok) cout<<"da";
     else cout<<"nu";
  }    
  system("PAUSE"); 
  return 0;
}
 
 
PROBLEMA 9 

Spunem ca doua cuvinte "rimeaza" daca sufixele incepand de la ultima vocala sunt identice. Sa se scrie un program care citeste doua cuvinte a si b si determina daca ele "rimeaza".
Ex: Diana si Sana "rimeaza"



#include<iostream.h>
#include<string.h>
int main()
{
   char a[100], b[100], s1[100], s2[100],v[]="aeiou";
   cin>>a>>b;
   int i;
   for(i=0;i<strlen(a);i++)
    if(strchr(v,a[i]))
    strcpy(s1,a+i);
   for(i=0;i<strlen(b);i++)
    if(strchr(v,b[i]))
    strcpy(s2,b+i);
   if(strcmp(s1,s2)==0)
    cout<<"Rimeaza.";
   else
    cout<<"Nu rimeaza.";
  return 0;
}
 
PROBLEMA 10 

Se citeste un cuvant a cu cel mult 100 de litere. Sa se stearga toate 
perechile de cate 2 litere alaturate identice. Daca prin stergere se 
obtin alte perechie de litere identice sa se stearga si acestea.

Exemplu: din cuvantul abbapxsiisxh se obtine ph (prin eliminari succesive:aapxssxh, pxxh si apoi ph )
 
 
 
 
int main()
{
    char a[100];
    int i;
    cin >> a;
    for ( i = 0 ; i < strlen(a) - 1; i++ )
    {
        if ( a[i] == a[i+1] )
        {
             strcpy ( a + i , a + i + 2 );
             i--;
             i--;
        }
    }
    cout << a;
    system("pause");
    return 0;
} 
 
 
PROBLEMA 11 

Din fisierul sir.in se citeste un text. Afisati cate cuvinte incep si se termina cu vocala.

Ex: Ana are opt mere

se va afisa 2.
 
 #include<iostream>
#include<fstream>
using namespace std;

int main()
{
 char s[201], v[]="aeiouAEIOU";
 int k=0;
 ifstream fin("sir.in");
 while(fin>>s)
  if(strchr(v,s[0]) && strchr(v,s[strlen(s)-1])) k++;
 if(k) cout<<k;
 else cout<<"nu exista";
 return 0;
}
 
PROBLEMA 12 


 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"
 
 #include <iostream>
#include <cstring>
using namespace std;

int main()
{
    char c[21],x;
    cin>>c;
    x=c[0];
    for(int i=0;i<strlen(c);i++)
        if(x==c[i])
        {
            strcpy(c+i,c+i+1);
            i--;
        }
    cout<<c;
    return 0;
}
 
PROBLEMA 13 


Se citeste un numar natural n si apoi n cuvinte formate din cel mult 20 
de litere fiecare. Da se afiseze cel mai lung cuvant care se poate forma
 cu doua cuvinte dintre cele citite.

Exemplu:

6

arici

iepure

cal 

hipopotam

oaie

pastrav

Cel mai lung cuvant poate fi hipopotampastrav sau pastravhipopotam 
 
 #include <iostream>
#include <cstring>
using namespace std;

int main()
{
    char a[21],m1[21]="",m2[21]="";
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a;
        if(strlen(a)>strlen(m1))
        {
            strcpy(m2,m1);
            strcpy(m1,a);
        }
        else if(strlen(a)>strlen(m2)) strcpy(m2,a);
    }
    cout<<m1<<m2;
    return 0;
}
 
 
PROBLEMA 14 

 
Se citeste de la tastatura un text cu cel mult 100 de caractere (doar litere ale alfabetului englez si spatii). Construiti si apoi afisati pe ecran sirul de caractere obtinut din sirul initial prin inserarea dupa fiecare vocala a caracterului *. Se considera vocale literele a, e, i, o, u, A, E, I, O, U.
Daca textul citit nu contine vocale text se va afisa nemodificat.
Exemplu: dacã se citeste textul "Examenul de bacalaureat" se va obtine si afisa: "E*xa*me*nu*l de* ba*ca*la*u*re*a*t".
 


#include<iostream>
#include<cstring>
using namespace std;
int main()
{  char v[]="aeiouAEIOU", s[201], aux[201];
   int i;
   cin.get(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;
return 0;
}
 
PROBLEMA 15

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

 
 #include<iostream>
#include<cstring>
using namespace std;
int 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;
  }
return 0;
}
 
 
 

Niciun comentariu:

Trimiteți un comentariu