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

di
Anonimizzato16718
il
6 risposte

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

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

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

    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?
  • Re: "terminate called after throwing an instance of:'std::bad_alloc'

    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
  • Re: "terminate called after throwing an instance of:'std::bad_alloc'

    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 ^^
  • Re: "terminate called after throwing an instance of:'std::bad_alloc'

    Come al solito ... non si chiudono i thread ...
  • Re: "terminate called after throwing an instance of:'std::bad_alloc'

    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 ^^''
  • Re: "terminate called after throwing an instance of:'std::bad_alloc'

    E sai che il crossposting è pure vietato, eppure posti in altri forum contemporaneamente ... (((
Devi accedere o registrarti per scrivere nel forum
6 risposte