Технический форум

Технический форум (http://www.tehnari.ru/)
-   C/C++/С# (http://www.tehnari.ru/f42/)
-   -   Помогите найти ошибку, неправильно выводит номер первого максимального элемента (http://www.tehnari.ru/f42/t101978/)

BTS 10.04.2015 21:10

Помогите найти ошибку, неправильно выводит номер первого максимального элемента
 
/*Найти номер первого максимального элемента среди элементов, лежащих в диапазоне от x до y, и расположенных правее первого положительного элемента.*/
#include <stdio.h>
#include <math.h>
#include <locale.h>
#include <stdlib.h>

void vvod(int n1, int *A1);
void poisk(int *A1, int n1);
void vivod(int *A1, int n1);

int n, *A, xi, yi, p;
//max, nmax
void main()
{
setlocale(0, "russian");
for( ;; ){
printf("Введите количество элементов\n");
scanf("%d", &n);
if (!(A = (int*)malloc(n*sizeof(int))))
printf("Память не выделилась\n");
printf("Введите xi > = 0\n");
scanf("%d", &xi);
printf("Введите yi > = 0\n");
scanf("%d", &yi);
if (yi <= xi|| xi<0 || yi<0)
{
printf("Вы ввели неверный диапазон повторите попытку: \n");
printf("Введите xi\n");
scanf("%d", &xi);
printf("Введите yi\n");
scanf("%d", &yi);
}
vvod(n, A);
poisk(A, n);
vivod(A, n);
}}

void vvod(int n1, int *A1)
{
int i;
for (i = 0; i < n1; i++)
{
printf("Введите %d элемент \n", i+1);
scanf("%d", A1 + i);
}
printf("Массив введен n \n");
}
void poisk(int *A1, int n1)
{
int t = 0, i, p, k = 0, max, nmax;
for ( i = 0; i < n1; i++)
{

if (*(A1 + i)>0)
{
p = i;
i = n1;
t++;
}
}
if (t == 0)
{
printf("Нет положительных элементов\n");
return;
}

max = *(A1 + p + 1);
nmax = p + 1;
for (i = p + 1; i < yi; i++)
{

if (i > xi)
{

if (*(A1 + i) > max)
{
max = *(A1 + i);
nmax = i;
k++;
}
}
else
max = *(A1 + i + 1);
}
if (max == *(A1 + p + 1))
k++;
if (k = 0)
printf("net.\n");
printf("номер макс элемента %d \n", nmax);
{
if (max == *(A1 + p))
if (k = 0)
printf("net.\n");
printf("первый максимальный элемент стоит последним № данного элемента: %d \n", nmax);

}
}


void vivod(int *A1, int n1)
{
int i;
for (i = 0; i < n1; i++)
{
printf("элемент %d = %d \n", i + 1, *(A1 + i));
}

}


Часовой пояс GMT +4, время: 06:15.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.