В массиве вставить новый элемент со значением P вслед за наибольшим из отрицательных - C (СИ)
Формулировка задачи:
Задача:
В массиве A=(a1,a2,....an) вставить новый элемент со значением P вслед за наибольшим из отрицательных элементов этого массива. Нужно решить с помощью указателей. Подскажите что поменять в данном коде, правильно ли я "копаю"?#include <stdio.h>
#include <math.h>
void firstfunction(int Size,int *Array)
{
printf("vvedite values of massiv");
for(int i=0; i<Size; i++)
{
scanf("%d", &Array[i]);
}
for (int i=0; i<Size; i++)
{
if (Array[i]<0)
{
int *Y=&Array[i];
break;
}
}
for (int i=0; i<Size; i++)
{
if ((Array[i]<0) && (int *Y<Array[i]))
{
int Y=Array[i];
int u=i;
}
}
}
int main()
{
int lol,i,P,u,*L,*Y,B,m;
printf("vvedite razmer massiva");
scanf("%d", &m); /*Ввод кол-ва элементов массива*/
const int N=m;
int A[N];
printf("vvedite P\n");
scanf("%d", &P); /*Ввод элемента Р, будет подставляться после наибольшего отрицательного*/
firstfunction(N,A); /*Вызов функции*/
for (i=0; i<=u; i++) /* вывод элементов */
{
printf("%d",A[i]);}
printf("%d", P);
for (i=u+1; i<N; i++)
{
printf("%d", A[i]);}
return 0;
}Решение задачи: «В массиве вставить новый элемент со значением P вслед за наибольшим из отрицательных»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int firstfunction(int Size, int *Array)
{ int i,u;
int* Y;
Y=Array;
for (i=1; i<Size; i++)
{
if ((Array[i]<0) && (*Y<Array[i]))
{
Y=&Array[i];
u=i;
}
}
return u;
}
int main()
{
int lol,i,P,u,*L,*Y,B,m;
int* A;
printf("vvedite razmer massiva\n");
scanf("%d", &m); /*Ââîä êîë-ГўГ* ýëåìåГ*òîâ Г¬Г*Г±Г±ГЁГўГ**/
A=(int*)malloc(m*sizeof(int));
printf("vvedite values of massiv\n");
for(i=0; i<m; i++)
{
scanf("%d", &A[i]);
}
printf("vvedite P\n");
scanf("%d", &P); /*Ââîä ýëåìåГ*ГІГ* Гђ, áóäåò ïîäñòГ*âëÿòüñÿ ïîñëå Г*Г*èáîëüøåãî îòðèöГ*òåëüГ*îãî*/
u=firstfunction(m,A); /*Âûçîâ ГґГіГ*ГЄГ¶ГЁГЁ*/
printf("%d\n",u);
for (i=0; i<=u; i++) // âûâîä ýëåìåГ*òîâ
{
printf("%d",A[i]);
}
printf("%d",P);
for (i=u+1; i<m; i++) // âûâîä ýëåìåГ*òîâ
{
printf("%d",A[i]);
}
getch();
return 0;
}
Объяснение кода листинга программы
Код выполняет следующие действия:
- Сначала пользователю предлагается ввести размер массива.
- Затем массив инициализируется значениями, введенными пользователем.
- После этого пользователю предлагается ввести значение P.
- Функция firstfunction() находит индекс последнего отрицательного элемента в массиве.
- Затем в массив вставляется новый элемент со значением P вслед за найденным отрицательным элементом.
- Выводится на экран новый массив с вставленным элементом.