#include <iostream.h>
#include <conio.h>
#include <stdio.h>
void getMinMax(int &min, int &max)
{
int n,i;
i= max/min;
cout<<"\nVvedite chislo: ";
cin>>n;
if(n <= 0) return;
if( min > n ) min = n;
if( max < n ) max = n;
getMinMax(min, max);
void main(void)
int min = 0x3FFFFFF;
int max = 0;
getMinMax(min, max);
cout<<"\nMin = "<< min << "\nMax = "<< max << "\nOtnoshenie: " << i << endl;
getch();
}
Проблема вывода результата
#include <iostream.h>
#include <stdio.h>
void getMinMax(int min, int max)
{
int n;
cout<<"\nVvedite chislo: ";
cin>>n;
if(n <= 0) return;
if( min < n ) min = n;
if( max > n ) max = n;
getMinMax(min, max);
}
void main(void)
{
int min, max, i;
i=max/min;
getMinMax(min, max);
cout<<"\nMin = "<< min << "\nMax = "<< max << "\nOtnoshenie: " << i << endl;
}
1. Но в результате получается min = 1792, max = 1816, причем если ввожу любое количество цифр и всегда разные значения.
2. Куда на прописать задержку getch()ем?
#include <conio.h>
getch() пишется перед последней }
У тебя min и max не проинициализированы.
min можно проинициализировать с 0x3FFFFF, max = 0;
Отношение i=max/min вычисляешь раньше, чем вводятся числа.
if( min < n ) min = n;
if( max > n ) max = n;
Нужно как раз наоборот, напр if( min [color=red]>[/color] n ) min = n;
В функции getMinMax можешь присваивать любые значения параметрам min, max. Переменные min, max те значения не получат.
Для этого нужно бы определить getMinMax как
void getMinMax(int &min, int &max)
Код:
но теперь выписует 2 ошибки:
1) int min = 0x3FFFFF; - declaration syntax error
2) int max = 0;- multiple declaration for "max"
Код:
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
void getMinMax(int &min, int &max)
{
int n;
cout<<"\nVvedite chislo: ";
cin>>n;
if(n <= 0) return;
if( min > n ) min = n;
if( max < n ) max = n;
getMinMax(min, max);
}
void main(void)
{
int min = 0x3FFFFFF;
int max = 0;
getMinMax(min, max);
double i = max/min;
cout<<"\nMin = "<< min << "\nMax = "<< max << "\nOtnoshenie: " << i << endl;
getch();
}
#include <conio.h>
#include <stdio.h>
void getMinMax(int &min, int &max)
{
int n;
cout<<"\nVvedite chislo: ";
cin>>n;
if(n <= 0) return;
if( min > n ) min = n;
if( max < n ) max = n;
getMinMax(min, max);
}
void main(void)
{
int min = 0x3FFFFFF;
int max = 0;
getMinMax(min, max);
double i = max/min;
cout<<"\nMin = "<< min << "\nMax = "<< max << "\nOtnoshenie: " << i << endl;
getch();
}
А если не трудно, обьясни что значит проинициализировать?
Присвоить переменной начальное значение. Иначе переменная будет содержать какой-то мусор. Напр. 1792, или 1816.
- не надо в тэгах пробелы писать[/COLOR]
Но не это главное. В ту прогу, чтоб все было нормально нужно бы дописать после
вызова getMinMax
if(max==0)
cout << "Вы не ввели ни одно положительное число." << endl;
else
{
...
зы неужели серьезно не видно какое первоначальное значение вы нечаянно задали переменной min при инициализации в main()
Дело в том, что она тут не просто излишне, но и вредна.
Сделай цикл, будет и проще, и читабельнее, и безглючнее.
принципиальна, учитель требует =), нас тоже на всякой ерунде натаскивали.
Печально, что учат применять, а где не следует применять, не учат. :(
1) готовили к гос. экзаменам, там если обязуют решать задачу рекурсией - не поспоришь, проверка знаний
2) на простых примерах показывали принцип работы рекурсивных функций, и заодно могли показать нерекурсивное решение