Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.04.2015, 20:12   #1
BTS
Пользователь
 
Регистрация: 13.12.2014
Сообщений: 11
По умолчанию помогите найти ошибку неправильно выводит номер первого максимального элемента и элем

*Найти номер первого максимального элемента среди элементов, лежащих в диапазоне от 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));
}

}
From Stilet: Поместил

Последний раз редактировалось Stilet; 10.04.2015 в 20:48.
BTS вне форума Ответить с цитированием
Старый 10.04.2015, 20:42   #2
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

Поместите свой код в теги # пожалуйста... )
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массив из 10 элементов. Найти номер первого отрицательного элемента. Максимальный элемент евгений1995 Microsoft Office Excel 3 25.11.2014 23:33
Дана последовательность из n действительных чисел. Найти номер первого минимального элемента. d_dima Помощь студентам 2 19.03.2013 10:48
дан массив целых чисел.Найти номер максимального элемента массива Assembler Napo Помощь студентам 0 02.11.2012 22:29
найти номер первого отрицательного элемента массива Al'f!ra Паскаль, Turbo Pascal, PascalABC.NET 1 22.05.2012 22:06
Дана последовательность целых чисел за которой следует 0.Найти номер максимального элемента в этой последовательности. Da Magic Помощь студентам 3 22.11.2011 23:08