Witam. Od razu zaznaczam że nie chcę gotowego kodu. Chciałbym abyście pomogli mi usprawnić program min aby jak najbardziej zabezpieczyć go przed użytkownikiem (złe wpisywanie etc). Program w założeniu ma wyznaczać losowo ciąg intów, zapisywać je w tablicy, liczyć wartość minimalną i maxylamną, sumę elementów parzystych.
Druga sprawa to czy da się napisać poniższe funkcje aby wyeliminować z nich n (wielkość tablicy, ilość losowanych liczb) ?
Trzecia kwestia: czy stosowanie etykiet to dobry pomysł?
Dziękuję za ewentualną pomoc i pozdrawiam. Oto kod:
#include <iostream>
#include <conio.h>
#include <cstdlib>
#include <ctime>
using namespace std;
int pokaz_menu()
{
int wyb;
//system("cls");
cout<<" MENU"<<endl<<endl;
cout<<"Co chcesz zrobic?"<<endl<<endl;
cout<<"1. Wyznaczyc n losowych liczb z przedzialu <p,q>?"<<endl;
cout<<"2. Wyswietlic liste losowych liczb z podanego przedzialu?"<<endl;
cout<<"3. Wyznaczyc sume licz z wczesniej wyznaczonych?"<<endl;
cout<<"4. Wyszukac najwieksza i najmniejsa liczbe z wczesniej wyznaczonych?"<<endl;
cout<<"5. Eksportowac dane do pliku binarnego?"<<endl;
cout<<"6. Zakonczyc prace?"<<endl;
//cout<<"Wczytaj odpowiednia liczbe "<<endl;
cin>>wyb;
return wyb;
}
void uzupelnij(int* tab, int n, int& a, int& b)
{
int liczba;
while (n > 0)
{
liczba = a + (rand() % (b-a+1));
*tab = liczba;
tab ++;
n--;
}
}
void wyswietl (int* tab, int n)
{
for (int i = 0; i < n; i++)
{
cout << *tab << " ";
tab++;
}
cout << "\n";
}
void suma_parzystych (int* tab, int n)
{
int suma = 0;
for (int i = 0; i < n; i++)
{
if (!(*tab % 2)) suma += *tab;
tab++;
}
cout << "Suma elementow parzystych wynosi: " << suma << "\n";
}
void min_max (int* tab, int n)
{
int min = tab[0];
int max = tab[0];
for (int i = 0; i < n; i++)
{
if (min > *tab) min = *tab;
if (max < *tab) max = *tab;
tab++;
}
cout << "Wartosc minimalna: " << min <<"\nWartosc maxymalna: " << max << endl;
}
int main()
{
srand( time( 0 ) );
int n, p, q;
cout << "Podaj ilosc liczb ktore chcesz wylosowac: "; cin >> n;
int tab[n];
//int ilosc = n;
cout << "Podaj zakres z ktrego chcesz losowac: "; cin >> p >> q;
etykieta:
int wybor = pokaz_menu();
switch (wybor)
{
case 1:
uzupelnij(tab, n, p, q);
cout << "OK\n";
goto etykieta;
break;
case 2:
wyswietl(tab, n);
goto etykieta;
break;
case 3:
suma_parzystych (tab, n);
goto etykieta;
break;
case 4:
min_max (tab, n);
goto etykieta;
break;
// case 5:
// break;
case 6:
exit(1);
break;
}
getch();
return 0;
}