Algorytm: czy przynajmniej 3/4 elementów ciągu jest liczbami parzystymi większymi od 2

0

Mam mały problem z programem, o to treść:

"Zaproponować algorytm sprawdzający, czy przynajmniej 3/4 elementów ciągu jest liczbami parzystymi większymi od 2. Napisać i uruchomić program

realizujący ten algorytm oraz dodatkowo obliczający na życzenie użytkownika iloczyn zadanej liczby elementów ciągu począwszy od pierwszego

elementu. Ciąg liczb powinien być zapisany w tablicy. Program powinien umożliwiać użytkownikowi wybranie jednego z trzech sposobów generowania

ciągu liczb:
a) automatyczne wygenerowanie ciągu o szukanych właściwościach (określonych w pierwszym zdaniu ninejszego zadania)
b) wygenerowanie ciągu liczb pseudolosowych z zadanego przez użytkownika zakresu
c) podanie elementów ciągu z klawiatury
Należy pogrupować części programu w funkcje.

Myślałem, aby w funkcji automat stożyć if i else, tzw. if (i tutaj napisać, że 3/4 elementów ciagu jest liczbami parzystymi większymi od 2), a w

else (że nie spełnia warunku). Wydaje się banalne, ale nie wiem jak to napisać :/

 
 include <iostream>
#include <conio.h>
#include <cstdlib> // psudolosowe 
 
using namespace std;
 
 
void automat(int t[],int n);
void losuj(int t[],int n,int c, int b);
void klawiatura(int t[],int n);
void wyswietl(int t[],int n);
int iloczyn(int t[], int n);
 
char litera;
const int N=1000;
 
int main(){
 
        int n;
        int a[N];
   
do{
        
        cout << " \t\tWybierz jedno z trzech sposobow generowania cigow" <<endl;
        cout << " -------------------------------------------------------------------------------" << endl;
        cout << " 1. Automatyczne wygenerowanie ciagu o szukanych wlasciwosciach " <<endl;
        cout << " 2. Wygenerowanie ciagu liczb pseudolosowych z zakresu \n    podanego przez uzytkownika "<<endl;
        cout << " 3. Podanie elementow ciagu z klawiatury " <<endl;
    cout << "\n";
        cout << " -------------------------------------------------------------------------------" << endl;
 
    int wybor;                  
        cin >>wybor; 
        do{
        cout<<"podaj n(n<=N): ";
        cin>>n;
              }while(n>N);
    
    srand(time(0));      
 
 
           switch(wybor)
           { //===================================================
          case 1:
            automat(a,n);
            break;
         // ==================================================          
          case 2:
                 int b,c;
    
            cout<<"Podaj pierwsza wartosc zakresu: "<<endl;
            cin>>c;
            cout<<"podaj druga wartosc zakresu: "<<endl;
            cin>>b; 
                      
            losuj(a,n,c,b); 
            break;
         // ==================================================
          case 3:
            
              klawiatura(a,n);
                
            break;           
    
            }
            
 
     wyswietl(a,n); 
cout<<"iloczyn elementow ciagu to: "<<iloczyn(a,n)<<endl;
 
cout <<"\n\n";
cout <<"Aby przejsc do menu wcisnij dowolny klawisz."<< endl;
      cout <<"aby wyjsc wcisnij q"<< endl;
      cin>>litera;
 
 // getch()
 
 
  system ("cls");
 
}while((litera !='Q') && (litera !='q'));
  
        return 0;     
}   //main
 
//=========================================================
void automat(int t[],int n){
    // for(int i=0;i<n;i++) 
    //      t[i]=4;
    //        }  {
int a, b;
        cout<<"Podaj zakres losowanych liczb: "<<endl;
        cin>>a>>b;
 
        for(int i=0;i<n;i++)
        {t[i]=(rand()%b)+a;}}
    
    
//=========================================================
void losuj(int t[],int n, int c, int b){
 for(int i=0;i<n;i++)
     t[i]=c+rand()%(b-c+1);
            }
 
//=========================================================
void wyswietl(int t[],int n){
cout<<endl<<"Wyswietlenie N elementow tablicy:"<<endl;
    
     for(int i=0;i<n;i++)
     cout<<"a"<<i<<": "<<t[i]<<endl; 
            }
 
//=========================================================
void klawiatura(int t[],int n){
    for(int i=0;i<n;i++)
        {
          cout<<"a"<<i<<": ";
          cin>> t[i];
              }
           }
    
//==========================================================
int iloczyn(int t[], int n){
        int iloczyn=t[0];
        for(int i=1;i<n;i++)
        {       iloczyn*=t[i] ;}
        
        return iloczyn;}
0

Skoro co najmniej 3/4 liczb w ciągu ma być parzyste i większe od 2, to znaczy że starczy policzyć te elementy i sprawdzić czy ich liczba jest większa lub równa długość ciągu * 0.75 (ja będzie równa to wtedy mamy dokładnie 3/4 takich elementów). swoją droga można by to też wykorzystać przy generowaniu ciągu (żeby na pewno był zgodny z założeniami), tyle że wtedy jak z mnożenia wyjdzie nam ułamek, trzeba dodać jeden do części całkowitej z niego (starczy wynik randa pomnożyć razy 2, chyba że będzie jeden wtedy losujemy jeszcze raz).

0

myslalem nad czyms takim

 
void automat(int t[],int n){
     int liczba;
     float f;
t[0]=1+rand()%10;
t[1]=1+rand()%100;
for(int i=2;i<n;i++) 
    { t[i]=t[i-1]+t[i-2]+rand()%11;
     
 
     
     if ((liczba % 2 == 0) && (liczba > 2))
       {n=n+1;} 
       f=n/N;  // u mnie wielkość tablicy to int N=1000; a n podaję na początku i jest to liczba elementów tablicy 
       if(f >3/4)
       {cout <<"ok"<<endl;}
       else if (f<3/4)
       {cout <<"zle"<<endl;}
       }}

0

Co do automatycznego generowania takiego ciągu:
-wylosuj długosc ciągu N
-wylosuj liczbe X z przedziału (0.75; 1>
-wylosuj [XN] liczb spełniających warunki
-wylosuj N-[X
N] liczb nie spełniających warunków
-umiesc te liczby losowo w tablicy, przy czym ta opcja ma dwa warianty:
---od razu po wylosowaniu liczby losujesz indeks tablicy i tam to wkładasz (losowanie bez powrotorzen, proponuje użyc liste indeksów, ktora jeszcze nie zostały wylosowane i losowac z tego)
---na poczatku umieszczasz liczby po kolei, po skonczeniu wszystkiego je mieszasz (np: dla każdego i-tego elementu tablicy losujesz inny i zamieniasz je miejscami)

0

if(4*n>3*N)
to sprawdzenie masz robić po pętle.

1 użytkowników online, w tym zalogowanych: 0, gości: 1