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)--;
}
}