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 pentru vizita pe site-ul nostru dedicat Informatică. Sperăm că informațiile oferite v-au fost de ajutor. Nu ezitați să ne contactați pentru orice întrebare sau dacă aveți nevoie de asistență suplimentară. Vă așteptăm cu drag data viitoare și nu uitați să ne adăugați la favorite!