Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    c++: programma in crash!

    ciao a tutti,
    ho creato questo semplice algoritmo che permetta all'utente di caricare due
    distinti vettori di interi e, con essi, ne costruisce un terzo le cui
    componenti sono uguali a quelle dei due vettori intervallati tra loro, ad
    esempio:

    Input:
    Primo vettore: 1 4 3 7 6
    Secondo Vettore: 5 4 8 6 3 4 4

    Output:
    Terzo vettore: 1 5 4 4 3 8 7 6 6 3 4 4

    Il programma compila ma va in crash al momento di eseguire il ciclo che
    copia i valori nel terzo vettore :-(( ecco il codice:

    codice:
    #include <iostream>
    #include <string>
    int main(int argc, char *argv[])
    { const int n=6 ;
      const int m=7;
      const int l=13;
    
      int i, veta[n], j;
      int vetb[m];
      int h,vetc[l];
      cout<<"Inserire i valori di vet1\n";
      for (i=0; i<n; i++)
      {
      cout<<"veta["<<i<<"]:";
      cin>>veta[i];
      }
      cout<<"inserire i valori di vet2\n";
      for (j=0; j<m; j++)
      {
      cout<<"vet2["<<j<<"]:";
      cin>> vetb[j];
      }
      for (i=0; i<n; i++)
        {
        vetc[h]=veta[i];
        h=h+2;
        }
      for (j=1; j<m; j++)
        {
        vetc[h]=vetb[j];
        h=h+2;
        }
      for (h=0; h<l; h++)
        {
        cout<<"\nvet3["<<h<<"]:"<<vetc[h];
        }
        system("PAUSE");
      return 0;
    }
    "Ogni artista è un cannibale, ogni poeta è un ladro
    tutti uccidono la loro ispirazione poi cantano del loro dolore "

  2. #2
    up!
    "Ogni artista è un cannibale, ogni poeta è un ladro
    tutti uccidono la loro ispirazione poi cantano del loro dolore "

  3. #3
    controlla vetb c'è un errore di sistassi (distrazione)
    nel ciclo for... vet2 dove lo prendi????
    ...Terrible warlords, good warlords, and an english song

  4. #4
    ok...ma quello è ininfluente...è solo un output...
    "Ogni artista è un cannibale, ogni poeta è un ladro
    tutti uccidono la loro ispirazione poi cantano del loro dolore "

  5. #5
    Si infatti hai ragine tu!! :gren:

    CMQ non è logico il ciclo che si "sposta di 2"
    tra i campi dell'arrayC
    ...Terrible warlords, good warlords, and an english song

  6. #6
    Inizializza h a 0 prima del ciclo
    codice:
    for (i=0; i<n; i++)
        {
        vetc[h]=veta[i];
        h=h+2;
        }
    e ri-inizializza h a 1 prima del ciclo
    codice:
    for (j=1; j<m; j++)
        {
        vetc[h]=vetb[j];
        h=h+2;
        }
    (dove, tra l'altro, j dovrebbe essere inizializzato a 0, non a 1)

  7. #7
    Originariamente inviato da Johnny_Depp
    Si infatti hai ragine tu!! :gren:

    CMQ non è logico il ciclo che si "sposta di 2"
    tra i campi dell'arrayC
    come non è logico??? :master:
    "Ogni artista è un cannibale, ogni poeta è un ladro
    tutti uccidono la loro ispirazione poi cantano del loro dolore "

  8. #8
    Originariamente inviato da lorenzo-dsy
    Inizializza h a 0 prima del ciclo
    codice:
    for (i=0; i<n; i++)
        {
        vetc[h]=veta[i];
        h=h+2;
        }
    e ri-inizializza h a 1 prima del ciclo
    codice:
    for (j=1; j<m; j++)
        {
        vetc[h]=vetb[j];
        h=h+2;
        }
    (dove, tra l'altro, j dovrebbe essere inizializzato a 0, non a 1)
    Grazie mille!!!! Funziona!!! Come mai però andava in crash???

    "Ogni artista è un cannibale, ogni poeta è un ladro
    tutti uccidono la loro ispirazione poi cantano del loro dolore "

  9. #9
    Originariamente inviato da elevation
    Come mai però andava in crash???
    Quando dichiari una variabile in c/c++, questa non viene inizializzata a un valore di default come accade per altri linguaggi.
    Quindi, finché non le assegni un valore tu, la variabile può assumerne uno qualsiasi.

    Al momento dell'esecuzione di "vetc[h]" h non aveva alcun valore sensato, quindi il programma cercava di accedere a una posizione del vettore che non esiste, generando un errore.

    Il fatto che poi il programma andasse in crash dipende dal sistema operativo, e da come gestisce la memoria.

  10. #10
    capito. Si in effetti lavoro su XP creando delle console application con DEV C++...

    ciao e grazie ancora!

    "Ogni artista è un cannibale, ogni poeta è un ladro
    tutti uccidono la loro ispirazione poi cantano del loro dolore "

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.