👤

Se da un fisier text, care contine mai multe linii. Pe fiecare linie sunt numere de la 0 la 255.In C++;




Cerinte:


a.Fa o functie care sa returneze un array. Array-ul va fi format din numerele de pe pozitia centrala de pe fiecare linie;

b.Fa o functie care returneaza un array cu numerele prime, din array-ul descoperit la punctul ;

c.Fa o functie care transforma numerele prime descoperite la punctul in caractere ascii si returneaza un sir de caractere (cuvant) format din ele


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.


Wix Learning: Alte intrebari