Problem z usuwaniem ujemnych elementów

0

Hej. Dopiero co zaczęłam się uczyć programować, a muszę przekształcić jedną funkcję. Siedzę nad tym już bardzo długo i mi nie wychodzi, próbowałam wszystkiego i nie mam pojęcia co robię źle. Może ktoś coś podpowie?


```#include <stdio.h>

void usun_ujemne(double *v, int *n)
{                                  
        /* Usuwa ujemne elementy z wektora v */
        double         *u = v;
        int             l = *n;
        while (l--) {
                if (*v >= 0)    /* jeśli element jest dodatni */
                        *u++ = *v;      /* to zapamiętaj go w "nowym"
                                         * wektorze */
                else
                        (*n)--; /* w przeciwnym razie zmniejsz 
                                 * wartosc wskazywana przez n */
                v++;
        }
}

void pwekt(double *v, int n)
{
        printf("[ ");
        while (n--) {
                printf("%g ", *v);
                v++;
        }
        printf("]");
}

int main()
{
        double          v[] = {-10, 0, 10, -20, 30, 1.1, -2.2, -3.3, 300.003, 1024.5};
        int             n = sizeof v / sizeof v[0];

        printf("Wektor: ");
        pwekt(v, n);
        printf(" (%d elementow)\n", n);

        usun_ujemne(v, &n);

        printf("Wektor po usunieciu ujemnych elementow: ");
        pwekt(v, n);
        printf(" (%d elementow)\n", n);

        return 0;
}
Mam taki program i muszę przerobić funkcję usun_ujemne tak, aby traktowała pierwszy argument jako wektor i posługiwała się indeksami i - do iteracji po wektorze i j - do zapamiętywania elementów nieujemnych. Próbowałam cos takiego ale to nie to.

void usun_ujemne(double *v, int *n)
{                                  
        double          *u=&v[0];
        int             l = *n;
        int             j=0;
        for(int i=0;i<l;i++) {
                if (v[i] >= 0)
                        *u++ = v[j];
                else
                        (*n)--;
     
        }
}
0
colorfullgirl napisał(a):

Hej. Dopiero co zaczęłam się uczyć programować, a muszę przekształcić jedną funkcję. Siedzę nad tym już bardzo długo i mi nie wychodzi, próbowałam wszystkiego i nie mam pojęcia co robię źle. Może ktoś coś podpowie?
double *u = v;

Ot tak stworzyłeś sobie nowy wektor?

1 użytkowników online, w tym zalogowanych: 0, gości: 1