Inquiridor
Erro "An unhandled exception of type 'System.StackOverflowException'"

Pergunta
-
Meu programa estava compilando normalmente sem nenhum erro. Depois fiz algumas modificações como acrescentar novas variáveis, isso fora do int main. E então o programa esta dando este erro: An unhandled exception of type 'System.StackOverflowException' occurred in Combinacoes_ultimas.exe.
Não sei solucionar isso, e gostaria de uma ajuda.
Meu programa, o programa para na linha 62:
#include<iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <cmath>
using namespace std;
struct resultado{
double soma1[10000];
double soma2[10000];
double valor1;
double valor2;
double combinacao;
};
struct solicitacao{
char esforco[100];
char unidade[20];
double carga_permanente;
double carga_variavel;
double yq;
double fator;
resultado Yg;
resultado r;
};
struct celula1{
solicitacao conteudo1;
celula1 *seg1;
};
struct celula2{
solicitacao conteudo2;
celula2 *seg2;
};
struct celula3{
solicitacao conteudo3;
celula3 *seg3;
};
void Esforco(char nome[], celula3 *lst3);
double stringToDouble(string s);
solicitacao Buscar_coeficiente_G(int num);
solicitacao Buscar_coeficiente_Q(int num);
double buscar_fator(int n);
void Insere_carga_permanente(double F, solicitacao y, celula1 *lst1);
void Insere_carga_variavel(double F, solicitacao y, celula2 *lst2);
void Insere_combinacoes(double F, celula3 *lst3);
void Grava_PERMANENTES(celula1 *lst1);
void Grava_VARIAVEL(celula2 *lst2);
solicitacao Soma(celula1 *lst1);
void Combinacoes(celula1 *lst1, celula2 *lst2, celula3 *lst3);
void Imprimir_Combinacoes(celula3 *lst);
int main(){
celula1 c1; //Cria o no cabeça
celula1 *lst1; //Cria um ponteiro para o cabeca
c1.seg1 = NULL; //Lista vazinha
lst1 = &c1; //Ponteiro aponta para o cabeca, sempre
celula2 c2; //Cria o no cabeça
celula2 *lst2; //Cria um ponteiro para o cabeca
c2.seg2 = NULL; //Lista vazinha
lst2 = &c2; //Ponteiro aponta para o cabeca, sempre
celula3 c3; //Cria o no cabeça
celula3 *lst3; //Cria um ponteiro para o cabeca
c3.seg3 = NULL; //Lista vazinha
lst3 = &c3; //Ponteiro aponta para o cabeca, sempre
char E[100];
int num1, num2;
double Fg, Fq;
cout << "COMBINACOES ULTIMAS NORMAIS DE SOLICITACOES\n\n";
while (1){
cout << "Forneca o tipo de esforco:";
cin >> E;
Esforco(E, lst3);
cout << "\n\nCARGAS PERMANENTES\n\n";
while (1){
cout << "\tTIPO DE ACAO SOLICITANTE:\n\t\t1-Peso proprio de estruturas metalicas;\n\t\t2-Peso proprio de estruturas pre-moldadas;";
cout << "\n\t\t3-Peso proprio de estruturas moldadas no local e de elementos construtivos industrializados e empuxos permanentes;";
cout << "\n\t\t4-Peso proprio de elementos construtivos industrializados com adicoes in loco;";
cout << "\n\t\t5-Peso proprio de elementos construtivos em geral e equipamentos;";
cout << "\n\t\t6-Acoes permanentes indiretas;\n\t\t7-Sair\n";
cin >> num1;
if (num1 == 7){
break;
}
if (num1 == 1){
solicitacao y = Buscar_coeficiente_G(num1);
cout << "\n\t\t\tCarga:";
cin >> Fg;
Insere_carga_permanente(Fg, y, lst1);
}
if (num1 == 2){
solicitacao y = Buscar_coeficiente_G(num1);
cout << "\n\t\t\tCarga:";
cin >> Fg;
Insere_carga_permanente(Fg, y, lst1);
}
if (num1 == 3){
solicitacao y = Buscar_coeficiente_G(num1);
cout << "\n\t\t\tCarga:";
cin >> Fg;
Insere_carga_permanente(Fg, y, lst1);
}
if (num1 == 4){
solicitacao y = Buscar_coeficiente_G(num1);
cout << "\n\t\t\tCarga:";
cin >> Fg;
Insere_carga_permanente(Fg, y, lst1);
}
if (num1 == 5){
solicitacao y = Buscar_coeficiente_G(num1);
cout << "\n\t\t\tCarga:";
cin >> Fg;
Insere_carga_permanente(Fg, y, lst1);
}
if (num1 == 6){
solicitacao y = Buscar_coeficiente_G(num1);
cout << "\n\t\t\tCarga:";
cin >> Fg;
Insere_carga_permanente(Fg, y, lst1);
}
}
int n;
cout << "\n\nCARGAS VARIAVEL\n\n:";
while (1){
cout << "\tTIPO DE ACAO SOLICITANTE:\n";
cout << "\t\t1-Efeito da temperatura;\n";
cout << "\t\t2-Acao do vento;\n";
cout << "\t\t3-Acoes truncadas;\n";
cout << "\t\t4-Demais acoes variaveis, incluindo as decorrentes do uso e ocupacao;";
cout << "\t\t5-Sair.\n";
cin >> num2;
if (num2 == 5){
break;
}
if (num2 == 1){
solicitacao y = Buscar_coeficiente_Q(num2);
y.fator = 0.6;
cout << "\n\t\t\tCarga:";
cin >> Fq;
Insere_carga_variavel(Fq, y, lst2);
}
if (num2 == 2){
solicitacao y = Buscar_coeficiente_Q(num2);
y.fator = 0.6;
cout << "\n\t\t\tCarga:";
cin >> Fq;
Insere_carga_variavel(Fq, y, lst2);
}
if (num2 == 3){
solicitacao y = Buscar_coeficiente_Q(num2);
while (1){
cout << "\nTipo de acao para determinar o fator de combinacao:\n";
cout << "\n1-Locais em que nao ha predominancia de pesos e de equipamentos que permanecem fixos por longos periodos de tempo, nem de elevadas concentracoes de pessoas;";
cout << "\n2-Locais em que ha predominancia de pesos e de equipamentos que permanecem fixos por longos periodos de tempo, ou de elevadas concentracoes de pessoas;";
cout << "\n3-Bibliotecas, arquivos, depositos, oficinas e garagens e sobrecargas em coberturas;";
cout << "\n4-Passarelas de pedestres;";
cout << "\n5-Vigas de rolamneto de pontes rolante;";
cout << "\n6-Pilares e outros elementos ou subestruturas que suportam vigas de rolamento de pontes rolantes;";
cin >> n;
y.fator = buscar_fator(n);
break;
}
cout << "\n\t\t\tCarga:";
cin >> Fq;
}
if (num2 == 4){
solicitacao y = Buscar_coeficiente_Q(num2);
while (1){
cout << "\nTipo de acao para determinar o fator de combinacao:\n";
cout << "\n1-Locais em que nao ha predominancia de pesos e de equipamentos que permanecem fixos por longos periodos de tempo, nem de elevadas concentracoes de pessoas;";
cout << "\n2-Locais em que ha predominancia de pesos e de equipamentos que permanecem fixos por longos periodos de tempo, ou de elevadas concentracoes de pessoas;";
cout << "\n3-Bibliotecas, arquivos, depositos, oficinas e garagens e sobrecargas em coberturas;";
cout << "\n4-Passarelas de pedestres;";
cout << "\n5-Vigas de rolamneto de pontes rolante;";
cout << "\n6-Pilares e outros elementos ou subestruturas que suportam vigas de rolamento de pontes rolantes;";
cin >> n;
y.fator = buscar_fator(n);
break;
}
cout << "\n\t\t\tCarga:";
cin >> Fq;
Insere_carga_variavel(Fq, y, lst2);
}
}
Grava_PERMANENTES(lst1);
Grava_VARIAVEL(lst2);
Combinacoes(lst1, lst2, lst3);
Imprimir_Combinacoes(lst3);
system("pause");
return 0;
}
}
void Esforco(char nome[], celula3 *lst3){
celula3 *nova;
nova = new celula3;
if (strcmp(nome, "Momento") == 0){
strcpy(nova->conteudo3.esforco, nome);
strcpy(nova->conteudo3.unidade, "kNm");
nova->seg3 = lst3->seg3;
lst3->seg3 = nova;
}
else{
strcpy(nova->conteudo3.esforco, nome);
strcpy(nova->conteudo3.unidade, "kN");
nova->seg3 = lst3->seg3;
lst3->seg3 = nova;
}
}
double stringToDouble(string s) {
// double myDouble = stod(s);
// return myDouble;
std::istringstream iss(s);
double myDouble;
iss >> myDouble;
return myDouble;
}
solicitacao Buscar_coeficiente_G(int num){
string line;
string parte[100];
int i = 1;
solicitacao r;
ifstream myfile("example.txt");
if (myfile.is_open()){
while (getline(myfile, line)){
parte[i] = line;
i++;
}
myfile.close();
}
r.Yg.valor1 = stringToDouble(parte[num]);
r.Yg.valor2 = 1.00;
cout << "\nOs coeficientes desta solicitacao: " << r.Yg.valor1 << " (" << r.Yg.valor2 << ")";
return r;
}
solicitacao Buscar_coeficiente_Q(int num){
string line;
string parte[100];
int i = 1;
solicitacao r;
ifstream myfile("example1.txt");
if (myfile.is_open()){
while (getline(myfile, line)){
parte[i] = line;
i++;
}
myfile.close();
}
r.yq = stringToDouble(parte[num]);
cout << "\nOs coeficientes desta solicitacao: " << r.yq;
return r;
}
double buscar_fator(int n){
string line;
string parte[100];
int i = 1;
double r;
ifstream myfile("fator.txt");
if (myfile.is_open()){
while (getline(myfile, line)){
parte[i] = line;
i++;
}
myfile.close();
}
r = stringToDouble(parte[n]);
cout << "\nO fator desta solicitacao: " << r;
return r;
}
void Insere_carga_permanente(double F, solicitacao y, celula1 *lst1){
celula1 *nova;
nova = new celula1;
nova->conteudo1.carga_permanente = F;
nova->conteudo1.Yg.valor1 = y.Yg.valor1;
nova->conteudo1.Yg.valor2 = y.Yg.valor2;
nova->seg1 = lst1->seg1;
lst1->seg1 = nova;
}
void Insere_carga_variavel(double F, solicitacao y, celula2 *lst2){
celula2 *nova;
nova = new celula2;
nova->conteudo2.carga_variavel = F;
nova->conteudo2.yq = y.yq;
nova->conteudo2.fator = y.fator;
nova->seg2 = lst2->seg2;
lst2->seg2 = nova;
}
void Insere_combinacoes(double F, celula3 *lst3){
celula3 *nova;
nova = new celula3;
nova->conteudo3.r.combinacao = F;
nova->seg3 = lst3->seg3;
lst3->seg3 = nova;
}
void Grava_PERMANENTES(celula1 *lst1){
celula1 *p;
ofstream myfile("carga_permanente.txt");
for (p = lst1->seg1; p != NULL; p = p->seg1){
myfile << p->conteudo1.carga_permanente << ": " << p->conteudo1.Yg.valor1 << "; " << p->conteudo1.Yg.valor2 << "\n";
}
myfile.close();
}
void Grava_VARIAVEL(celula2 *lst2){
celula2 *p;
ofstream myfile("carga_variavel.txt");
for (p = lst2->seg2; p != NULL; p = p->seg2){
myfile << p->conteudo2.carga_variavel << ": " << p->conteudo2.yq << "\n";
}
myfile.close();
}
solicitacao Soma(celula1 *lst1){
celula1 *p;
solicitacao r;
double sol1[100];
double sol2[100];
int c = 0;
for (p = lst1->seg1; p != NULL; p = p->seg1){
sol1[c] = (p->conteudo1.carga_permanente)*(p->conteudo1.Yg.valor1);
sol2[c] = (p->conteudo1.carga_permanente)*(p->conteudo1.Yg.valor2);
c++;
}
for (int i = 0; i < c; i++){
r.r.soma1[i] = sol1[i];
for (int j = 0; j < c; j++){
if (j == i){
r.r.soma1[i] = r.r.soma1[i];
}
else{
r.r.soma1[i] = r.r.soma1[i] + sol1[j];
}
}
}
for (int i = 0; i < c; i++){
r.r.soma1[i] = sol2[i];
for (int j = 0; j < c; j++){
if (j == i){
r.r.soma2[i] = r.r.soma2[i];
}
else{
r.r.soma2[i] = r.r.soma2[i] + sol1[j];
}
}
}
return r;
}
void Combinacoes(celula1 *lst1, celula2 *lst2, celula3 *lst3){
celula2 *q;
double sol[100];
double f[100];
double d;
solicitacao c = Soma(lst1);
resultado s;
int cont = 0;
for (q = lst2->seg2; q != NULL; q = q->seg2){
sol[cont] = (q->conteudo2.carga_variavel)*(q->conteudo2.yq);
cout << "\n" << sol[cont] << "\n";
f[cont] = q->conteudo2.fator;
cont++;
}
for (int i = 0; i < cont; i++){
s.combinacao = c.r.soma1[i] + sol[i];
for (int t = 0; t < cont; t++){
if (t != i){
s.combinacao = s.combinacao + sol[t] * f[t];
}
else{
s.combinacao = s.combinacao;
}
}
d = s.combinacao;
Insere_combinacoes(d, lst3);
}
for (int i = 0; i < cont; i++){
s.combinacao = c.r.soma2[i] + sol[i];
for (int t = 0; t < cont; t++){
if (t != i){
s.combinacao = s.combinacao + sol[t] * f[t];
}
else{
s.combinacao = s.combinacao;
}
}
d = s.combinacao;
Insere_combinacoes(d, lst3);
}
for (int i = 0; i < cont; i++){
s.combinacao = c.r.soma1[i] + sol[i];
d = s.combinacao;
Insere_combinacoes(d, lst3);
}
for (int i = 0; i < cont; i++){
s.combinacao = c.r.soma2[i] + sol[i];
d = s.combinacao;
Insere_combinacoes(d, lst3);
}
}
void Imprimir_Combinacoes(celula3 *lst3){
celula3 *p;
int cont = 0;
double v[1000];
double mx, mn;
mn = 0;
cout << "\n\nCOMBINACAO\n\n";
ofstream myfile("combinacao.txt");
for (p = lst3->seg3; p != NULL; p = p->seg3){
cout << p->conteudo3.r.combinacao << " " << p->conteudo3.unidade << "\n";
myfile << p->conteudo3.r.combinacao << " " << p->conteudo3.unidade << "\n";
cont++;
}
for (int a = 0; a<cont; a++){
mn = v[a];
if (v[a]>mx){
mx = v[a];
}
else if (v[a]<0){
mn = v[a];
}
}
cout << "A solicitacao atuante:" << mx << " " << p->conteudo3.unidade << "; " << mn;
myfile.close();
}
Todas as Respostas
-
-
#include<iostream> #include <fstream> #include <sstream> #include <string> #include <cmath> using namespace std; struct resultado{ double soma1[10000]; double soma2[10000]; double valor1; double valor2; double combinacao; }; struct solicitacao{ char esforco[100]; char unidade[20]; double carga_permanente; double carga_variavel; double yq; double fator; resultado Yg; resultado r; }; struct celula1{ solicitacao conteudo1; celula1 *seg1; }; struct celula2{ solicitacao conteudo2; celula2 *seg2; }; struct celula3{ solicitacao conteudo3; celula3 *seg3; }; void Esforco(char nome[], celula3 *lst3); double stringToDouble(string s); solicitacao Buscar_coeficiente_G(int num); solicitacao Buscar_coeficiente_Q(int num); double buscar_fator(int n); void Insere_carga_permanente(double F, solicitacao y, celula1 *lst1); void Insere_carga_variavel(double F, solicitacao y, celula2 *lst2); void Insere_combinacoes(double F, celula3 *lst3); void Grava_PERMANENTES(celula1 *lst1); void Grava_VARIAVEL(celula2 *lst2); solicitacao Soma(celula1 *lst1); void Combinacoes(celula1 *lst1, celula2 *lst2, celula3 *lst3); void Imprimir_Combinacoes(celula3 *lst); int main(){ celula1 c1; celula1 *lst1; c1.seg1 = NULL; //PROGRAMA PARA AQUI lst1 = &c1; celula2 c2; celula2 *lst2; c2.seg2 = NULL; lst2 = &c2; celula3 c3; celula3 *lst3; c3.seg3 = NULL; lst3 = &c3; char E[100]; int num1, num2; double Fg, Fq; cout << "COMBINACOES ULTIMAS NORMAIS DE SOLICITACOES\n\n"; while (1){ cout << "Forneca o tipo de esforco:"; cin >> E; Esforco(E, lst3); cout << "\n\nCARGAS PERMANENTES\n\n"; while (1){ cout << "\tTIPO DE ACAO SOLICITANTE:\n\t\t1-Peso proprio de estruturas metalicas;\n\t\t2-Peso proprio de estruturas pre-moldadas;"; cout << "\n\t\t3-Peso proprio de estruturas moldadas no local e de elementos construtivos industrializados e empuxos permanentes;"; cout << "\n\t\t4-Peso proprio de elementos construtivos industrializados com adicoes in loco;"; cout << "\n\t\t5-Peso proprio de elementos construtivos em geral e equipamentos;"; cout << "\n\t\t6-Acoes permanentes indiretas;\n\t\t7-Sair\n"; cin >> num1; if (num1 == 7){ break; } if (num1 == 1){ solicitacao y = Buscar_coeficiente_G(num1); cout << "\n\t\t\tCarga:"; cin >> Fg; Insere_carga_permanente(Fg, y, lst1); } if (num1 == 2){ solicitacao y = Buscar_coeficiente_G(num1); cout << "\n\t\t\tCarga:"; cin >> Fg; Insere_carga_permanente(Fg, y, lst1); } if (num1 == 3){ solicitacao y = Buscar_coeficiente_G(num1); cout << "\n\t\t\tCarga:"; cin >> Fg; Insere_carga_permanente(Fg, y, lst1); } if (num1 == 4){ solicitacao y = Buscar_coeficiente_G(num1); cout << "\n\t\t\tCarga:"; cin >> Fg; Insere_carga_permanente(Fg, y, lst1); } if (num1 == 5){ solicitacao y = Buscar_coeficiente_G(num1); cout << "\n\t\t\tCarga:"; cin >> Fg; Insere_carga_permanente(Fg, y, lst1); } if (num1 == 6){ solicitacao y = Buscar_coeficiente_G(num1); cout << "\n\t\t\tCarga:"; cin >> Fg; Insere_carga_permanente(Fg, y, lst1); } } int n; cout << "\n\nCARGAS VARIAVEL\n\n:"; while (1){ cout << "\tTIPO DE ACAO SOLICITANTE:\n"; cout << "\t\t1-Efeito da temperatura;\n"; cout << "\t\t2-Acao do vento;\n"; cout << "\t\t3-Acoes truncadas;\n"; cout << "\t\t4-Demais acoes variaveis, incluindo as decorrentes do uso e ocupacao;"; cout << "\t\t5-Sair.\n"; cin >> num2; if (num2 == 5){ break; } if (num2 == 1){ solicitacao y = Buscar_coeficiente_Q(num2); y.fator = 0.6; cout << "\n\t\t\tCarga:"; cin >> Fq; Insere_carga_variavel(Fq, y, lst2); } if (num2 == 2){ solicitacao y = Buscar_coeficiente_Q(num2); y.fator = 0.6; cout << "\n\t\t\tCarga:"; cin >> Fq; Insere_carga_variavel(Fq, y, lst2); } if (num2 == 3){ solicitacao y = Buscar_coeficiente_Q(num2); while (1){ cout << "\nTipo de acao para determinar o fator de combinacao:\n"; cout << "\n1-Locais em que nao ha predominancia de pesos e de equipamentos que permanecem fixos por longos periodos de tempo, nem de elevadas concentracoes de pessoas;"; cout << "\n2-Locais em que ha predominancia de pesos e de equipamentos que permanecem fixos por longos periodos de tempo, ou de elevadas concentracoes de pessoas;"; cout << "\n3-Bibliotecas, arquivos, depositos, oficinas e garagens e sobrecargas em coberturas;"; cout << "\n4-Passarelas de pedestres;"; cout << "\n5-Vigas de rolamneto de pontes rolante;"; cout << "\n6-Pilares e outros elementos ou subestruturas que suportam vigas de rolamento de pontes rolantes;"; cin >> n; y.fator = buscar_fator(n); break; } cout << "\n\t\t\tCarga:"; cin >> Fq; } if (num2 == 4){ solicitacao y = Buscar_coeficiente_Q(num2); while (1){ cout << "\nTipo de acao para determinar o fator de combinacao:\n"; cout << "\n1-Locais em que nao ha predominancia de pesos e de equipamentos que permanecem fixos por longos periodos de tempo, nem de elevadas concentracoes de pessoas;"; cout << "\n2-Locais em que ha predominancia de pesos e de equipamentos que permanecem fixos por longos periodos de tempo, ou de elevadas concentracoes de pessoas;"; cout << "\n3-Bibliotecas, arquivos, depositos, oficinas e garagens e sobrecargas em coberturas;"; cout << "\n4-Passarelas de pedestres;"; cout << "\n5-Vigas de rolamneto de pontes rolante;"; cout << "\n6-Pilares e outros elementos ou subestruturas que suportam vigas de rolamento de pontes rolantes;"; cin >> n; y.fator = buscar_fator(n); break; } cout << "\n\t\t\tCarga:"; cin >> Fq; Insere_carga_variavel(Fq, y, lst2); } } Grava_PERMANENTES(lst1); Grava_VARIAVEL(lst2); Combinacoes(lst1, lst2, lst3); Imprimir_Combinacoes(lst3); system("pause"); return 0; } } void Esforco(char nome[], celula3 *lst3){ celula3 *nova; nova = new celula3; if (strcmp(nome, "Momento") == 0){ strcpy(nova->conteudo3.esforco, nome); strcpy(nova->conteudo3.unidade, "kNm"); nova->seg3 = lst3->seg3; lst3->seg3 = nova; } else{ strcpy(nova->conteudo3.esforco, nome); strcpy(nova->conteudo3.unidade, "kN"); nova->seg3 = lst3->seg3; lst3->seg3 = nova; } } double stringToDouble(string s) { // double myDouble = stod(s); // return myDouble; std::istringstream iss(s); double myDouble; iss >> myDouble; return myDouble; } solicitacao Buscar_coeficiente_G(int num){ string line; string parte[100]; int i = 1; solicitacao r; ifstream myfile("example.txt"); if (myfile.is_open()){ while (getline(myfile, line)){ parte[i] = line; i++; } myfile.close(); } r.Yg.valor1 = stringToDouble(parte[num]); r.Yg.valor2 = 1.00; cout << "\nOs coeficientes desta solicitacao: " << r.Yg.valor1 << " (" << r.Yg.valor2 << ")"; return r; } solicitacao Buscar_coeficiente_Q(int num){ string line; string parte[100]; int i = 1; solicitacao r; ifstream myfile("example1.txt"); if (myfile.is_open()){ while (getline(myfile, line)){ parte[i] = line; i++; } myfile.close(); } r.yq = stringToDouble(parte[num]); cout << "\nOs coeficientes desta solicitacao: " << r.yq; return r; } double buscar_fator(int n){ string line; string parte[100]; int i = 1; double r; ifstream myfile("fator.txt"); if (myfile.is_open()){ while (getline(myfile, line)){ parte[i] = line; i++; } myfile.close(); } r = stringToDouble(parte[n]); cout << "\nO fator desta solicitacao: " << r; return r; } void Insere_carga_permanente(double F, solicitacao y, celula1 *lst1){ celula1 *nova; nova = new celula1; nova->conteudo1.carga_permanente = F; nova->conteudo1.Yg.valor1 = y.Yg.valor1; nova->conteudo1.Yg.valor2 = y.Yg.valor2; nova->seg1 = lst1->seg1; lst1->seg1 = nova; } void Insere_carga_variavel(double F, solicitacao y, celula2 *lst2){ celula2 *nova; nova = new celula2; nova->conteudo2.carga_variavel = F; nova->conteudo2.yq = y.yq; nova->conteudo2.fator = y.fator; nova->seg2 = lst2->seg2; lst2->seg2 = nova; } void Insere_combinacoes(double F, celula3 *lst3){ celula3 *nova; nova = new celula3; nova->conteudo3.r.combinacao = F; nova->seg3 = lst3->seg3; lst3->seg3 = nova; } void Grava_PERMANENTES(celula1 *lst1){ celula1 *p; ofstream myfile("carga_permanente.txt"); for (p = lst1->seg1; p != NULL; p = p->seg1){ myfile << p->conteudo1.carga_permanente << ": " << p->conteudo1.Yg.valor1 << "; " << p->conteudo1.Yg.valor2 << "\n"; } myfile.close(); } void Grava_VARIAVEL(celula2 *lst2){ celula2 *p; ofstream myfile("carga_variavel.txt"); for (p = lst2->seg2; p != NULL; p = p->seg2){ myfile << p->conteudo2.carga_variavel << ": " << p->conteudo2.yq << "\n"; } myfile.close(); } solicitacao Soma(celula1 *lst1){ celula1 *p; solicitacao r; double sol1[100]; double sol2[100]; int c = 0; for (p = lst1->seg1; p != NULL; p = p->seg1){ sol1[c] = (p->conteudo1.carga_permanente)*(p->conteudo1.Yg.valor1); sol2[c] = (p->conteudo1.carga_permanente)*(p->conteudo1.Yg.valor2); c++; } for (int i = 0; i < c; i++){ r.r.soma1[i] = sol1[i]; for (int j = 0; j < c; j++){ if (j == i){ r.r.soma1[i] = r.r.soma1[i]; } else{ r.r.soma1[i] = r.r.soma1[i] + sol1[j]; } } } for (int i = 0; i < c; i++){ r.r.soma1[i] = sol2[i]; for (int j = 0; j < c; j++){ if (j == i){ r.r.soma2[i] = r.r.soma2[i]; } else{ r.r.soma2[i] = r.r.soma2[i] + sol1[j]; } } } return r; } void Combinacoes(celula1 *lst1, celula2 *lst2, celula3 *lst3){ celula2 *q; double sol[100]; double f[100]; double d; solicitacao c = Soma(lst1); resultado s; int cont = 0; for (q = lst2->seg2; q != NULL; q = q->seg2){ sol[cont] = (q->conteudo2.carga_variavel)*(q->conteudo2.yq); cout << "\n" << sol[cont] << "\n"; f[cont] = q->conteudo2.fator; cont++; } for (int i = 0; i < cont; i++){ s.combinacao = c.r.soma1[i] + sol[i]; for (int t = 0; t < cont; t++){ if (t != i){ s.combinacao = s.combinacao + sol[t] * f[t]; } else{ s.combinacao = s.combinacao; } } d = s.combinacao; Insere_combinacoes(d, lst3); } for (int i = 0; i < cont; i++){ s.combinacao = c.r.soma2[i] + sol[i]; for (int t = 0; t < cont; t++){ if (t != i){ s.combinacao = s.combinacao + sol[t] * f[t]; } else{ s.combinacao = s.combinacao; } } d = s.combinacao; Insere_combinacoes(d, lst3); } for (int i = 0; i < cont; i++){ s.combinacao = c.r.soma1[i] + sol[i]; d = s.combinacao; Insere_combinacoes(d, lst3); } for (int i = 0; i < cont; i++){ s.combinacao = c.r.soma2[i] + sol[i]; d = s.combinacao; Insere_combinacoes(d, lst3); } } void Imprimir_Combinacoes(celula3 *lst3){ celula3 *p; int cont = 0; double v[1000]; double mx, mn; mn = 0; cout << "\n\nCOMBINACAO\n\n"; ofstream myfile("combinacao.txt"); for (p = lst3->seg3; p != NULL; p = p->seg3){ cout << p->conteudo3.r.combinacao << " " << p->conteudo3.unidade << "\n"; myfile << p->conteudo3.r.combinacao << " " << p->conteudo3.unidade << "\n"; cont++; } for (int a = 0; a<cont; a++){ mn = v[a]; if (v[a]>mx){ mx = v[a]; } else if (v[a]<0){ mn = v[a]; } } cout << "A solicitacao atuante:" << mx << " " << p->conteudo3.unidade << "; " << mn; myfile.close(); }