Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > C/C++/С#


Ответ
 
Опции темы Опции просмотра
Старый 10.04.2015, 21:10   #1 (permalink)
BTS
Новичок
 
Регистрация: 13.12.2014
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 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));
}

}
BTS вне форума   Ответить с цитированием

Старый 10.04.2015, 21:10
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Представлю вам топики, которые по содержанию очень сильно схожи с вашим

Помогите найти ошибку
Найти номер последнего минимального элемента среди четных положительных...(СИ)

Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




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

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.