У меня нет большого опыта работы C или знаний, и я застрял с какими-либо проблемами в выполнении домашних заданий,C программирование - массив/значение указателя comparisson
Я пытаюсь создать программу, чтобы найти минимальные и максимальную из массив с использованием (3/2)*n
сравнений, я прошел через много Q & A здесь, и это помогло много, теперь все с ним в порядке, чем странная проблема, которую я не могу решить.
Когда я пытаюсь сравнитьif(a[0]>a[1]) or if(*(a)>*(a+1))
все в порядке, , когда я пытаюсь использовать еще после этих фраз или попытаться if(a[1]>a[0])
или if(*(a+1)>*(a))
то программа умирает.
#include <stdio.h>
#include <stdlib.h>
void maximum(int *a, int n, int *max, int *min);
int main()
{
int i;
int number;
int *max;
int *min;
int *a;
puts("hello, pls enter the number of numbers");
scanf("%d",&number);
a = (int*)calloc(number,sizeof(int));
puts("enter the numbers");
for(i=0;i<number;i++)
{
printf("%d",i);
puts("before");
scanf("%d",&a[i]);
puts("after");
}
puts("ok");
maximum(a,number,max,min);
printf("min is %d, max is %d",*min,*max);
return(0);
}
void maximum(int *a, int n, int *max, int *min)
{
int i;
int temp;
int tempmax;
int tempmin;
if(n==0)
{
puts("come on, be serius");
return(0);
}
if(n==1)
{
puts("the number you entered is the min and the max but where is the challenge?");
*min=*max=a[0];
}
puts("check3");
**if(*(a+1)>*(a))
{
*max=a[1];
*min=a[0];
}**
/*if(a[0]>a[1])
{
*max=a[0];
*min=a[1];
}else
{
*max=a[1];
*min=a[0];
}
for(i==2;i<(n-2);i=i+2)
{
if(a[i]>a[i+1])
{
tempmax=a[i];
tempmin=a[i+1];
}else
{
tempmin=a[i];
tempmax=a[i+1];
}
if(tempmax>*max)
*max=tempmax;
if(tempmin<*min)
*min=tempmin;
}
puts("check5");
if((n%2)==1)
{
if(a[n-1]<*min)
*min=a[n-1];
if(a[n-1]>*max)
*max=a[n-1];
}/*else
{
if(a[i]>a[i+1])
{
tempmax=a[i];
tempmin=a[i+1];
}else
{
tempmin=a[i];
tempmax=a[i+1];
}
if(tempmax>*max)
*max=tempmax;
if(tempmin<*min)
*min=tempmin;
}
*/
}
Не могу понять ваш код. Что прокомментировано, а что нет? – tapananand
Кроме того, переменные 'min' и' max' в 'main' фактически не указывают точку. Вы должны объявить их как 'int' вместо' int * 'и называть' maximum (a, number, & max, & min) ', а не разыменовывать их в следующем' printf'. – pat
Обратите внимание, что приведение '(int *)' не требуется в 'a = (int *) calloc (number, sizeof (int));'. Любопытно: почему это было закодировано именно так? – chux