Pomocy w napisaniu programu C++

Odpowiedz Nowy wątek
2019-12-05 21:58
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ę.

A nic dziwnego nie dałbyś rady nawet gdyby próbowałeś przez 10 milionów dni :D - _13th_Dragon 2019-12-05 22:11

Pozostało 580 znaków

2019-12-05 22:07
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


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
edytowany 1x, ostatnio: _13th_Dragon, 2019-12-05 22:10

Pozostało 580 znaków

2019-12-05 22:15
0

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

Pozostało 580 znaków

2019-12-05 22:52
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;
}

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
edytowany 2x, ostatnio: _13th_Dragon, 2019-12-05 23:18
Założyłem że z wektorami autor pytania nie zrozumie niczego ;P - _13th_Dragon 2019-12-06 13:06

Pozostało 580 znaków

2019-12-06 17:04
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;
}
edytowany 2x, ostatnio: Ktos, 2019-12-06 17:48
Zacznij używać funkcji. - _13th_Dragon 2019-12-06 20:06

Pozostało 580 znaków

2019-12-07 11:51
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.

zamiast 5 wierszy użyj 7? WTF? - _13th_Dragon 2019-12-07 21:54

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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