Visualizzazione dei risultati da 1 a 5 su 5

Discussione: [C++] Somma vettoriale

  1. #1

    C++ Somma vettoriale

    Ciao ragazzi,
    abuso ancore della vostra gentilezza per un problema che sto riscontrando con un programmino in c++ che serve a sommare due vettori.
    Il programma ti permette di scegliere il numero di elementi dei vettori e poi chiede di inserire i valori delle componenti dei due vettori. In seguito li somma tra di loro e restitiusce il vettore somma.
    Il problema nasce dai vettori con dimensione > 5. Quando faccio la somma dei vettori ad ese
    [1, 2, 3, 4,5 ] e [1,2,3,4,5] mi restituisce come risultato [ [2, 4, 6, 8, 1.91852e-41]. Come potete vedere l'ultimo risultato ê anomalo.

    In seguito trovate il codice. Sicuro che si tratti del solito errore banale, vi ringrazio in anticipo.

    codice:
    #include <iostream>
    using namespace std;
    
    int main (){
    
    	int n, i;
    	float * a = new float;
    	float * b = new float;
    	float * c = new float;
    	float multiplication;
    
    		cout << "Number of elements of the vectors: ";
    		cin >> n;
    		
    		for(i=0;i<n;i++){
    		
    			cout << "Insert the element "<< i + 1 << " of the vector a: ";
    			cin >> a[i];
    		
    		}
    		
    		for(i=0;i<n;i++){
    		
    			cout << "Insert the element "<< i + 1<< " of the vector b: ";
    			cin >> b[i];
    
    		}	
    				
    			
    		for(i=0;i<n;i++){
    		
    			c[i]= a[i] + b[i];
    
    		}
    
    	cout << "The sum of the two vectors is the vector: [";
    		
    			for(i=0;i<n;i++){
    		
    				cout << " " << c[i] << " ";
    
    			}	
    			
    		cout << " ]";
    
    		delete a;
    		delete b;
    		delete c;
    		
    		
    
    		
    		return 0;
    
    }
    http://www.newsol.ch
    "I'm so sorry"
    Mario Corti, CEO Swissair, 2 Ottobre 2001
    La crisi della società Swissair è culminata con il "grounding" dell’intera flotta aerea nei primi giorni del mese di ottobre 2001.

  2. #2
    Utente di HTML.it L'avatar di ibykos
    Registrato dal
    Feb 2005
    Messaggi
    201
    I puntatori non sono vettori.
    Potresti dichiarare a, b, e c come segue:

    codice:
    #define MAX 100
    
    float a[MAX],
          b[MAX],
          c[MAX];
    Oppure allocare la memoria necessaria con una funzione apposita

    codice:
    float * a = ( float * ) malloc ((sizeof float)*nElementi);

  3. #3
    Ma quindi io devo sempre dichiarare la dimensione dell'array?
    http://www.newsol.ch
    "I'm so sorry"
    Mario Corti, CEO Swissair, 2 Ottobre 2001
    La crisi della società Swissair è culminata con il "grounding" dell’intera flotta aerea nei primi giorni del mese di ottobre 2001.

  4. #4
    Utente di HTML.it L'avatar di ibykos
    Registrato dal
    Feb 2005
    Messaggi
    201
    Per usare dello spazio lo devi prima dichiarare.
    Quando sei certo che il vettore occuperà uno spazio picoclo, conviene utilizzare una #define MAX.
    Quando il numero di elementi è impredicibile e teoricamente infinito si usano le funzioni di allocazione della memoria:

    codice:
    int * a
    
    /*scopro che a ha dimensione n*/
    
    a= (int *) malloc (sizeof(int)*n);
    
    /*ora posso inserire elementi in a*/
    
    /*poi scopro che mi serve altro m spazio*/
    
    realloc (a,sizeof(int)*m);

  5. #5
    ok grazie mille! Esercizi di info inviati al mio assistente

    Ciaoooo
    http://www.newsol.ch
    "I'm so sorry"
    Mario Corti, CEO Swissair, 2 Ottobre 2001
    La crisi della società Swissair è culminata con il "grounding" dell’intera flotta aerea nei primi giorni del mese di ottobre 2001.

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.