В С++
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include <conio.h>
using namespace std;
int Sdvig(int*a,int j,int n)
{
int i;
for(i=j;i<n;i++)
a=a[i+1];
return 0;
}
int Delete(int*a ,int n)
{
int i;
if(a[n-1]>0)
{
for(i=n-1;i>=0;i--)
{
if(a<0)
{
Sdvig(a,i-1,n);
i--;
if(a>0)
Sdvig(a,i-1,n);
else
return 0;
}
}
}
if(a[n-1]<0)
{
for(i=n-1;i>=0;i--)
{
if(a>0)
{
Sdvig(a,i-1,n);
i--;
if(a<0)
Sdvig(a,i-1,n);
else
return 0;
}
}
}
}
int main()
{
int *a,n,i;
cout<<"n=";
cin>>n;
a=(int*)calloc(n,sizeof(int));
for(i=0;i<n;i++)
cin>>a;
Delete(a,n);
for(i=0;i<n;i++)
cout<<a<<endl;
getch();
return 0;
}
Почему же?
Вариант:
1 2 3 4 5 -6 7 -8 9 -10 11 12 13 14 15
Удалять надо 5 ... 11 - последняя знакочередующаяся группа.
ошибка в том что когда у тебя массив a[6]
a[x0 , x1 , x2 , x3 , x4 , x5]
и ты сдвигаешь x4<-x5
то x5 не удаляется! он приобретает "мусорное значение"
в итоге когда ты выводишь массив a[6] у тебя в конце муссор...
решение:
1.переписать всё в другой массив "нужного размера"
2.вести учёт количества удалённых ячеек и при выводе массива a[6] в for'е их учитывать
-----------------------------------------------------------------------------------------------------
ninika на будущее...
1.добавляй комментарии описывающие что делает твоя программа,функция,цикл...
(те кто тебе захотят помочь небудут листать твой код и думать "а нахрена он это вставил" они просто забьют на это и пойдут дальше)
2.когда вставляешь код вставляй его как код и тип указывай как С++
(не форматированный код читать нереально...)
вот такой код приятно! читать.
#include <iostream>
#include <stdio.h>
#include <conio.h>
using namespace std;
int Sdvig(int*a,int j,int n)
{
int i;
for(i=j;i<n;i++)
a=a[i+1];
return 0;
}
int Delete(int*a ,int n)
{
int i;
if(a[n-1]>0){
for(i=n-1;i>=0;i--){
if(a<0){
Sdvig(a,i-1,n);
i--;
if(a>0) Sdvig(a,i-1,n);
else return 0;
}
}
}
if(a[n-1]<0){
for(i=n-1;i>=0;i--){
if(a>0){
Sdvig(a,i-1,n);
i--;
if(a<0)Sdvig(a,i-1,n);
else return 0;
}
}
}
}
int main()
{
int *a,n,i;
cout<<"n=";
cin>>n;
a=(int*)calloc(n,sizeof(int));
for(i=0;i<n;i++)
cin>>a;
Delete(a,n);
for(i=0;i<n;i++)
cout<<a<<endl;
getch();
return 0;
}