Ciao a tutti,
ho bisogno del vostro prezioso aiuto!

devo scrivere un programma in c++ che dati due Array , cui sono salvati dei numeri, ne crea un terzo array che é formato dal primo membro del primo array , il secondo membro é quello del secondo, il terzo membro é il terzo del primo array ecc.

esempio array { 1, 2, 3} array2 {4,5,6} arrayfiinale { 1, 4,2,5,3,6 }

nel mio programma listone e listtwo sono i primi due array , lista é l´array da creare.
codice:
void interLeaveListOfIntegers(int*lista, int*listone, int*listtwo)
{
int j=1;
int k=0;
int i=0;
while ((listone[i] != -1) ||(listtwo[i] != -1))
  {
   lista[k] = listone[i];
    k=k+2;
   lista[j] = listtwo[i];
   j=j+2;
    i++;
  }
}
Questa é la funzione che dovrebbe creare l´array, ma in qualche modo non mi da l´ordine giusto dei numeri..

i primi due array sono composti da caratteri, ma poi sono stati trasformati in numeri.

questa é la funzione che stampa l´array( i primi due presi singolarmenti ,ovvero introddi nella funzione me li stampa giusti)
codice:
void printListOfIntegers(const char* prefix, int* list)
{
 printf("%s", prefix);
  int i = 0;
  while (list[i] != -1)
  {
   if (i > 0) printf(",");
   if (list[i] == 0)  i++;
    printf("%d", list[i]);
    i++;
  }
  printf("\n");
}
Questa é la funzione che dati i due array char, ne estrae i diversi numeri inseriti.
codice:
void parseListOfIntegers(const char* listAsString, int* list)
{
  int i = 0;
  int listSize = 0;
  int startOfLastNumber = 0;
  while (listAsString[i] != 0)
  {
if (listAsString[i] != ',' && listAsString[i] != 0  && listAsString[i] != '1' && listAsString[i] != '2' && listAsString[i] != '3' && listAsString[i] !='4'   && listAsString[i] !='5' && listAsString[i] !='6' && listAsString[i] !='7' && listAsString[i] !='8' && listAsString[i] != '9'&& listAsString[i] != '0' )
            {
     printf("The geven charachter is not allowed\n");
     printf("Input list 1 :\n");
     printf("Input list 2 :\n");
     exit(1);
    }
    if (listAsString[i] == ',' && listAsString[i+1] == ',')
    {
    printf("two and many ,one and after another decimal point are not allowed\n") ;
    exit(1);
    }
    if (listAsString[i] == ',' || listAsString[i+1] == 0)
    {
      list[listSize] =  atoi(listAsString + startOfLastNumber);
      startOfLastNumber = i + 1;
      listSize++;
    }
    i++;
  }
   list[listSize] = -1;
}
con questa funzione ho il seguente problema che se il valore di listsize supera quello di
MAX_LIST_SIZE allora il compilatore mi da errore.
Non riesco a capire dove devo correggere.

MAX_LIST_SIZE é uguale a 1000

infine qui ho la funzione main dove praticamente chiamo tutte le funzioni insieme e viene eseguito il programma

codice:
#include <stdlib.h>
#include <stdio.h>
#include "./ListProcessing.h"

// Process the given input lists. Lists are given in the form 45,23,4,129.
int main(int argc, char** argv)
{
 // Process the command line arguments.
  if (argc != 3)
  {
    printf("Usage: ./ListProcessingMain <list1> <list2>\n"
           "Each list is given as a comma-separated list of integers.\n");
    exit(1);
  }
  char* list1AsString = argv[1];
  char* list2AsString = argv[2];

  // Parse the lists and print them.
  int list1[MAX_LIST_SIZE + 1];
  int list2[MAX_LIST_SIZE + 1];
  int lista[MAX_LIST_SIZE + 1];

  parseListOfIntegers(list1AsString, list1);
  parseListOfIntegers(list2AsString, list2);
  printListOfIntegers("Input list 1 : ", list1);
  printListOfIntegers("Input list 2 : ", list2);
  interLeaveListOfIntegers(lista, list1,list2);
  printListOfIntegers("Input list 3 : ", lista);
}
so di essere piü o meno sulla strada giusta ma c´ho provato tutto il giorno ma niente da fare!
per programmare uso l editor di testo vim e linux consol!


grazie in anticipo!