elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con un programa de C++ de resistencias de bandas 4, 5, 6 bandas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con un programa de C++ de resistencias de bandas 4, 5, 6 bandas  (Leído 3,399 veces)
chaneque_14

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Ayuda con un programa de C++ de resistencias de bandas 4, 5, 6 bandas
« en: 4 Diciembre 2020, 04:59 am »

Nose como añadir una opcion para 5 y 6 bandas, y como darle la opcion de mostrarle la demas tolerancias ademas del dorado y plateado. Necesito Ayuda. Gracias.
Código
  1. #include<iostream>
  2. using namespace std;
  3. int main(){
  4.  
  5. int n1, n2, n3;
  6. cout<<"\nNegro     = 1 ";
  7. cout<<"\nCafe      = 2 ";
  8. cout<<"\nRojo      = 3 ";
  9. cout<<"\nNaranja   = 4 ";
  10. cout<<"\nAmarillo  = 5 ";
  11. cout<<"\nVerde     = 6 ";
  12. cout<<"\nAzul      = 7 ";
  13. cout<<"\nPurpura   = 8 ";
  14. cout<<"\nGris      = 9 ";
  15. cout<<"\nBlanco    = 10 ";
  16.  
  17. cout<<"\n¿Cual es el primer color? :";cin>>n1;
  18. cout<<"\n¿Cual es el segundo color? :";cin>>n2;
  19. cout<<"\n¿Cual es el tercer color? :";cin>>n3;
  20.  
  21. cout<<n1<<n2;
  22.  
  23. for(int i=0; i<n3; i++){
  24.  
  25. cout<<0;
  26. }
  27.  
  28. int n4;
  29. cout<<"\nDigite el numero que aparecio :"; cin>>n4;
  30.  
  31. float n5, n6;
  32.  
  33. cout<<"\nDorado = 5%";
  34. cout<<"\nPlateado = 10%";
  35.  
  36. cout<<"\nEscribe el porcentaje dependiendo el color: "; cin>>n5;
  37.  
  38. if((n5>=5)and(n5>=10)){
  39.  
  40. n6=((5)*(4))/100;
  41. cout<<"\nSu porcentaje = "<<n6<<endl;
  42. }
  43. else{
  44. n6=((10)*(n4))/100;
  45. cout<<"\nSu porcentaje = "<<n6<<endl;
  46. }
  47.  
  48. int suma= 0,resta=0;
  49.  
  50. suma= n4+ n6;
  51. resta= n4 - n6;
  52.  
  53. cout<<"\nSu limite de rango mayor es de : "<<suma<<endl;
  54. cout<<"\nSu limite de rango menor es de : "<<resta<<endl;
  55.  
  56. return 0;
  57.  
  58. }


En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: Ayuda con un programa de C++ de resistencias de bandas 4, 5, 6 bandas
« Respuesta #1 en: 4 Diciembre 2020, 06:08 am »

Problemas que le veo a ese programa:
  • Los nombres de las variables no ayudan a entender el código.
  • Siempre hay que suponer que un usuario se puede equivocar por lo que cuantas menos veces dependamos de él mejor. Con esto quiero decir que las líneas 21-29 es mejor evitarlas. Es un cálculo que puedes hacer internamente sin necesidad del usuario.
  • La condición de la línea 38 se puede simplificar: (n >= 5) && (n >= 10) es lo mismo que: (n >= 10). Siempre que la segunda condición sea cierta, la primera también lo será y es imposible que la segunda sea cierta sin serlo la primera también. De todas formas este bloque de if-else no tiene mucho sentido tal y como está planteado.
  • En la línea 40 utilizas 4 en vez de n4.

No sé mucho de resistencias (recuerdo un poco de cuando estudiaba física o tecnología) y mirando por Internet veo que hay diferentes tablas de medida sobre todo para el porcentaje final.
Por lo tanto es importante que especifiques las necesidades que tiene que suplir tu código.

De momento te puedo ayudar en lo siguiente, si quieres hacer el programa válido para un número diferente de bandas, haz lo siguiente:
Código
  1. // Definimos una constante para el maximo de bandas:
  2. const int MAX_BANDAS = 6;
  3.  
  4. int main(){
  5.  // Creamos un array para guardar el valor de cada banda:
  6.  int bandas[MAX_BANDAS]; // Pueden sobrar espacios pero la solucion mas correcta requiere de memoria dinamica y es mas avanzado
  7.  int numeroBandas;
  8.  // Con este do-while evitas que el usuario pueda introducir numeros fuera del rango indicado en el while() -> [4, 6]
  9.  do {
  10.    cout << "Introduce el numero de bandas de la resistencia: ";
  11.    cin >> numeroBandas;
  12.  } while(numeroBandas < 4 || numeroBandas > 6);
  13.  // la ultima banda es diferente pero las demas son iguales por lo que repetimos lo de preguntar color numeroBandas-1 veces:
  14.  // AQUI muestras los colores como lo haces ahora...
  15.  for(int i = 0; i < numeroBandas - 1; ++i){
  16.    // Con este do-while evitas que introduzcan valores no validos
  17.    // PD: He estado revisando algunas tablas y el negro corresponde al 0, no al 1
  18.    do {
  19.      cout << "Introduce el valor numerico de la banda " << (i+1) << ": ";
  20.      cin >> bandas[i];
  21.    } while(bandas[i] < 0 || bandas[i] > 9);
  22.  }
  23.  // Una vez que llegas aqui ya tienes todos los colores menos el ultimo
  24.  // Este tendras que hacerlo por separado segun los colores que consideres validos
  25.  // El ultimo lo guardas en bandas[numeroBandas-1] que es la ultima posicion valida del array
  26.  
  27.  // Ahora toca calcular el valor:
  28.  int resistencia = 0;
  29.  for(int i = 0; i < numeroBandas - 1; ++i){
  30.    resistencia = bandas[i] * pow(10, i); // Para usar pow() tienes que incluir la biblioteca cmath al principio: #include <cmath>
  31.    // La funcion pow() en este caso es innecesaria pero es para que veas la operacion
  32.    // Tambien puedes usar un multiplicador que empiece en 1 y en cada vuelta se multiplique por 10 <- Mas eficiente, intentalo
  33.  }
  34.  
  35.  // Ahora toca calcular el minimo y maximo del rango segun el porcentaje de la ultima banda:
  36.  // Esto lo puedes hacer con un switch-case o guardando todos los valores posibles en otro array: porcentajes
  37.  // Suponiendo la segunda opcion, utilizas el valor del array guardado en la posicion elegida por el usuario al mostrarle las opciones
  38.  float variacion = resistencia * porcentajes[bandas[numeroBandas-1]];
  39.  float resistenciaMinima = resistencia - variacion;
  40.  float resistenciaMaxima = resistencia + variacion;
  41. }

Aunque el código parece bastante grande, hay muchos comentarios y fragmentos que tienes que completar tú.
Si tienes algún problema, coméntalo teniendo en cuenta los comentarios que he ido haciendo a lo largo del código.


En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
chaneque_14

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Ayuda con un programa de C++ de resistencias de bandas 4, 5, 6 bandas
« Respuesta #2 en: 4 Diciembre 2020, 06:17 am »

Muchas gracias por la ayuda, fue de mucha ayuda que me hicieras notar mis errores.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
BANDAS NEGRAS
Multimedia
MARU74 2 2,279 Último mensaje 17 Abril 2006, 22:27 pm
por aNexos
ayuda como colocar bandas negra a un video
Multimedia
seven17 5 6,594 Último mensaje 1 Agosto 2007, 20:43 pm
por Songoku
Hackear bandas magnéticas
Dudas Generales
Ictericia33 2 21,573 Último mensaje 5 Abril 2011, 13:53 pm
por skapunky
bandas de reggae
Dudas Generales
silver93 1 2,556 Último mensaje 25 Enero 2012, 21:26 pm
por folostia
mejores bandas de rock
Foro Libre
MRx86 8 4,250 Último mensaje 4 Octubre 2016, 05:55 am
por MRx86
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines