👤

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 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!


ID Learners: Alte intrebari