Ask Question

Name:
Title:
Your Question:

Answer Question

Name:
Your Answer:
User Submitted Source Code!


Description:
  as
Language: C/C++
Code:
/* 
 * File:   main.cpp
 * Author: Mohamed Lakdimi
 *
 * Created on 9 de junio de 2019, 22:05
 */


#include <iostream>
#include<math.h> 
using namespace std;



int main(){
    
    
int a, b, c, a6, b6, c6, a12, b12, c12;
int tur_1, tur_6, tur_12, total_hilos, num_hilos, peso_cuerda, peso_real;
int dif_hilo, dif_tur, actual, calcul, sol, fi;
int x, y, z, mult_min;
int df_1,df_2,df_3,df_max, max_hilo, max_tur, sol_impr;
int bob, lim_1, lim_6, lim_12;
int i, j, k, n, salta;

float diam, radio_hilo, peso_hilo, Seccio, R, PxR;
bool lim_bob;


sol=0;

cout << "1- Numero hilos multifilar: "<<endl;
cout << "    M1:  ";
cin >> x;
cout << "    M2:  ";
cin >> y;
cout << "    M3:  ";
cin >> z;

// Calcul multifilar mínim
if (x<y && x<y){
    mult_min=x;
}
if (y<x && y<z){
        mult_min=y;
}
if (z<x && z<y){
            mult_min=z;
}


cout << "2- Diametro de los hilos: ";
cin >> diam;
radio_hilo=diam/2;
peso_hilo=28.14*radio_hilo*radio_hilo;

cout << "2- Introduce peso cuerda en [g/m]: ";
cin >> peso_cuerda;
num_hilos=peso_cuerda/peso_hilo;

cout << "    ( El numero de hilos es: "<<num_hilos<<" )"<<endl;
bob = ceil(num_hilos/(mult_min*19.0)); // Arrodoneix bobines maximes a vlaor superior

cout << "3- Cuantos hilos de diferencia puede aceptar? ";
cin >> max_hilo;
cout << "4- Que diferencia de hilos entre turones 1-6-12 puedes aceptar como maximo? ";
cin >> max_tur;
cout << "5- Cuantas soluciones quieres ver? (se recomienda poner pocas y si no te gustan poner mas) ";
cin >> sol_impr;

n=sol_impr;
int matriu[n][3];

for (i=0; i<n; i++){
    
    for (j=0; j<3; j++){
        matriu[i][j]=0;
    }

}


cout << "             ...calculando... "<< endl;
cout <<endl;

cout<<"                                |   Multifilares: "<<x<<"-"<<y<<"-"<<z<<"      "<<endl;
cout<<" t1   t6  t12   Hilos  df  Peso | tur_1     tur_6     tur_12      "<<endl;
cout<<"-----------------------------------------------------------------------------------------"<<endl;


for (dif_hilo=0 ; dif_hilo <=max_hilo; dif_hilo++){
      //  cout << "---------------------------------------- "<< num_hilos << " +/- " << dif_hilo << " hilos" << endl;

    for (dif_tur=0 ; dif_tur <= max_tur ; dif_tur++){

        //cout << "************** " << dif_tur << endl;

         
          for (a=0 ; a <= bob ; a++){
               for (b=0 ; b <= bob ; b++){
                    for (c=0 ; c <= bob ; c++){
                         for (a6=0 ; a6 <= bob ; a6++){
                              for (b6=0 ; b6 <= bob ; b6++){
                                   for (c6=0 ; c6 <= bob ; c6++){
                                        for (a12=0 ; a12 <= bob ; a12++){
                                             for (b12=0 ; b12 <= bob ; b12++){
                                                  for (c12=0 ; c12 <= bob ; c12++){
          
          tur_1=a*x+b*y+c*z;
          tur_6=a6*x+b6*y+c6*z;
          tur_12=a12*x+b12*y+c12*z;
          total_hilos=tur_1*1+tur_6*6+tur_12*12;
          actual = total_hilos - num_hilos;
          calcul = abs(actual);
          peso_real=total_hilos*peso_hilo;

                 
                // Calcul resistencia electrica i PxR
                    Seccio=total_hilos*(3.1416*radio_hilo*radio_hilo);
                    R=1000*(0.0172/Seccio);
                    PxR=peso_real*R;
          
          // Calculo diferencia entre turones
          df_1=abs(tur_1-tur_6);
          df_2=abs(tur_6-tur_12);
          df_3=abs(tur_12-tur_1);
          
          if (df_1>=df_2 && df_1>=df_3){
               
               df_max = df_1;
          }
          if (df_2>=df_1 && df_2>=df_3){
               
               df_max = df_2;
          }
          if (df_3>=df_1 && df_2>=df_2){
               
               df_max = df_3;
          }
          
          // Bobinas de multifilares necesaria pasar hacer turon. Max 7.
          lim_1=a+b+c;
          lim_6=a6+b6+c6;
          lim_12=a12+b12+c12;
          lim_bob=false;
          
          if(lim_1>7 || lim_6>7 || lim_12>7){
          lim_bob=true;
          }
          
               if (calcul==dif_hilo && df_max==dif_tur && lim_bob==false){
                            
                            // Comprovar totes les sulucions, si ja s'ha trobat una igual saltar
                            for (k=0; k<sol; k++){
                        
                                if (matriu [k][0]==tur_1 && matriu [k][1]==tur_6 && matriu [k][2]==tur_12){
                                
                                    goto salta;
                                
                                }
                            }
                            
                            // guardar la solicó trobada dins la matriu
                            matriu [sol][0]=tur_1;
                            matriu [sol][1]=tur_6;
                            matriu [sol][2]=tur_12;
                                
                            cout<<" "<<tur_1<<"   "<<tur_6<<"   "<<tur_12<<" | "<<total_hilos<<" | "<<df_max<<" | "<<peso_real<<" | "<<a<<"-"<<b<<"-"<<c<<"  |  "<<a6<<"-"<<b6<<"-"<<c6<<"  |  "<<a12<<"-"<<b12<<"-"<<c12<<"    "<<R<<"   "<<PxR<<endl;
                                                       
                   sol=sol+1;     
                            if (sol==sol_impr){
                                //return 0;
                                goto stop;
                                
                             }
               }
                salta:
          df_max==0;     
          
          }
          
          
          }
          
          
          }
          
          
          }
          
          
          }
          
          
          }
          
          
          }
          
          
          }
     }
          
          
    }
}
stop:
return 0;
}
Comments: