Informatică, întrebare adresată de andreiavram37, 9 ani în urmă


Cerinţa

Se dă un vector cu n elemente numere naturale. Să se șteargă din vector toate elementele care sunt numere prime.
Date de intrare

Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spaţii, reprezentând elementele vectorul.
Date de ieşire

Programul afișează pe ecran, separate prin spații, elementele vectorului obținut prin ștergerea elementelor prime.
Restricţii şi precizări

0 < n ≤ 1000
elementele vectorului vor fi mai mici decât 230


Zlatan: Vei avea nevoie de o funcție care verifică dacă un număr e prim. Parcurgi vectorul de la sfârşit, iar dacă numărul de pe poziția curentă este prim, muți toate elementele de după el pe o poziție anterioară.

Răspunsuri la întrebare

Răspuns de Utilizator anonim
3
#include <iostream>
#include <cstdio>
using namespace std;
int n,a[1005];
int main (){
cin >>n;
for (int i=1;i<=n;++1)
cin >>a[i];
for (int p=n;p>n=1;p--)
if(a [p] % 2==0){
for (int i=p;i<n;++i)
a [i]=a[i+1];
n--;
}
for (int i=1;i<=n;++i)
cout <<a [i] << " " ;
return 0;
}

andreiavram37: Nu trebuie scoase elementele compuse,ci trebuie scoase cele prime din acel vector
Răspuns de stassahul
14
#include <bits/stdc++.h>

using namespace std;

int n,a[1001];

int Prime(unsigned long a);

int main()
{

    cin >> n;

    for(int i=1;i<=n;i++)
        cin >> a[i];

    for(int i=1;i<=n;i++)
        if(!Prime(a[i]))
            cout << a[i] << " ";

    return 0;
}

int Prime(unsigned long a)
{
   unsigned long i;
   if (a == 2)
      return 1;
   if (a == 0 || a == 1 || a % 2 == 0)
      return 0;
   for(i = 3; i*i <= a && a % i; i += 2)
      ;
   return i*i > a;
}

stassahul: In principiu trebuie doar sa afisezi elementele neprime si nici nuti trebuie sa stergi elementele din vectorul principal
stassahul: De ceva mai scrii un vector si in loc de cout scrii vector[k++]=a[i], si dupa afisezi elementele vectorului.
Alte întrebări interesante