Orar semigroup #2

Orar semigroup #2

9/19 - Structuri

1.Fie definitia urmatoare: struct fractie {int numitor,numarator;}; a) declarati variabilele f1,f2,f, de tipul definit mai sus; b) initializati variabila f cu suma fractiilor f1 si f2

#include<iostream>
using namespace std;
struct fractie
    {int numitor,numarator;};
int main()
{fractie f1,f2,f;
int a,b;
cin>>f1.numarator>>f1.numitor;
cin>>f2.numarator>>f2.numitor;
f.numitor=f1.numitor*f2.numitor;
f.numarator=f2.numitor*f1.numarator+f2.numarator*f1.numitor;
a=f.numarator;
b=f.numitor;
while(a!=b)
{if(a>b)a=a-b;
else b=b-a;}
f.numarator=f.numarator/a;
f.numitor=f.numitor/b;
cout<<f1.numarator<<"/"<<f1.numitor<<"+"<<f2.numarator<<"/"<<f2.numitor<<"="<<f.numarator<<"/"<<f.numitor;
}
2.Scrieti un program in care se citeste de la tastatura un cuvant. Inlocuiti fiecare vocala cu consoana care o urmeaza si fiecare consoana cu vocala care o precede.
#include<iostream>
using namespace std;
struct fractie
    {int numitor,numarator;};
int main()
{char a[100],j;
int i;
cin>>a;
for(i=0;i<strlen(a);i++)
 if(strchr("aeiou",a[i]))
  a[i]=a[i]+1;
 else for(j=a[i];j>='a';j--)
  if(strchr("aeiou",j))
   {a[i]=j;break;}
cout<<a;
}
3.Dintr-un fisier text se citesc un numar n si n+1 cuvinte. Afisati-le pe acelea care incep cu ultimul.
#include<iostream>
#include<fstream>
using namespace std;
ifstream f("date");
int main()
{int n,i,j,k;
char t[100][100];
f>>n;
for(i=0;i<=n;i++)
 f>>t[i];
for(i=0;i<n;i++)
 if(strstr(t[i],t[n])==t[i])
  cout<<t[i]<<endl;
}
4. Bork Bork Bork! (1-7)
#include<iostream>
#include<fstream>
using namespace std;
int main()
{char a[100],*p;
int n,i,j,k;
cin.get(a,100);
n=strlen(a);
p=strstr(a,"THE");
while(strstr(a,"THE"))
{a[strstr(a,"THE")-a]='Z';
a[strstr(a,"ZHE")-a+1]='E';}

while(strstr(a,"AN"))
    a[strstr(a,"AN")-a]='U';

while(strstr(a,"AU"))
    {a[strstr(a,"AU")-a]='O';
    a[strstr(a,"OU")-a]='O';}
  
for(i=0;i<n;i++)
    if(a[i]=='A' && a[i+1]!=' ')
        a[i]='E';
  
while(strstr(a,"OW"))
    a[strstr(a,"OW")-a+1]='O';

for(i=0;i<n;i++)
    if(a[i]=='O')
        a[i]='U';
  
strcat(a,"Bork Bork Bork!");
cout<<a;
}

duminică, 18 septembrie 2011 by DlMuresan
Categories: , , , , , , , , , , | 1 comment

Les H'Orar della ziua de Luni - Die Version 1.1

by DlMuresan
Categories: | Leave a comment

9/15 - Recapitulare

1. Subprogramul sub are trei parametri:
    n, prin care primeste un număr natural (0<n<100);
    v, prin care primeste un tablou unidimensional care memorează un sir de n numere naturale, fiecare având cel putin două cifre si cel mult patru cifre;
    s, un număr natural (0<s<18).
Subprogramul determină si afisează pe ecran, separate prin câte un spatiu, în ordine descrescătoare, toate numerele din sir care au suma dintre cifra unitătilor si cifra zecilor strict mai mare decât s. Dacă sirul nu contine niciun astfel de număr, subprogramul afisează pe ecran mesajul NU EXISTA. În urma apelului, tabloul transmis subprogramului ca parametru nu se modifică.
Scrieti în limbajul C/C++ definitia completă a subprogramului sub.
Exemplu: pentru n=10, v=(351,149,3794,502,785,258,258,1512,489,693),
s=12 în urma apelului, subprogramul afisează pe ecran, în această ordine, valorile:
3794 785 489 258 258 149.
#include<iostream>
using namespace std;
void ordonare(int a[], int j)
{int i,k;
for(i=0;i<j;i++)
    for(k=i+1;k<j;k++)
        if(a[i]<a[k])
            swap(a[i],a[i+1]);
}

void sub(int n, int v[], int s)
{int a[100],i,j=0,m;
for(i=0;i<n;i++)
    if(v[i]%10+v[i]/10%10>s)
        {a[j]=v[i];j++;}
if(j==0)
    {cout<<"NU EXISTA";return;}
ordonare(a,j);
for(i=0;i<j;i++)
    cout<<a[i]<<" ";
}

int main()
{int n,v[100],s,i;
cin>>n>>s;
for(i=0;i<n;i++)
    cin>>v[i];
sub(n,v,s);
}
2. Se citesc cele n elemente ale unui tablou de numere intregi. Sa se scrie un subprogram care afiseaza mesajul DA dacă elementele pare în şir sunt în ordine crescătoare, iar cele impare sunt în ordine descrescătoare şi mesajul NU în caz contrar.
Exemplu:  n=8    10 1133 12 331 42 1354 221 13 Se va afisa DA

#include<iostream>
using namespace std;
void ordonare(int a[], int j)
{int i,k;
for(i=0;i<j;i++)
    for(k=i+1;k<j;k++)
        if(a[i]<a[k])
            swap(a[i],a[i+1]);
}

void afisare(int a[],int n)
{int i;
for(i=0;i<n;i++)
    cout<<a[i]<<" ";}

void sub(int n, int v[], int s)
{int a[100],b[100],i,j=0,k=0,t,ok=1;
for(i=0;i<n;i++)
    if(v[i]%2==0)
        {a[j]=v[i];j++;}
    else {b[k]=v[i];k++;}

/*    cout<<endl;   
afisare(a,j);
    cout<<endl;
afisare(b,k);
    cout<<endl;
*/
   
for(i=0;i<j-1;i++)
    if(a[i]>a[i+1])
        {ok=0;break;}

if(ok==0)
    {cout<<"NU";return;}

ok=1;
for(i=0;i<k-1;i++)
    if(b[i]<b[i+1])
        ok=0;

if(ok==0)
    cout<<"NU";
else cout<<"DA";
}

int main()
{int n,v[100],s,i;
cin>>n;
for(i=0;i<n;i++)
    cin>>v[i];
sub(n,v,12);
}
3. Se consideră subprogramul pr, care primeşte prin intermediul parametrului a un număr natural nenul cu cel mult 9 cifre şi returnează 1 dacă numărul este prim şi 0 în caz contrar.
a) Scrieţi subprogramul pr.
b) Considerăm un număr natural nenul n>99 cu cel mult 9 cifre. Să se realizeze un program C/C++ care citeşte numărul n şi care, folosind apeluri utile ale subprogramul pr, afişează pe ecran, separate prin câte un spaţiu, doar valorile prime din şirul numerelor obţinute din n, prin eliminarea succesivă a ultimei cifre, apoi a ultimelor două cifre, apoi a ultimelor trei cifre etc., până se obţine un număr de două cifre, ca în exemplu.
Exemplu: pentru n=193124 se obţine şirul de valori 19312,1931, 193, 19. din care se
vor afişa pe ecran doar valorile 1931 193 19.

int pr(int a)
{int d,ok=1,i;
for(d=2;d<=a/2;d++)
    if(a%d==0)
        ok=0;
    return ok;}

int main()
{int n,p,k;
cin>>n;
p=n/10;
while(p>9)
{if(pr(p)==1)
    cout<<p<<" ";
p=p/10;}
}
4. Considerăm definite subprogramele:
- pr, care primeşte prin intermediul parametrului x un număr natural cu cel mult 4 cifre şi
returnează 1 dacă numărul este prim şi 0 în caz contrar;
- sdiv care primeşte prin intermediul parametrului y un număr natural cu cel mult 4 cifre
şi returnează suma tuturor divizorilor numărului y.
a) Scrieţi numai antetul subprogramelor pr şi sdiv.
b) Scrieţi un program C/C++ care citeşte de la tastatură un număr natural n (n<1000) şi
care afişează pe ecran toate numerele mai mici decât n cu proprietatea că suma divizorilor
lor este număr prim. Se vor utiliza apeluri utile ale subprogramelor pr şi sdiv.
Exemplu: dacă n=20, atunci programul va afişa: 2 4 9 16

int pr(int a)
{int d,ok=1,i;
for(d=2;d<=a/2;d++)
    if(a%d==0)
        ok=0;
    return ok;}

int sdiv(int y)
{int d,s=0;
for(d=1;d<=y;d++)
    if(y%d==0)
        s+=d;
    return s;}

int main()
{int n,p,k;
cin>>n;
for(p=2;p<n;p++)
    if(pr(sdiv(p))==1)
        cout<<p<<" ";
}

5. Folosind subprograme utile sa se rezolve urmatoarele probleme:
a. Să se determine diferenta minima intre un numar dat n si un numar prim.
b. Sa se determine media a k numere dintr-un sir dat, incepand cu pozitia poz.
c. Sa se permute circular la stanga cu o pozitie numerele dintr-un vector.
d. Sa se determine valoarea minima si cea maxima din sir si media aritmetica a celorlalte elemente.
e. Sa se elimine elementele x[i], x[i+1], …,  x[j] dintr-un sir citit.
int pr(int a)
{int d,ok=1,i;
for(d=2;d<=a/2;d++)
    if(a%d==0)
        ok=0;
    return ok;}
int main()
{int n,p,k,a,b;
cin>>n;
a=n-1;b=n+1;
while(pr(a)==0 && pr(b)==0)
    {a--;b++;}
if(pr(a)==1)
    cout<<"Diferenta minima: "<<n-a;
else cout<<"Diferenta minima: "<<abs(n-b);
}
float medie(int a[],float k, int poz)
{int i,s=0;
for(i=poz;i<poz+k;i++)
    s+=a[i];
return float(s/k);
}

int main()
{int n,a[100],poz,i;
float k;
cin>>n;
for(i=0;i<n;i++)
    cin>>a[i];
cout<<"poz/k?"<<endl;
cin>>poz>>k;
cout<<medie(a,k,poz);
}
int maxim(int a[], int n)
{int max=0,i;
for(i=0;i<n;i++)
    if(a[i]>max)
        max=a[i];
    return max;
}

int minim(int a[], int n)
{int min=a[0],i;
for(i=0;i<n;i++)
    if(a[i]<min)
        min=a[i];
    return min;
}
   
int main()
{int n,a[100],poz,i;
float k=0,s=0;
cin>>n;
for(i=0;i<n;i++)
    cin>>a[i];
for(i=0;i<n;i++)
    if(a[i]!=minim(a,n) && a[i]!=maxim(a,n))
        {s+=a[i];k++;}
cout<<float(s/k);
}

miercuri, 14 septembrie 2011 by DlMuresan
Categories: , , , , , , | Leave a comment

9/11 - O venit momentu' !

Info X A vs. Info XI A
infoXa.blogspot.com vs. infoXIa.blogspot.com

Nu ştiu de la ce ar putea veni fiecare, da o venit momentu' să votaţi. Astăzi, 9/11. În dreapta

duminică, 11 septembrie 2011 by DlMuresan
Categories: | Leave a comment