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

Se citeste un sir de n numere naturale.Sa se determine numarul de aparitii al celui mai mare numar prim din sir. eu am facut asa:

#include
using namespace std;
unsigned int n,k,max1=0,i,nr_citite,nr_aparitii,prim,continua;
int main()
{
cout<<"dati n=";
cin>>n;
nr_citite=0;
nr_aparitii=0;
continua=1;
while(continua==1)
{
cin>>k;
nr_citite=nr_citite+1;
prim=1;
for(i=2;i<=k-1;i++)
{
if(k%i==0)
prim=0;
}
if((k>=max1)&&(prim==1))
{
max1=k;
nr_aparitii++
}

if(nr_citite==n)
continua=0;
}
cout<<"numarul de aparitii al celui mai mare numar prim din sir este = "< return 0;
}


DlakWanted: edit:cout<<"..."<<nr_aparitii

Răspunsuri la întrebare

Răspuns de Utilizator anonim
1
Mai gandeste-te la numarul de aparitii al elementului maxim din sir



antonii: Ai gresit la if k==max1.... Daca k==max1 de ce ii mai dai max1=k?
Utilizator anonim: el a schimbat >= cu == din ce i-am scris eu:))
antonii: Trebuie sa faci asa: daca k>max1 si k prim atunci max1=k;aparitii=0; --->primul if ;apoi inca un if(k==max1 and prim) aparitii++;
Utilizator anonim: In cazul in care maximul din sir se schimba numarul de aparitii va deveni 1
Utilizator anonim: apoi daca k==max creste numarul de aparitii
antonii: Deci ultima parte va veni ceva de genu' : if(k>max1 && prim) {max1=k;aparitii=0;}  ...if(k==max1 && prim) aparitii++;
Utilizator anonim: de ce aparitii =0?
Utilizator anonim: pui else
Utilizator anonim: ma rog, e ok si asa
AntiEaglesDavids: incearca si cu eratosthenes, e mai simplu
Răspuns de antonii
0
Asa arata mai bine:
#include <iostream>
#include <math.h>
using namespace std;

bool CheckPrime(int Nr);

  int main(){
        int n=0,BigPrime=0,Aparitii=0;
       do{
 
           cin>>n;
            if(CheckPrime(n) && n>BigPrime) {
                 BigPrime=n;
 
                Aparitii=0;
            }
 
           if(n==BigPrime) Aparitii++;
 
     }while(n!=0);

      system("pause");
      return 0;
}

bool CheckPrime(int Nr){
        bool IsPrime=true;
        if(Nr!=2){
                 if(Nr%2!=0){
                       for(int x=3;x<=sqrt((double)Nr);x+=2){
                                 if(Nr%x==0) IsPrime=false;
                       }
                       return IsPrime;
                 }else{
                        return false;
                  }
         }else{
             return true;
        }
}

DlakWanted: nu am invatat aceste structuri.
antonii: Ce structura? Sunt in a 9-a
DlakWanted: bool,system"pause"
antonii: Poti pune functia CheckPrime(int Nr) inainte de int main ca sa nu mai pui la inceput "bool CheckPrime(int Nr);" sau chiar direct in cod..
antonii: aaa...poti sa le stergi..lucrez in VC++ care are nevoie de ele
antonii: system pause doar opreste consola de la a se inchide..asa face Visual studio-ul
antonii: a mers?
antonii: sincer sa fiu nu l-am incercat
Alte întrebări interesante