Ajutor va rog cu acest exercitiu!
Fisierul valoare.in contine pe prima linie doua numere naturale nenule: n si c(5
Sa se scrie un program, in limbajul C++, care:
a) scrie pe ecran, in linie, separate printr-un spatiu, toate numerele de pe linia a doua a fisierului, care au ultima cifra(cifra unitatilor) egala cu c.
b) prin intermediul subprogramului rast care inverseaza(rastoarna) si returneaza un numar avand cel mult 8 cifre( ex:123 devine 4321), afiseaza rasturnatele tuturor numerelor impare de pe a doua linie a fisierului.
c) scrie in fisierul valoare.out, separate prin cate un spatiu toate numerele palidrom din sirul dat, care au exact 3 crifre. Un numar este palidom daca palidrom din sirul dat, care au exact 3 cifre. Un numar este palidrom daca de la stanga la dreapta sau de la stanga la dreapta are aceiasi valoare (ex. 187). Daca nu exista astfel de numere in sir, se va scrie in fisier mesajul "Nu exista numere palidrom".
Răspunsuri la întrebare
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("valoare.in");
ofstream g("valoare.out");
unsigned int v[1000], n, c, num, copie, i, exista;
unsigned int rast(unsigned int m)
{
unsigned int r=0;
while (m)
{
r=r*10+(m%10);
m=m/10;
}
return r;
}
bool palindrom(unsigned num)
{
if (num%10 == num/100) return 1;
else return 0;
}
int main()
{
f >> n >> c;
for (i=0; i<n; ++i)
{
f >> v[i];
}
// conditia a)
for (i=0; i<n; ++i)
if (v[i]%10==c) {cout << v[i] << " "; exista=1;}
if (!exista) cout << "nu exista cu ultima cifra " << c;
cout << "\n";
// conditia b)
cout << "rasturnatele imparelor: \n";
exista=0;
for (i=0; i<n; ++i)
if (v[i]%2==1)
{cout << rast(v[i]) << " "; exista=1;}
if (!exista) cout << "nu exista rasturnate...";
cout << "\n";
// conditia c)
exista=0;
for (i=0; i<n; ++i)
{
if (v[i]>100 && v[i]<1000)
{
if (palindrom(v[i]))
{
exista=1;
g << v[i] << " ";
}
}
}
if (!exista) g << "Nu exista numere palidrom";
}