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.
Questa é la funzione che dovrebbe creare l´array, ma in qualche modo non mi da l´ordine giusto dei numeri..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++; } }
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)
Questa é la funzione che dati i due array char, ne estrae i diversi numeri inseriti.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"); }
con questa funzione ho il seguente problema che se il valore di listsize supera quello dicodice: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; }
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
so di essere piü o meno sulla strada giusta ma c´ho provato tutto il giorno ma niente da fare!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); }
per programmare uso l editor di testo vim e linux consol!
grazie in anticipo!![]()

Rispondi quotando
