Z c++ na c#

0

Nigdy nie robilem w c#, a teraz zaczynam sie uczyc. Ma ktos pomysl jak taki prosty programik z c++ przerobic na c#?

#include <iostream> 
#include <math.h> 
using namespace std; 

float Heron(float a, float b, float c){ 
    float p=(a+b+c)/2; 
    return sqrt(p*(p-a)*(p-b)*(p-c)); 
} 

int main(){ 
    float a,b,c; 
    cout << "Podaj a: "; 
    cin >> a; 
    cout << "Podaj b: "; 
    cin >> b; 
    cout << "Podaj c: "; 
    cin >> c; 
    if(a<=0 || b<=0 || c<=0){ 
        cout << " Wszystkie wartosci musza byc wieksze od 0!\n"; 
        system("pause"); 
        return 1; 
    } 
    if(!(c<a+b) || !(a<b+c) || !(b<a+c)){ 
       cout << "Podany trojkat nie istnieje!\n"; 
       system("pause"); 
       return 1; 
    } 
    else{ 
        cout << "Pole trojkata = " << Heron(a,b,c) << endl; 
        system("pause"); 
        return 0; 
    } 
}
2

No chwila, gdyby było proste, to chyba byś sam zrobił, nie?

Albo napisz z czym konkretnie masz problem albo poproś moderatora o przeniesienie wątku do działu praca. Jeżeli nie masz zielonego pojęcia o C# to polecam się zapatrzyć w podręcznik, a nie oczekiwać, że ktoś zrobi każde zadanie za ciebie.

3

Kolega dostał prawdopodobnie zadanie z zaznaczeniem "napisz to w c#", a w sieci udało się znaleźć tylko w c++. No i problem... Może zacznij od kursu, podstaw... Np. Rozdział 3

REGULAMIN napisał(a)

Zabronione jest umieszczanie w postach prośby o rozwiązanie zadań domowych, zadań zaliczeniowych. Lenistwo nie jest tolerowane. Można poprosić o rozwiązanie konkretnego problemu, a nie całego zadania, paru zadań.

A więc pokaż z czym masz konkretnie problem, co się nie udaje...

2

Poczytaj o głównej konstrukcji programu w C# i na tym się wzoruj. To są odpowiedniki C++ w C#:

cout = Console.WriteLine(...) lub Console.Write(...) (bez \n na końcu);
cin = Console.ReadLine(), z tym, że jak chcesz wczytać int'a to parsujesz wartość metody na int'a
system("pause") = Console.Read() lub Console.ReadKey() (bez entera)
// a odpowiednik math.h to statyczna klasa Math i w niej masz wszystko

Reszta jak w CPP.

0

kolega siedzi w domu i te zadania sa brane z sieci;f

0

Witam. Mógłby mi ktoś pomóc w przerobieniu dwóch programów a konkretnie:

-------------PIERWSZY PROGRAM-----------------

#include <iostream>
#include <cstdlib>
#include <iomanip>
#include <ctime>
using namespace std;

//======================================================================
/
Dwuwymiarowa tablica z danymi. Pierwszy indeks to numer paczki o rozmiarze [indeks+1]
10 000, drugi to zawartosc paczki.
Przyklad:
dane[0] to tablica z (0+1)10000 = 10000 elementow
dane[1] to tablica z (1+1)
10000 = 20000 elementow
dane[2] to tablica z (2+1)10000 = 30000 elementow
dane[9] przechowuje paczke z (9+1)
10000 = 100 000 elementow
/
int
dane[10];

// zakres danych w paczce, z ktorego beda losowane liczby
// (losowane od 0 do dane_max)
int dane_max = 10000;

void generuj_dane()
{
// tworzymy paczki z danymi
for (int i = 0; i < 10; i++)
{
// liczba elementow w paczce
int n = (i+1) * 10000;
// tworzymy tablice z paczka
dane[i] = new int[n];

    // wypelniamy paczke losowymi wartosciami z zakresu
    for (int j = 0; j < n; j++)
    {
        dane[i][j] = rand() % (dane_max+1);
    }
}

}

void zwolnij_dane()
{
for (int i = 0; i < 10; i++)
{
if (dane[i])
{
delete [] dane[i];
dane[i] = NULL;
}
}
}

//======================================================================
/
Jak naliczane sa porownania? W kazdym wywolaniu petli for dodajemy
jedno, a po jej zakonczeniu kolejne - petla for wykonuje sie n+1 razy
dla n elementow, poniewaz ostatni jest sprawdzany przed zakonczeniem
petli.
/

// sortujemy tablice za pomoca metody przez wybor

// w porownania i operacje zapisuje odpowiednie wartosci
void sortuj_wybor(int tablica, int n, unsigned int &porownania, unsigned int &operacje)
{
// tablica pomocnicza, ktora zawiera posortowane dane
int
tablica_s = new int[n];
// przepisanie tablicy, zeby nie operowac na porcji danych
for (int i = 0; i < n; i++)
{
tablica_s[i] = tablica[i];
}

// dzialania algorytmu
for (int i = 0; i < n; i++)
{
    ++porownania;
    int min = i;
    for (int j = i+1; j < n; j++)
    {
        ++porownania;
        if (tablica_s[j] < tablica_s[min])
        {
            min = j;
        }
        ++porownania;
    }                  
    ++porownania;
    swap(tablica_s[i], tablica_s[min]);
    ++operacje;
}
++porownania;

// zwalniamy pamiec i zwracamy wynik
if (tablica_s)
{
    delete [] tablica_s;
}

}

// sortowanie przez zliczanie
void sortuj_zliczanie(int tablica, int n, unsigned int &porownania, unsigned int &operacje)
{
// tablica pomocnicza, ktora zawiera zliczone wartosci
int
tablica2 = new int[dane_max+1];
// tablica pomocnicza, ktora zawiera posortowane dane
int *tablica_s = new int[n];

// zerowanie tablicy
for (int i = 0; i <= dane_max; i++)
{
    tablica2[i] = 0;
    ++porownania;
}
++porownania;

// zliczanie wystapien poszczegolnych elementow
for (int i = 0; i < n; i++)
{
    tablica2[tablica[i]]++;
    ++porownania;
    ++operacje;
}
++porownania;

// przepisanie tablicy pomocniczej do tablicy wyjsciowej
int k = 0;
for (int i = 0; i < dane_max; i++)
{
    ++porownania;
    for (int j = 0; j < tablica2[i]; j++)
    {
        tablica_s[k++] = i;
        ++operacje;
        ++porownania;
    }
    ++porownania;
}
++porownania;

// zwolnienie pamieci
if (tablica2)
    delete [] tablica2;
if (tablica_s)
    delete [] tablica_s;

}

//======================================================================
// uruchomienie testu dla danej partii
// partia - 1...10
void test(int partia)
{
generuj_dane();

cout << "Test dla partii " << ((partia) * 10000) << " elementow - porownania/przestawienia:" << endl;
cout << "==============================================================================" << endl;
int ilosc_testow = 10;
// czas1 - sortowanie przez zliczanie, czas2 - sortowanie przez wybor
unsigned int porownania1_suma = 0, operacje1_suma = 0, porownania2_suma = 0, operacje2_suma = 0;

cout << setw(12) << "Test";
cout << setw(25) << "Zliczanie";
cout << setw(25) << "Wybor";
cout << endl;

// wykonanie okreslonej ilosci testow
for (int i = 1; i <= ilosc_testow; i++)
{
    generuj_dane();

    // wykonanie testow
    unsigned int p1 = 0, p2 = 0, o1 = 0, o2 = 0;
    sortuj_zliczanie(dane[partia-1], (partia)*10000, p1, o1);
    sortuj_wybor(dane[partia-1], (partia)*10000, p2, o2);
    porownania1_suma += p1;
    operacje1_suma += o1;
    porownania2_suma += p2;
    operacje2_suma += o2;

    // wyswietlenie wynikow
    cout << setw(12) << i;
    cout << setw(12) << p1 << "/" << setw(12) << o1;
    cout << setw(12) << p2 << "/" << setw(12) << o2;
    cout << endl;

    // zwalniamy dane
    zwolnij_dane();
}

cout << setw(12) << "Srednia";
cout << setw(12) << (porownania1_suma/ilosc_testow) << "/";
cout << setw(12) << (operacje1_suma/ilosc_testow);
cout << setw(12) << (porownania2_suma/ilosc_testow) << "/";
cout << setw(12) << (operacje2_suma/ilosc_testow);
cout << endl;
cout << "Koniec testu";
cout << endl << endl;

}

//======================================================================
// uruchamiamy testy
int main()
{
srand(time(NULL));

while (true)
{
    int partia = 0;
    cout << "Uruchom test nr (testy: 1...10, wyjscie: 0): ";
    cin >> partia;

    if (partia >= 1 && partia <= 10)
    {
        system("cls");
        test(partia);
    }
    else
    {
        break;
    }
}

system("pause");

return 0;

}

------------DRUGI PROGRAM--------------

#include <iostream>
#include <cstdlib>
#include <iomanip>
#include <ctime>
using namespace std;

//======================================================================
/
Dwuwymiarowa tablica z danymi. Pierwszy indeks to numer paczki o rozmiarze [indeks+1]
10 000, drugi to zawartosc paczki.
Przyklad:
dane[0] to tablica z (0+1)10000 = 10000 elementow
dane[1] to tablica z (1+1)
10000 = 20000 elementow
dane[2] to tablica z (2+1)10000 = 30000 elementow
dane[9] przechowuje paczke z (9+1)
10000 = 100 000 elementow
/
int
dane[10];

// zakres danych w paczce, z ktorego beda losowane liczby
// (losowane od 0 do dane_max)
int dane_max = 10000;

void generuj_dane()
{
// tworzymy paczki z danymi
for (int i = 0; i < 10; i++)
{
// liczba elementow w paczce
int n = (i+1) * 10000;
// tworzymy tablice z paczka
dane[i] = new int[n];

    // wypelniamy paczke losowymi wartosciami z zakresu
    for (int j = 0; j < n; j++)
    {
        dane[i][j] = rand() % (dane_max+1);
    }
}

}

void zwolnij_dane()
{
for (int i = 0; i < 10; i++)
{
if (dane[i])
{
delete [] dane[i];
dane[i] = NULL;
}
}
}

//======================================================================
// sortujemy tablice za pomoca metody przez wybor

// w porownania i operacje zapisuje odpowiednie wartosci
double sortuj_wybor(int tablica, int n)
{
// tablica pomocnicza, ktora zawiera posortowane dane
int
tablica_s = new int[n];
// przepisanie tablicy, zeby nie operowac na porcji danych
for (int i = 0; i < n; i++)
{
tablica_s[i] = tablica[i];
}

clock_t start = clock();
// dzialania algorytmu
for (int i = 0; i < n; i++)
{
    int min = i;
    for (int j = i+1; j < n; j++)
    {
        if (tablica_s[j] < tablica_s[min])
        {
            min = j;
        }
    }
    swap(tablica_s[i], tablica_s[min]);
}

double czas = (clock()-start)/(double)CLOCKS_PER_SEC;

// zwalniamy pamiec i zwracamy wynik
if (tablica_s)
{
    delete [] tablica_s;
}

return czas;

}

// sortowanie przez zliczanie
double sortuj_zliczanie(int tablica, int n)
{
// tablica pomocnicza, ktora zawiera zliczone wartosci
int
tablica2 = new int[dane_max+1];
// tablica pomocnicza, ktora zawiera posortowane dane
int *tablica_s = new int[n];

double start = clock();

// zerowanie tablicy
for (int i = 0; i <= dane_max; i++)
{
    tablica2[i] = 0;
}

// zliczanie wystapien poszczegolnych elementow
for (int i = 0; i < n; i++)
{
    tablica2[tablica[i]]++;
}

// przepisanie tablicy pomocniczej do tablicy wyjsciowej
int k = 0;
for (int i = 0; i < dane_max; i++)
{
    for (int j = 0; j < tablica2[i]; j++)
    {
        tablica_s[k++] = i;
    }
}
double czas = (clock()-start)/(double)CLOCKS_PER_SEC;

// zwolnienie pamieci
if (tablica2)
    delete [] tablica2;
if (tablica_s)
    delete [] tablica_s;

return czas;

}

//======================================================================
// uruchomienie testu dla danej partii
// partia - 1...10
void test(int partia)
{
generuj_dane();

cout << "Test dla partii " << ((partia) * 10000) << " elementow - czas wykonywania:" << endl;
cout << "==============================================================================" << endl;
int ilosc_testow = 10;
// czas1 - sortowanie przez zliczanie, czas2 - sortowanie przez wybor
double czas1_suma = 0.0, czas2_suma = 0.0;

cout << setw(10) << "Test";
cout << setw(13) << "Zliczanie";
cout << setw(13) << "Wybor";
cout << endl;

// wykonanie okreslonej ilosci testow
for (int i = 1; i <= ilosc_testow; i++)
{
    generuj_dane();

    // wykonanie testow
    double czas1 = sortuj_zliczanie(dane[partia-1], (partia)*10000);
    double czas2 = sortuj_wybor(dane[partia-1], (partia)*10000);
    czas1_suma += czas1;
    czas2_suma += czas2;

    // wyswietlenie wynikow
    cout << setw(10) << i;
    cout << setw(10) << czas1 << " s.";
    cout << setw(10) << czas2 << " s.";
    cout << endl;

    // zwalniamy dane
    zwolnij_dane();
}

cout << setw(10) << "Srednia";
cout << setw(10) << (czas1_suma/ilosc_testow) << " s.";
cout << setw(10) << (czas2_suma/ilosc_testow) << " s.";
cout << endl;
cout << "Koniec testu";
cout << endl << endl;

}

//======================================================================
// uruchamiamy testy
int main()
{
srand(time(NULL));

while (true)
{
    int partia = 0;
    cout << "Uruchom test nr (testy: 1...10, wyjscie: 0): ";
    cin >> partia;

    if (partia >= 1 && partia <= 10)
    {
        system("cls");
        test(partia);
    }
    else
    {
        break;
    }
}

system("pause");

return 0;

}

z góry dzięki za pomoc.

2

CTRL+C , CTRL+V

Pozmieniać będziesz musiał wskaźniki z "typ* nazwa" na "typ[] nazwa" i usunąc wszelkie cout,cin,system(""), oraz zmienić iteracje po wskaźnikach na iteracje po indeksach tablicy.

1

Witam. Mógłby mi ktoś pomóc w przerobieniu dwóch programów a konkretnie:
Pomóc możemy, ale musiałbyś zadać jakieś pytania

z góry dzięki za pomoc.
polecam się na przyszłość :P

1

Dzisiaj wieczorem ci to przetlumacze. W ramach cwiczen.

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