Sunteți pe pagina 1din 4

PROIECTAREA ALGORITMILOR

Laborator 1

Laborator 1
Aplicaţii – Programarea Calculatoarelor

A) Probleme rezolvate

1. Scrieti un program C/C++ care citeste din fisierul text PALINDROM.IN, cel mult 100 de
numere naturale aflate pe o singura linie, formate din cel mult 9 cifre fiecare, separate prin spatii
si dintre acestea le afiseazã pe ecran doar pe acelea care au proprietatea de a fi palindrom. Daca
nu se gãsesc numere palindrom, se va afisa pe ecran valoarea -1.
Un numãr are proprietatea de a fi palindrom daca citit de la dreapta la stânga sau de la stânga
la dreapta are aceeasi valoare.

De exemplu 1221 este palindrom, in timp ce 1210 nu este palindrom.


Exemplu:
Daca din fisierul PALINDROM.IN se citesc numerele: 7341, 8228, 660, 2, 80, 131, atunci pe
ecran se vor afisa: 828, 2, 131.

#include<iostream.h>
#include <fstream.h>

ifstream fin;
int palindrom(int n)
{
int copie=n,oglindit,c;
oglindit=0;
while(n!=0)
{
c=n%10;
oglindit=oglindit*10+c;
n=n/10;
}
return (copie==oglindit);
}
int main()
{
int n,x,p;
p=0;
fin.open("palindrom.in"); // Deschiderea fisierului
while(fin >> x) // Se citeste un numar din fisier
{
if(palindrom(x))
{
cout<<x;

1
PROIECTAREA ALGORITMILOR
Laborator 1
p=1;
}
if(p==0)
cout<<"-1";
}
fin.close(); // Inchidem fisierul si se elibereaza stream-ul
}

2. Scrieţi un program C/C++ care citeşte din fişierul text DATE.IN cel mult 100 de numere
naturale nenule aflate pe o singura linie, formate din cel mult 4 cifre fiecare, separate prin spatii
si scrie in fişierul DATE.OUT numerele, in ordinea inversa fata de cea in care au fost citite, pe o
singura linie separate prin spatii.
De exemplu daca din fişierul DATE.IN se citesc numerele 93 207 15 1982 3762, atunci
conţinutul fişierului DATE.OUT va fi 3762 1982 15 207 93.

#include<fstream.h>
int main()
{
int n,i,v[100];
fstream f("date.in",ios::in);
fstream g("date.out",ios::out);
f>>n;
for(i=1;i<=n;i++)
f>>v[i];
for(i=n;i>0;i--)
g<<v[i];
f.close();
g.close();
}

3. Scrieţi un program C/C++ care citeşte de pe prima linie a fişierului text CMMDC.TXT trei
numere naturale a, b, c formate din cel mult patru cifre fiecare, separate prin cate un spaţiu si
afişează pe ecran cel mai mare divizor comun al acestora.
De exemplu, daca din fişier se citesc numerele: 9 27 15, atunci se afişează 3.

#include<iostream.h>
#include<fstream.h>
int cmmdc (int x,int y)
{
while (x!=y)
if(x>y) x=x-y;
else y=y-x;
return x;
}
int main()
{
int a,b,c,d;
fstream("CMMDC.txt";ios::in);

2
PROIECTAREA ALGORITMILOR
Laborator 1
f>>a>>b>>c;
f.close;
d=cmmdc(a,b);
cout<<cmmdc(c,d);
}

4. Se considera fişierul text DATE.IN care conţine exact 19 numere distincte formate fiecare din
maxim 2 cifre. Sa se afişeze in fişierul text DATE.OUT numărul care lipseşte din fişierul
DATE.IN.

#include<fstream.h>
int main()
{
int v[100],n,i,j,p;
fstream f("date.in",ios::in);
fstream g("date.out",ios::out);
for(i=1;i<=19;i++)
f>>v[i];
f.close();
for(i=10;i<=99;i++)
{
p=1;
for(j=1;j<=19;j++)
if(i==v[j]) p=0;
if(p)
g<<i;
}
g.close();
}

5. Se citeşte de la tastatura un număr natural nenul n (n<1000). Scrieţi un program C/C++ care
construieşte fişierul text DIVIZORI.TXT care sa contina, pe prima linie, toţi divizorii lui n in
ordine strict descrescătoare. Divizorii vor fi separaţi prin spaţiu.
De exemplu, daca n=10, atunci fişierul DIVIZORI.TXT va conţine: 10, 5, 2, 1

#include<iostream.h>
#include<fstream.h>
int main()
{
int d,n;
cout<<"n=";cin>>n;
fstream g("divizori.txt",ios::out);
for(d=n;d>=1;d--)
if(n%d==0)
g<<d<<" ";
g.close();
}

3
PROIECTAREA ALGORITMILOR
Laborator 1

B) Probleme propuse spre rezolvare

1. Se citeste un tablou unidimensional cu n (1<=n<=100) componente numere naturale. Se cere


sa se calculeze si sa se afiseze suma elementelor din vector care sunt divizibile cu o valoare
naturala data a.

Exemplu: Pentru n=7, v = {5, 12, 4, 9,11, 24, 8} si a=2, obtinem suma = 12+4+24+8=48.

2. Fie n valori de tip întreg. Să se calculeze raportul dintre suma elementelor strict pozitive şi
produsul tuturor celor n valori.

Exemplu: Pentru n=5 şi numerele 9, -2, 7, 4, -3 se găseşte raportul 0.01322751.

3. Scrieţi un program care afişează în ordine inversă componentele unui tablou a format din 10
elemente (numere întregi).

Exemplu: Pentru tabloul a = {1,2,3,4,5,6,7,8,910}, se va afisa a={10,9,8,7,6,5,4,3,2,1}.

4. Se considera un numar natural n. Se cere sa se formeze un tablou unidimensional cu toti


divizorii numarului.

Exemplu: Pentru n = 24 se va construi tabloul x cu elementele {1, 2, 3, 4, 6, 8, 12, 24}.

5. Sa se scrie un program care sa afiseze produsul valorilor cu modulul mai mic decat primul
element dintr-un tablou unidimensional de numere intregi.

Exemplu: Pentru n = 5 si x = {4, -5, -2, 3, -7}se obtine produsul p = (-2)*3 = -6

6. Sa se scrie un program care sa afiseze produsul valorilor care au acelasi semn cu al doilea
element din vector.

Exemplu: Pentru n = 5 si x = {12, -3, 4, -6, -1} se obtine p = (-6) * (-1) = 6.

7. Să se insereze cifra 0 pe prima poziţie a unui vector dat, fără a utiliza un alt vector.

Exemplu:

Pentru n=4 numere: 5 3 7 8 se obtine 0 5 3 7 8.

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

  • Da Navigatie - 2
    Da Navigatie - 2
    Document185 pagini
    Da Navigatie - 2
    Cezar Pauna
    Încă nu există evaluări
  • Capitolul 1
    Capitolul 1
    Document13 pagini
    Capitolul 1
    Cezar Pauna
    Încă nu există evaluări
  • Capitolul 1
    Capitolul 1
    Document13 pagini
    Capitolul 1
    Cezar Pauna
    Încă nu există evaluări
  • Chimie
    Chimie
    Document11 pagini
    Chimie
    Cezar Pauna
    Încă nu există evaluări
  • Chimie
    Chimie
    Document11 pagini
    Chimie
    Cezar Pauna
    Încă nu există evaluări
  • Retele PDF
    Retele PDF
    Document171 pagini
    Retele PDF
    Cezar Pauna
    Încă nu există evaluări