Răspuns :
Răspuns:
#include <iostream>
#include <math.h>
#include <fstream>
#include <string.h>
using namespace std;
int nrprime, nrcentru,a[10][10]={0};
char *transformare(int *p,int n)
{
char v[10],*p2;
for(unsigned int i=0; i<n; i++)
{v[i]= *p;
p++;
}
p2=v;
return p2;
}
int *centru (int i) //functia care returneaza arrayul format din numerele de //pe pozitiile centrale ale liniilor citite
{
int v[10]={0},x,p=-1, *p2;
for (unsigned int k=0; k<i; k++)
{
if (a[k][0]%2==1) //daca pe o linie este un numar impar de numere //inseamna ca pe pozitia centrala se gaseste un singur numar
{
x=a[k][0]/2+1;
v[++p]=a[k][x];
} else //altfel sunt 2 numere
{
v[p]=a[k][a[k][0]/2];
v[p+1]=a[k][a[k][0]/2+1];
p+=2;
}
nrcentru=p;
p2=v;
}
return p2;
}
int * prime (int*p,int n) //verifica daca numarul este prim
{
int prim[10],j=-1,*p2;
bool ok;
for (int i=0; i<n; i++)
{
ok=1;
unsigned int k=2;
if ((*(p+i))%k==0)
ok=0;
k=3;
while (k<=sqrt(*(p+i))&&ok)
{
if (*(p+i)%k==0)
{
ok=0; break;
}
k+=2;
}
if (ok)
prim[++j]=*(p+i);
}
nrprime=j;
p2=prim;
return p2;
}
int main()
{
int *p;
char *p2;
unsigned int i=0,j=1;
char c;
ifstream f("fisier.in");
while (!f.eof()) //cat timp mai poti citi din fisier
{
f.get(c); //citesti caracter cu caracter
if (isdigit(c)) //daca e cifra
a[i][j]=a[i][j]*10+c-'0'; else
if (c==' ') //daca e spatiu treci la urmatorul numar
j++; else
if (c=='\n')
{
a[i][0]=j; //pe prima pozitie de pe fiecare linie retinem cate //numere se gasesc pe acea linie
++i; j=1;
}
}
p=centru(i-1);
p=prime (p,nrcentru+1);
p2=transformare(p,nrprime+1);
{
for (unsigned int i=0; i<nrprime+1; i++)
{
cout<<*p2;
p2++;
}
}
return 0;
}
Explicație:
Vă mulțumim că ați ales să vizitați platforma noastră dedicată Informatică. Sperăm că informațiile disponibile v-au fost utile. Dacă aveți întrebări suplimentare sau aveți nevoie de sprijin, nu ezitați să ne contactați. Vă așteptăm cu drag și data viitoare! Nu uitați să adăugați site-ul nostru la favorite pentru acces rapid.