Ciao,
ho sistemato il codice, solo che se inserisco zero il ciclo di inserimento non termina ma continua?

Mi potreste cortesemente dire se si tratta di un errore logico o di codice.

Ecco il pezzo di codice che deve svolgere il controllo sull'input:
codice:
 printf("Inserisci una sequenza di numeri interi positivi (per terminare premi 'zero')\n");
    while(num[i]!=0)
    {
                      printf("\nInserisci il %d%c numero:", j, 167);
                      scanf("%d", &num[i]);
                      if(num[i]<0)
                      {
                                  do
                                  {                                 
                                  printf("Il numero inserito '%d' non e\' corretto perche\' e\' minore di zero\n", num[i]);
                                  printf("Inserisci nuovamente il %d%c numero", j, 167);
                                  scanf("%d", &num[i]);
                                  }
                                  while(num[i]<0);
                      }
                      i++;
                      j++;
    }
Vi posto anche il codice completo per aver la visione completa di ciò che ho svolto fino ad ora:
codice:
#include<stdio.h>
int somma(int[]);
int sommap(int[], int, int);
int main()
{
    int num[1000], i=0, j=1, op=0, k=0;
    printf("Inserisci una sequenza di numeri interi positivi (per terminare premi 'zero')\n");
    while(num[i]!=0)
    {
                      printf("\nInserisci il %d%c numero:", j, 167);
                      scanf("%d", &num[i]);
                      if(num[i]<0)
                      {
                                  do
                                  {                                 
                                  printf("Il numero inserito '%d' non e\' corretto perche\' e\' minore di zero\n", num[i]);
                                  printf("Inserisci nuovamente il %d%c numero", j, 167);
                                  scanf("%d", &num[i]);
                                  }
                                  while(num[i]<0);
                      }
                      i++;
                      j++;
    }
    do
    {
                 printf("Cosa vuoi vedere?\n\n");
                 printf(" 1) La somma dei numeri pari\n");
                 printf(" 2) La somma dei numeri dispari\n");
                 printf(" 3) La somma dei numeri in posizione pari\n");
                 printf(" 4) La somma dei numeri in posizione dispari\n");
                 printf("Scelta:");
                 scanf("%d", &op);
    }
    while(op!=1 && op!=2 && op!=3 && op!=4);
    switch(op)
    {
    case 1:
    printf("La somma dei numeri pari da come risultato: %d", somma(num));
    break;
    case 2:
    printf("La somma dei numeri dispari da come risultato: %d", somma(num));     
    break;
    case 3:
    k=0;
    printf("La somma dei numeri in posizione pari da come risultato: %d", sommap(num, k, i));     
    break;       
    default:
    k=1;
    printf("La somma dei numeri in posizione dispari da come risultato: %d", sommap(num, k, i));     
    }
    system("pause");
    return 0;
}
//Implementazione che conta i numeri in posizione pari o dispari
int sommap(int num1[], int pos, int tot)
{
    int i, somma = 0;

    for (i = pos; i < tot; i += 2)
        somma += num1[i];
        
    return somma;
}
//Implementazione della funzione che conta i numeri pari o dispari
int somma (int num2[])
{
    //Ciao
    //Qui non ho scritto niente poichè non sapevo come scrivere il codice per  vedere se il numero era pari o dispari
}
Ciao e grazie