Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Arrays Programma
Forum - C/C++ - Arrays Programma

Avatar
DarioBaldini (Normal User)
Newbie


Messaggi: 4
Iscritto: 13/05/2010

Segnala al moderatore
Postato alle 21:46
Giovedì, 13/05/2010
Questo topic è stato chiuso dal moderatore

Ciao a tutti , ho il seguente problema con la seguente funzione

Codice sorgente - presumibilmente C++

  1. void parseListOfIntegers(const char* listAsString, int* list)
  2. {
  3.  
  4.   int i = 0;
  5.   int listSize = 0;
  6.   int startOfLastNumber = 0;
  7.   while (listAsString[i] != 0)
  8.   {
  9. 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' )
  10.     {  
  11.      printf("Input list 1 :\n");
  12.      printf("Input list 2 :\n");
  13.      exit(1);
  14.     }
  15.     if (listAsString[i] == ',' || listAsString[i+1] == 0)
  16.     {
  17.       list[listSize] =  atoi(listAsString + startOfLastNumber);
  18.       if (list[listSize] >  MAX_LIST_SIZE )
  19.       exit(1);
  20.       startOfLastNumber = i + 1;
  21.       listSize++;
  22.     }
  23.     i++;
  24.   }
  25.   list[listSize] = -1;
  26. }


Io programmo usando vim e linux. Lo scopo del programma é quello, che digitando due serie di numeri vengano fatte alcune operazioni con essi.

Faccio un esempio ./listProcessing 111,11,11,1,1,1spazio2,3,4,5,7,89
(usando consol di linux          

le serie di numeri in questo caso sono due e vengono separate fra di loro con lo spazio
la virgola é ammessa e divide i numeri delle serie
es: spazio,spazio num, num , spazio num, num ecc

lo spazio prima della prima seriedopo la seconda serie  é ammesso e puö essere anche piü volte immesso.

quello che non riesco  a capire é perché se io digito un numero con piü di undici cifre, il compilatore mi da errore o meglio un numero a caso:pat:

Ultima modifica effettuata da DarioBaldini il 13/05/2010 alle 22:10
PM
Avatar
DarioBaldini (Normal User)
Newbie


Messaggi: 4
Iscritto: 13/05/2010

Segnala al moderatore
Postato alle 21:48
Giovedì, 13/05/2010
Codice sorgente - presumibilmente C++

  1. void printListOfIntegers(const char* prefix, int* list)
  2. {
  3.  printf("%s", prefix);
  4.   int i = 0;
  5.   while (list[i] != -1)
  6.   {
  7.    if (i > 0) printf(",");
  8.     printf("%d", list[i]);
  9.     i++;
  10.   }
  11.   printf("\n");
  12. }


Questa é la funzione che stampa le due lIste o (serie) di numeri

Ultima modifica effettuata da DarioBaldini il 13/05/2010 alle 22:09
PM
Avatar
DarioBaldini (Normal User)
Newbie


Messaggi: 4
Iscritto: 13/05/2010

Segnala al moderatore
Postato alle 21:49
Giovedì, 13/05/2010
c++
Codice sorgente - presumibilmente Delphi

  1. const int MAX_LIST_SIZE = 1000;
  2.  
  3. // Parse the string given in the first argument, for example: 23,6,77. The
  4. // result list is terminated by an element with value -1. Regular elements are
  5. // supposed to be non-negative.
  6. void parseListOfIntegers(const char* listAsString, int* list);
  7.  
  8. // Print the given list of integers, with the given prefix prepended.
  9. void printListOfIntegers(const char* prefix, int* list);



Qui invece é il file. h dove ho dichiarato tutte le funzioni

Ultima modifica effettuata da DarioBaldini il 13/05/2010 alle 22:11
PM
Avatar
DarioBaldini (Normal User)
Newbie


Messaggi: 4
Iscritto: 13/05/2010

Segnala al moderatore
Postato alle 21:54
Giovedì, 13/05/2010
Infine qua ho la funzione principale :
Codice sorgente - presumibilmente C++

  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include "./ListProcessing.h"
  4.  
  5. // Process the given input lists. Lists are given in the form 45,23,4,129.
  6. int main(int argc, char** argv)
  7. {
  8.   // Process the command line arguments.
  9.   if (argc != 3)
  10.   {
  11.     printf("Usage: ./ListProcessingMain <list1> <list2>\n"
  12.            "Each list is given as a comma-separated list of integers.\n");
  13.     exit(1);
  14.   }
  15.   char* list1AsString = argv[1];
  16.   char* list2AsString = argv[2];
  17.  
  18.   // Parse the lists and print them.
  19.   int list1[MAX_LIST_SIZE + 1];
  20.   int list2[MAX_LIST_SIZE + 1];
  21.   parseListOfIntegers(list1AsString, list1);
  22.   parseListOfIntegers(list2AsString, list2);
  23.   printListOfIntegers("Input list 1 : ", list1);
  24.   printListOfIntegers("Input list 2 : ", list2);
  25. }



EDIT by HeDo:
Codice senza tag code TRIPLO POSTING, ma dove siamo? locko immediatamente e sei pregato di riaprire il thread dopo aver letto il regolamento

http://www.pierotofy.it/pages/extras/forum/2/78115-leggere ...


Ultima modifica effettuata da DarioBaldini il 13/05/2010 alle 22:14
PM