max=matrix[0];
min=max;
for (int i=1;i<=n-1;i++){
if (matrix>max){
max=matrix;
}
if (matrix<min){
min=matrix;
}
}
Помогите с рекурсией!!!
//Если можно с комментариями а то я с рекурсией ни прошарусь никак!!
Код:
где n - количество элементов, т.е. введенных чисел, а сам массив содержит эти числа. остается только поделить max на min. массив-то я думаю ты заполнишь вводимыми числами. вот вроде так.
Код:
int matrix[100];
void getMinMax(int *m, int ndx, int *min, int *max)
{
if(m[ndx] > *max)
*max = m[ndx];
else if (m[ndx] < *min)
*min = m[ndx];
if(ndx>0) // вместо >0 можно и >1
getMinMax(m, ndx-1, min, max);
}
void main()
{
int min, max;
int mcnt = -1;
// ВВодятся данные в массив matrix,
// пока не встретится 0
// В качестве индекса используется mcnt
...
...
...
// В конце ввода mcnt должен содержать индекс посл.элемента
min = matrix[0];
max = matrix[0];
getMinMax(matrix, mcnt, &min, &max);
printf("%3d %3d\n",min, max);
}
void getMinMax(int *m, int ndx, int *min, int *max)
{
if(m[ndx] > *max)
*max = m[ndx];
else if (m[ndx] < *min)
*min = m[ndx];
if(ndx>0) // вместо >0 можно и >1
getMinMax(m, ndx-1, min, max);
}
void main()
{
int min, max;
int mcnt = -1;
// ВВодятся данные в массив matrix,
// пока не встретится 0
// В качестве индекса используется mcnt
...
...
...
// В конце ввода mcnt должен содержать индекс посл.элемента
min = matrix[0];
max = matrix[0];
getMinMax(matrix, mcnt, &min, &max);
printf("%3d %3d\n",min, max);
}
мне одно непонятно: зачем использовать в этой задаче рекурсию - здесь и без неё обойтись можно, к тому же (может конечно и ошибаюсь), но с рекурсией работать будет медленнее.
посмотри название темы и перечитай вопрос.
да видел я название темы и опыт у меня есть, просто не привык усложнять простое, а Merlin конечно молодец. я что сказать хочу, наверное, задачку учитель какой-нить задал и хотел, чтоб на этом примере разобрались с рекурсией, так задавать надо задачи, в которых её применение необходимо, а то потом получаются горе программисты с тормозными прогами.
Спасибо мужики выручили, а то блин с рекурсией никак не вьеду!!!:)
Короче тут прикол в том что мы вводим Х несколько раз ну типа return, а конец ввода дожно быть условие например Х<0, и из тех введенных Иксов(Х) мы находим соотношение !!
[COLOR=red][/COLOR]
так Merlin же все написал. ну вот тебе ввод иксов:
Код:
int i=0,a=0;
cin>>a;
while (a>=0){
matrix=a;
i++;
cin>>a;
}
cin>>a;
while (a>=0){
matrix=a;
i++;
cin>>a;
}
тогда j=i-1 будет количество элементов в массиве, т.е. введенных иксов, а потом getMinMax и все. или тебе и ввод иксов рекурсивно надо?
так Merlin же все написал. ну вот тебе ввод иксов:
Код:
int i=0,a=0;
cin>>a;
while (a>=0){
matrix=a;
i++;
cin>>a;
}
cin>>a;
while (a>=0){
matrix=a;
i++;
cin>>a;
}
тогда j=i-1 будет количество элементов в массиве, т.е. введенных иксов, а потом getMinMax и все. или тебе и ввод иксов рекурсивно надо?[/QUOTE]
массив тут не надо, я делаю просто ввод иксов а потом из них нахожу min, max. А вот с рекурсией ввода можно, там же идет возвращение пока будет например x<0???
Код:
#include <iostream.h>
#include <conio.h>
void getMinMax(int *min, int *max)
{
int n;
cout << "Введите число : " << endl;
cin >> n;
if(n > 0)
{
if(n > *max)*max = n;
if(n < *min)*min = n;
getMinMax(min, max);
}
}
void main()
{
int min = 0x7FFFFFFFF;
int max = 0;
getMinMax(&min, &max);
cout << "min : " << min << " max : " << max << endl;
getch();
}
#include <conio.h>
void getMinMax(int *min, int *max)
{
int n;
cout << "Введите число : " << endl;
cin >> n;
if(n > 0)
{
if(n > *max)*max = n;
if(n < *min)*min = n;
getMinMax(min, max);
}
}
void main()
{
int min = 0x7FFFFFFFF;
int max = 0;
getMinMax(&min, &max);
cout << "min : " << min << " max : " << max << endl;
getch();
}
Код:
#include <stdio.h>
void getMinMax(int *min, int *max)
{
int n;
printf("\nEnter a value: ");
scanf("%d", &n);
if(n < 0) return;
if(*min > n || *min == -1) *min = n;
if(*max < n || *max == -1) *max = n;
getMinMax(min, max);
}
void main(void)
{
int min = -1, max = -1;
getMinMax(&min, &max);
printf("\n\n\nMin = %d\nMax = %d\n", min, max);
}
void getMinMax(int *min, int *max)
{
int n;
printf("\nEnter a value: ");
scanf("%d", &n);
if(n < 0) return;
if(*min > n || *min == -1) *min = n;
if(*max < n || *max == -1) *max = n;
getMinMax(min, max);
}
void main(void)
{
int min = -1, max = -1;
getMinMax(&min, &max);
printf("\n\n\nMin = %d\nMax = %d\n", min, max);
}
Код:
#include <iostream.h>
#include <conio.h>
void getMinMax(int *min, int *max)
{
int n;
cout << "Введите число : " << endl;
cin >> n;
if(n [color=red]>[/color] 0)
{
if(n > *max)*max = n;
else if(n < *min)*min = n;
getMinMax(min, max);
}
}
void main()
{
int min = 0;
int max = 0;
getMinMax(&min, &max);
if(max==0)
cout << "Вы не ввели ни одного числа" << endl;
else
{
if(min==0)min = max;
cout << "min : " << min << " max : " << max << endl;
}
getch();
}
#include <conio.h>
void getMinMax(int *min, int *max)
{
int n;
cout << "Введите число : " << endl;
cin >> n;
if(n [color=red]>[/color] 0)
{
if(n > *max)*max = n;
else if(n < *min)*min = n;
getMinMax(min, max);
}
}
void main()
{
int min = 0;
int max = 0;
getMinMax(&min, &max);
if(max==0)
cout << "Вы не ввели ни одного числа" << endl;
else
{
if(min==0)min = max;
cout << "min : " << min << " max : " << max << endl;
}
getch();
}
#include<conio.h>
void vvod(int x)
{
cout<<"Vvedite X: ";
cin>>x;
if(x<0) return x;
if(x>0) return vvod(x);
}
void main() //теперь надо найти min и max из этих введенных чисел
{
in x,n, max, min;
{if(x > max) max = x;
if(x < min) min = x;
}
//теперь надо найти отношение минимуму к максимуму
n=min/max;
cout<<"Отношение минимуму и максимума: "<<n<<endl;
}
getch();
}
можете глянуть правильно или чето надо подкорректировать
#include<conio.h>
void vvod(int x)
{
cout<<"Vvedite X: ";
cin>>x;
if(x<0) return x;
if(x>0) return vvod(x);
}
void main() //теперь надо найти min и max из этих введенных чисел
{
in x,n, max, min;
{if(x > max) max = x;
if(x < min) min = x;
}
//теперь надо найти отношение минимуму к максимуму
n=min/max;
cout<<"Отношение минимуму и максимума: "<<n<<endl;
}
getch();
}
можете глянуть правильно или чето надо подкорректировать[/QUOTE]В корне неправильно.
Код хоть немного отлаживать пробовали, или это наброски?
Код хоть немного отлаживать пробовали, или это наброски?[/QUOTE]
Эт наброски просто решил чуть чуть подругому сделать