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

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ayuda en programa para noob (yo)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: ayuda en programa para noob (yo)  (Leído 4,030 veces)
gdzc1

Desconectado Desconectado

Mensajes: 6


Ver Perfil
ayuda en programa para noob (yo)
« en: 9 Diciembre 2018, 18:46 pm »

tengo un problema al momento de declarar las variables, estoy aprendiendo acerca de programar en c y solo estoy usando #include "stdio.h" main(), el asunto es que estoy haciendo un arreglo en el cualquiero poner un registro de 5 señales distintas, en el momento de colocar las señales me indica que no están declaradas ninguna de ellas si pueden ayudarme lo agradecería este es el programa:
#include "stdio.h"
main()
{         
      int altitud[2], i; struct reg
      {
             int A;
             int B;
             int C;
             int D;
             int E;
             };
      i=1;
      while (i<2)
      {
            printf("Las revoluciones por minuto de todos los motores es de: ");
            scanf("%d", &altitud.A);
            printf("La presión en PSI es: ");
            scanf("%d", &altitud.B);
            printf("la cantidad de aceite en l/m es: ");
            scanf("%d", &altitud.C);
            printf("La temperatura del aceite es de: ");
            scanf("%d", &altitud.D);
            printf("La temperatura de incendio es; ");
            scanf("%d", &altitud.E);
            }
      i=1;
      while(i<2)
      {
                 if(altitud.A>10800)
                 {
                                            printf("APU se apago por el exceso de revoluciones en el motor");
                                            }
                 if(altitud.B<3000)
                 {
                                           printf("APU se apago por falta de presión");
                                           }
                 if(altitud.C<175)
                 {
                                          ("APU se apagó por falta de aceite");
                                          }
                 if(altitud.D<380)
                 {
                                          ("APU se apago por falta de temperatura en el aceite");
                                          }
                 if(altitud.E>800)
                 {
                                          ("APU se apagó por incendio en una zona del avión");
                                          }
                 i=i+1;
                 }
                 }


En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: ayuda en programa para noob (yo)
« Respuesta #1 en: 9 Diciembre 2018, 19:35 pm »

Primero, el código ponlo entre etiquetas GeSHi, seleccionando el lenguaje que usas.
Segundo, ese código tiene problemas lo cojas por donde lo cojas.

Ahora la pregunta es, quieres usar un arreglo o una <struct>?? Si quieres usar un arreglo para 5 datos de tipo <int> tienes que crear un arreglo de tamaño 5, como es lógico y acceder a cada posición del arreglo con los índices {0,1,2,3,4}.
Código
  1. const int MAX_SIGNALS = 5;
  2. int signals[MAX_SIGNALS];
  3. for(int i = 0; i < MAX_SIGNALS; i++){
  4.    printf("Introduce numero para guardar en la posicion %d del arreglo", i);
  5.    scanf("%d", &signals[i]);
  6. }

Si lo que quieres es usar una <struct> primero declara la <struct> antes del <main> para después usarla dentro de este.
Código
  1. struct Signal{
  2.    int a, b, c, d, e;
  3. };
  4.  
  5. int main(){
  6.    Signal mySignal;
  7.    printf("Introduce primer numero: ");
  8.    scanf("%d", mySignal.a);
  9.    // asi con todos los numeros
  10. }

Dejar claro que esto no es un arreglo, es una estructura, esto está más orientado a la programación orientada a objetos POO. Por lo que estás creando un objeto <mySignals> de tipo <Signal> y un objeto de tipo <Signal> está compuesto internamente de 5 enteros.

Si quieres mezclar ambas cosas, que es lo que parece que estabas intentando con ese código, lo que hay que hacer es crear un arreglo de Signals. Entonces creamos por ejemplo un arreglo de tamaño 2 y cada uno de sus elementos {0,1} serán un objeto de tipo <Signal>.
Código
  1. struct Signal{
  2.    int a, b, c, d, e;
  3. };
  4.  
  5. int main(){
  6.    Signal mySignals[2];
  7.    // para acceder por ejemplo al segundo entero del primer objeto sería mySignals[0].b
  8. }

Ahora ya es decisión tuya usar lo que creas más conveniente para tu programa. Suerte. :-X


En línea

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

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: ayuda en programa para noob (yo)
« Respuesta #2 en: 9 Diciembre 2018, 23:49 pm »

Primero, el código ponlo entre etiquetas GeSHi, seleccionando el lenguaje que usas.
Segundo, ese código tiene problemas lo cojas por donde lo cojas.

Ahora la pregunta es, quieres usar un arreglo o una <struct>?? Si quieres usar un arreglo para 5 datos de tipo <int> tienes que crear un arreglo de tamaño 5, como es lógico y acceder a cada posición del arreglo con los índices {0,1,2,3,4}.
Código
  1. const int MAX_SIGNALS = 5;
  2. int signals[MAX_SIGNALS];
  3. for(int i = 0; i < MAX_SIGNALS; i++){
  4.    printf("Introduce numero para guardar en la posicion %d del arreglo", i);
  5.    scanf("%d", &signals[i]);
  6. }

Si lo que quieres es usar una <struct> primero declara la <struct> antes del <main> para después usarla dentro de este.
Código
  1. struct Signal{
  2.    int a, b, c, d, e;
  3. };
  4.  
  5. int main(){
  6.    Signal mySignal;
  7.    printf("Introduce primer numero: ");
  8.    scanf("%d", mySignal.a);
  9.    // asi con todos los numeros
  10. }

Dejar claro que esto no es un arreglo, es una estructura, esto está más orientado a la programación orientada a objetos POO. Por lo que estás creando un objeto <mySignals> de tipo <Signal> y un objeto de tipo <Signal> está compuesto internamente de 5 enteros.

Si quieres mezclar ambas cosas, que es lo que parece que estabas intentando con ese código, lo que hay que hacer es crear un arreglo de Signals. Entonces creamos por ejemplo un arreglo de tamaño 2 y cada uno de sus elementos {0,1} serán un objeto de tipo <Signal>.
Código
  1. struct Signal{
  2.    int a, b, c, d, e;
  3. };
  4.  
  5. int main(){
  6.    Signal mySignals[2];
  7.    // para acceder por ejemplo al segundo entero del primer objeto sería mySignals[0].b
  8. }

Ahora ya es decisión tuya usar lo que creas más conveniente para tu programa. Suerte. :-X
Disculpa pero lo que estoy buscando hacer es tener un arreglo en el cual pueda tener cinco datos, el problema como tal si esta orientado a un objeto dado que es una parte de un avión llamado APU, el arreglo sería de diez partes y que dentro de dicho arreglo tenga un registro de cinco señales que hacen que la APU se apague
En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: ayuda en programa para noob (yo)
« Respuesta #3 en: 9 Diciembre 2018, 23:55 pm »

No termino de entender tu planteamiento. Si lo que quieres es un arreglo donde almacenar 5 enteros, te sirve la primera opción que te he dado. En cambio si vas a ampliar el programa. igual te viene mejor usar <struct>.

Citar
el arreglo sería de diez partes y que dentro de dicho arreglo tenga un registro de cinco señales
No entiendo esto que has comentado. :rolleyes:
En línea

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

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: ayuda en programa para noob (yo)
« Respuesta #4 en: 10 Diciembre 2018, 00:00 am »

No termino de entender tu planteamiento. Si lo que quieres es un arreglo donde almacenar 5 enteros, te sirve la primera opción que te he dado. En cambio si vas a ampliar el programa. igual te viene mejor usar <struct>.
No entiendo esto que has comentado. :rolleyes:
Básicamente lo que quiero es que en cada uno de los espacios de los arreglos se pueda registrar cinco señales a eso era lo que me refería, tengo un arreglo de diez pero en cada uno de estos espacios cinco señales que en cada posicion del arreglo se puedan ingresar cinco señales, en vez de hacer una matriz hago un arreglo pero que dicho arreglo tengo cinco espacios de informacion
« Última modificación: 10 Diciembre 2018, 00:02 am por gdzc1 » En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: ayuda en programa para noob (yo)
« Respuesta #5 en: 10 Diciembre 2018, 00:04 am »

Vale, creo que ya te entiendo. Un arreglo de 5 elementos y que cada elemento sea un conjunto de 5 señales.
Para eso la idea más simple es un arreglo de arreglos, comúnmente conocido como matriz.

Si lo quieres hacer sin matrices y usando <struct> entonces tienes que usar la tercera opción que te he dado antes. Crear una <struct> que almacene 5 enteros y luego hacer un arreglo de 5 structs. Ya te he dejado antes también como acceder a cada uno de los elementos. Suerte. :-X
En línea

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

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: ayuda en programa para noob (yo)
« Respuesta #6 en: 10 Diciembre 2018, 00:09 am »

Vale, creo que ya te entiendo. Un arreglo de 5 elementos y que cada elemento sea un conjunto de 5 señales.
Para eso la idea más simple es un arreglo de arreglos, comúnmente conocido como matriz.

Si lo quieres hacer sin matrices y usando <struct> entonces tienes que usar la tercera opción que te he dado antes. Crear una <struct> que almacene 5 enteros y luego hacer un arreglo de 5 structs. Ya te he dejado antes también como acceder a cada uno de los elementos. Suerte. :-X
Ya hice lo que me dijiste de sacar la estructura pero me sigue apareciendo el error que dice ´a´ que en este caso es la señal dentro de <struct> no está definido como hago?
En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: ayuda en programa para noob (yo)
« Respuesta #7 en: 10 Diciembre 2018, 00:10 am »

Un array de estructuras.

Código
  1. struct tsignals {
  2.    int sigA;
  3.    int sigB;
  4.    int sigC;
  5.    int sigD;
  6.    int sigE,
  7. } signals[10];
  8.  
  9. // ...
  10.  
  11. signals[i].sigA = getSignal();
En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: ayuda en programa para noob (yo)
« Respuesta #8 en: 10 Diciembre 2018, 00:19 am »

Ya hice lo que me dijiste de sacar la estructura pero me sigue apareciendo el error que dice ´a´ que en este caso es la señal dentro de <struct> no está definido como hago?
Sin ver cómo te ha quedado el código no sé por qué te saldrá ese error...
En línea

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

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: ayuda en programa para noob (yo)
« Respuesta #9 en: 10 Diciembre 2018, 00:28 am »

Código:
[quote author=MAFUS link=topic=490488.msg2180521#msg2180521 date=1544397010]
Un array de estructuras.
signals[i].sigA = getSignal();
[/quote]
Disculpa no entiendo en esta ultima parte en que parte del programa tengo que poner eso? entendi lo demás pero esa no se como hacerla, el programa sería así? (dime por favor si me equivoque en algo o que puedo arreglar para terminarlo)
struct reg
{
       int A,B,C,D,E;
       }reg[10];
 int main()
 {         
      int reg, altitud[2], i;
      i=1;
      while (i<2)
      {
            printf("Las revoluciones por minuto de todos los motores es de: ");
            scanf("%d", &altitud.A);
            printf("La presión en PSI es: ");
            scanf("%d", &altitud.B);
            printf("la cantidad de aceite en l/m es: ");
            scanf("%d", &altitud.C);
            printf("La temperatura del aceite es de: ");
            scanf("%d", &altitud.D);
            printf("La temperatura de incendio es; ");
            scanf("%d", &altitud.E);
            }
      i=1;
      while(i<2)
      {
                 if(altitud.A>10800)
                 {
                                            printf("APU se apago por el exceso de revoluciones en el motor");
                                            }
                 if(altitud.B<3000)
                 {
                                           printf("APU se apago por falta de presión");
                                           }
                 if(altitud.C<175)
                 {
                                          ("APU se apagó por falta de aceite");
                                          }
                 if(altitud.D<380)
                 {
                                          ("APU se apago por falta de temperatura en el aceite");
                                          }
                 if(altitud.E>800)
                 {
                                          ("APU se apagó por incendio en una zona del avión");
                                          }
                 i=i+1;
                 }
                 }
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Noob necesita ayuda.
.NET (C#, VB.NET, ASP)
usuario oculto 9 4,753 Último mensaje 2 Junio 2009, 22:13 pm
por usuario oculto
[duda NOOB] ¿Se podría blockear la pantalla del PC con un programa?
Software
pskkk 9 2,450 Último mensaje 2 Diciembre 2011, 21:39 pm
por Eleкtro
Ayuda,tootal noob en overclock
Hardware
paxama 2 2,561 Último mensaje 21 Febrero 2013, 23:49 pm
por OmarHack
Ayuda para un noob en los .sh ;(
Scripting
byendriver 1 1,773 Último mensaje 15 Marzo 2014, 07:27 am
por -Myx-
Ayuda con consulta noob de C#.
.NET (C#, VB.NET, ASP)
estebankpo15 4 3,476 Último mensaje 3 Abril 2014, 09:37 am
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines