Sunteți pe pagina 1din 2

SIR MIJLOCIU

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

using namespace std;

char voc[]={'a','e','i','o','u'};
char s[100], q[300];

void mijlociu(char s1[50], char s2[100])


{
int i,j=0;
int n=strlen(s1);
for(i=0,j=0;i<n-1;i++)
{
s2[j++]=s1[i];
/* daca pe 2 pozitii consecutive se afla vocale atunci in sirul s2
se va introduce si caracterul corespunzator dintre aceste vocale*/
if (strchr(voc,s1[i]))
if (strchr(voc,s1[i+1]))
{int c=min(s1[i],s1[i+1])+abs(s1[i]-
s1[i+1])/2; s2[j++]=c;}

}
s2[j++]=s1[n-1];
s2[j]='\0';}

int main()
{
int nr=0;
cin.get(s,100);
char *p;
char s1[100];
/*se extrage fiecare cuvant si se determina prin apelul functiei
mijlociu, sirul mijlociu asociat acestuia. In variabila q se retin
sirurile mijlocii asociate cuvintelor gasite */
p=strtok(s," ");
while (p!=NULL)
{
mijlociu(p,s1);
daca sirul a mai fost asociat altui cuvant atunci se
contorizeaza perechile
if (strstr(q,s1))nr+
+; else
{strcat(q," ");
strcat(q,s1);
}
p=strtok(NULL," ");
}
cout<<nr;
return 0;
}
Rezolvare
#include <fstream>
#include <iostream>
using namespace std;
ifstream f("titu.in");
int na,nb,ok, a[1001], b[1001];
int main()
{
int i,j;
f>>na>>nb; //sirul descrescator se inverseaza la citire for(i=na-
1;i>=0;i--)f>>a[i];
//se elimina valorile care se repeta
i=0;
while (i<na-1)
{
if (a[i]==a[i+1])
{for(j=i;j<na;++j)a[j]=a[j+1]; na--;i--;
}
i++;}
//citirea sirului crescator
for(i=0;i<nb;++i)f>>b[i];
//se elimina valorile care se repeta
i=0;
while (i<nb-1)
{
if (b[i]==b[i+1])
{
for(j=i;j<nb;++j)b[j]=b[j+1]; nb--;i--;
}i++;}
//printr-un algoritm asemanator interclasarii se afiseaza
valorile cerute
// variabila ok marcheaza procesul de afisare
i=j=0;
while (i<na && j<nb)
{
if (a[i]<b[j])

{
if (a[i]%2){ok=1; cout<<a[i]<<" ";} i++;}
else
if (b[j]<a[i])
{
if (b[j]%2) {ok=1; cout<<b[j]<<" ";} j++;}
else i++,j++;}
for(;i<na;++i) if (a[i]%2){ok=1; cout<<a[i]<<" ";} for(;j<nb;++j)
if (b[j]%2){ok=1; cout<<b[j]<<" ";} if(ok==0)cout<<"Nu exista";
return 0;

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