Witam, mam za zadanie przepisać kod z C++ do C#.
Program wyświetla największy i najmniejszy liczbę tablicy.
W C++ wszystko działa jak należy, ale po przepisaniu kodu do C# już nie jest tak kolorowo.
Byłbym bardzo wdzięczny za pomoc w rozwiązaniu problemu.
Kod w C++
#include <iostream>
#include <stdlib.h>
using namespace std;
const int N = 8;
int X[N] = {1, 4, 3, 2, 4, 9, 5, 7};
void MinMaxRek( int lewy, int prawy, int &index_min, int &index_max);
int main(int argc, char** argv) {
int min, max;
for(int i=0; i<N; i++)
{
cout <<"X[" << i << "]=" << X[i] << ";\n";
}
cout << endl;
MinMaxRek(0, N-1, min, max);
cout << "min= X[" << min << "] = " << X[min] << "\n" << endl;
cout << "max= X[" << max << "] = " << X[max] << "\n" << endl;
return 0;
}
void MinMaxRek( int lewy, int prawy, int &index_min, int &index_max)
{
int srodek, i_max1, i_max2, i_min1, i_min2;
if(lewy == prawy)
{
index_min = index_max =lewy;
return;
}
if(lewy+1 == prawy)
{
if(X[lewy] >= X[prawy])
{
index_max = lewy;
index_min = prawy;
return;
}
else
{
index_min = lewy;
index_max = prawy;
}
}
if(lewy+1 < prawy)
{
srodek = (lewy+prawy)/2;
cout << "srodek = " << srodek << "\n";
MinMaxRek(lewy, srodek, i_min1, i_max1);
MinMaxRek(srodek+1, prawy, i_min2, i_max2);
if( X[i_min1] <= X[i_min2] )
{
index_min = i_min1;
}
else
{
index_min = i_min2;
}
if( X[i_max1] >= X[i_max2] )
{
index_max = i_max1;
}
else
{
index_max = i_max2;
}
return;
}
}
Kod w C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace min_max
{
class Program
{
const int N = 8;
static int[] X = new int[N] { 1, 4, 3, 2, 4, 9, 5, 7 };
static void Main(string[] args)
{
int min = 0;
int max = 0;
for (int i = 0; i < N; i++)
{
Console.WriteLine("X[" + i + "] = " + X[i]);
}
MinMaxRek(0, N-1, ref min, ref max);
Console.WriteLine("min = X[" + min + "] = " + X[min]);
Console.WriteLine("max = X[" + max + "] = " + X[max]);
}
static void MinMaxRek(int lewy, int prawy, ref int index_min, ref int index_max)
{
int srodek;
int i_min1 = 0;
int i_max1 = 0;
int i_min2 = 0;
int i_max2 = 0;
if( lewy+1 == prawy)
{
if(X[lewy] == prawy)
{
index_max = lewy;
index_min = prawy;
return;
}
else
{
index_min = lewy;
index_max = prawy;
return;
}
}
if( lewy+1 < prawy)
{
srodek = (lewy + prawy)/2;
MinMaxRek(lewy, srodek, ref i_min1, ref i_max1);
MinMaxRek(srodek+1, prawy, ref i_min2, ref i_max2);
if ( X[i_min1] <= X[i_min2])
{
index_min = i_min1;
}
else
{
index_min = i_min2;
}
if(X[i_max1] >= X[i_max2])
{
index_max = i_max1;
}
else
{
index_max = i_max2;
}
return;
}
}
}
}