"terminate called after throwing an instance of:'std::bad_alloc'

di Anonimizzato16718 il
6 risposte
Salve a tutti, ho recentemente scritto un programma il quale, prendendo da input n stringhe, avrebbe dovuto costruire una matrice le cui righe avrebbero dovuto essere formate dai caratteri della stringa.Se per esempio avessi inserito Paolo per esempio, la matrice sarebbe dovuta essere
p
a
o
l
o
Tuttavia una volta compilato ed eseguito, arrivato al punto di inserire le stringhe, una volta terminat l'inserimento, appare il seguente errore:"terminate called after throwing an instance of:'std::bad_alloc', allego il codice.

#include <iostream>
using namespace std;
main(void){

int n,max=0;
cout<<"Dammi n:";
cin>>n;
string vet[n];
for(int i=0;i<n;i++){
cout<<"Inserisci stringa:";
cin>>vet;
if(vet.length()>max)
max=vet.length();
}
string mat[max][n];
for(int j=0;j<max;j++){
for(int k=0;k<n;k++){
mat[j][k]=vet[j][k];
}
}
for(int y=0;y<max;y++){
for(int w=0;w<n;w++){
cout<<mat[y][w]<<"\n";
}
}
system("pause");
return 0;
}

6 Risposte

  • Quindi le for non sono corrette ... dovrebbero essere
    
    	for(int j=0;j<n;j++)
    	{
    		for(int k=0;k<max;k++)
    		{
    			mat[k][j]=vet[j][k];
    		}	
    	}
    
    P.S. Impara a postare con i tag CODE e indentando altrimenti il codice non si capisce ... non sei nuovo del forum, ci riesci?
  • oregon ha scritto:


    Quindi le for non sono corrette ... dovrebbero essere
    
    	for(int j=0;j<n;j++)
    	{
    		for(int k=0;k<max;k++)
    		{
    			mat[k][j]=vet[j][k];
    		}	
    	}
    
    P.S. Impara a postare con i tag CODE e indentando altrimenti il codice non si capisce ... non sei nuovo del forum, ci riesci?
    Si scusami in caso dovessi postare altro codice lo farò senza dubbio, in ogni caso adesso l'errore sussiste quando inserisco la stringa, solo che si blocca direttamente tutto il programma
  • oregon ha scritto:


    Quindi le for non sono corrette ... dovrebbero essere
    
    	for(int j=0;j<n;j++)
    	{
    		for(int k=0;k<max;k++)
    		{
    			mat[k][j]=vet[j][k];
    		}	
    	}
    
    P.S. Impara a postare con i tag CODE e indentando altrimenti il codice non si capisce ... non sei nuovo del forum, ci riesci?
    Okay scherzavo, ho rivisto e ora funziona perfettamente, grazie mille per il chiarimento, gentilissimo come al solito puoi chiudere ^^
  • Come al solito ... non si chiudono i thread ...
  • oregon ha scritto:


    Come al solito ... non si chiudono i thread ...
    Scusami tanto, è che sono iscritto si dal 2015, e ho letto il regolamento, ma non sono pratico ^^''
  • E sai che il crossposting è pure vietato, eppure posti in altri forum contemporaneamente ... (((
Devi accedere o registrarti per scrivere nel forum
6 risposte