Pomocy w napisaniu programu C++

0

Witam. Od 10 dni próbuję zrobić zadanie z programowania ale niestety widać przerosło mnie. Czy znalazł by się ktoś tak pomocny i napisał mi ten program?

"Napisz program wypełniający tablicę dwuwymiarową 6x6 elementami typu całkowitego z zakresu od -25
do 43. Wylosowane wartości nie mogą się powtarzać i wylosowane liczby muszą być podzielne przez 3."

Z góry dziękuję.

1

Tego zadania nie da się wykonać.
od -25 do 43 istnieje 69 liczb z których tylko 1/3 podzielne przez 3 czyli 23 liczby, a masz do wylosowania 6x6=36

0

To powiedzmy zwiększymy zakres od -25 do 112 a tablica na dal bedzie 6x6

0

to z czym masz problem?

void Rand(int tab[],size_t count, int vmin,int vmax)
{
   int range=(vmax-vmin+1);
   int *tmp=new int[range];
   for(size_t i=0;i<range;++i) tmp[i]=vmin+i;
   for(size_t p=0,i=0;i<count;tab[i]=tmp[p],tmp[p]=tmp[i++]) p=i+rand()%(range-i);
   delete[] tmp;
}
0

To program który dotychczas napisałem. Nie ma w nim podzielności i powtarzania się. W którym miejscu powinienem zastosować twój kod?

#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;

int main() {
    srand(time(0));
    int tab1[6][6]={};
    ////////////////// Wyświetlanie zawartości tablicy /////////////////////////////////////

    for(int i=0;i<6;i++)
    {   cout<<endl;
        for(int j=0;j<6;j++)
        cout<<tab1[i][j]<<"\t";
    }
    //////////////////////////////////////////////////////////////////////////////////////////
    //////////////// Wypełmienie tablicy liczbami losowymi ////////////////////////////////
    
    for(int i=0;i<6;i++)
    {   
        for(int j=0;j<6;j++)
        tab1[i][j]=(rand()%68)-25;
    }
    ////////////////////////////////////////////////////////////////////////////////////////
    ////////////////// Wyświetlanie zawartości tablicy /////////////////////////////////////
    cout<<endl<<"Tablica po wypelnieniu"<<endl;
    for(int i=0;i<6;i++)
    {   cout<<endl;
        for(int j=0;j<6;j++)
        cout<<tab1[i][j]<<"\t";
    }
    //////////////////////////////////////////////////////////////////////////////////////////
    
    
    
    
    return 0;
}
0

Zamiast:

for(int i=0;i<6;i++)
{   
     for(int j=0;j<6;j++)
     tab1[i][j]=(rand()%68)-25;
}

użyj coś w tym stylu

int losowanie[36];
int index = 0;
Rand(losowanie,36,-100,100); // użycie funkcji - musisz pilnować się z zakresem 
for(int i=0;i<6;i++)
{   
     for(int j=0;j<6;j++) tab1[i][j]=losowanie[index++];
}

Tylko to oczywiście nie rozwiązuje problemu z podzielnością przez 3 i jest rozwiązaniem podatnym na błędy związane z niepoprawnym zakresem.
IMHO najważniejsze dla Ciebie jest abyś rozumiał napisany kod. Przeczytaj sobie podstawy związane z C++, szczególnie jeżeli chodzi o tworzenie i wywoływanie funkcji.

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