Witam wszystkich.
Zaimplementowałem w c++ rozwiązanie dla następującego problemu :
Dana jest 2-wymiarowa tablica z liczbami typu int,znajdz element dla ktorego suma otaczajacych go elementow bedzie najwieksza.
Program co prawda działa aczkolwiek myślę że coś dałoby się poprawić dlatego też bardzo proszę o jakieś konstruktywne uwagi.
Oto kod :
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int wypelnij(int ** tab,int rozmiar)
{
for(int j =0; j<rozmiar; j++)
{
for(int i =0; i<rozmiar; i++)
{
tab[j][i] = rand() % 10 + 1;
}
}
}
int wypisz(int ** tab,int rozmiar)
{
for(int j = 0; j<rozmiar; j++)
{
for(int i =0; i<rozmiar; i++)
{
cout<<tab[j][i]<<" ";
}
cout<<endl;
}
}
int main()
{
srand(time(NULL));
int N;
cout<<"Podaj wielkosc tablicy"<<endl;
cin>>N;
int **tablica = new int* [N];
for(int i = 0; i<N; i++)
{
tablica[i] = new int [N];
}
wypelnij(tablica,N);
wypisz(tablica,N);
int maks_suma,suma;
maks_suma = suma = 0;
int x,y;
for(int i =0; i<N; i++)
{
for(int j = 0; j<N; j++)
{
suma = 0;
if(i-1>=0)suma += tablica[i-1][j];
if(i+1<N)suma += tablica[i+1][j];
if(j+1<N)suma += tablica[i][j+1];
if(j-1>=0)suma += tablica[i][j-1];
if(i-1>=0 && j-1>=0)suma += tablica[i-1][j-1];
if(i+1<N && i+1<N)suma += tablica[i+1][j+1];
if(i-1>=0 && j+1<N)suma += tablica[i-1][j+1];
if(i+1<N && j-1>=0)suma += tablica[i+1][j-1];
if(suma>maks_suma)
{
x=i;
y=j;
maks_suma = suma;
}
}
}
cout<<"Element dla ktorego suma otaczajacych go elementow jest najwieksza ma wartosc : "<<tablica[x][y]<<"\n jego wspolrzedne to x : "<<x<<" i y : "<<y<<" a suma jest rowna : "<<maks_suma<<endl;
for(int i = 0; i<N; i++)
{
delete tablica[i];
}
delete tablica;
}
Z góry dziękuje wszystkim którzy poświęcą chociaż minutę na jakąś konstruktywną krytykę i pozdrawiam :)