Foros del Web » Programación para mayores de 30 ;) » Programación General »

I Need Help Urgente!!

Estas en el tema de I Need Help Urgente!! en el foro de Programación General en Foros del Web. hola! soy nuevo x aki... estudio ing electronik y tengo ke rendir final de informatik donde tengo ke hacer programacion en C resulta ke practicando ...

  #1 (permalink)  
Antiguo 23/01/2005, 20:40
 
Fecha de Ingreso: enero-2005
Mensajes: 60
Antigüedad: 19 años, 3 meses
Puntos: 0
I Need Help Urgente!!

hola! soy nuevo x aki... estudio ing electronik y tengo ke rendir final de informatik donde tengo ke hacer programacion en C
resulta ke practicando un poco necesito ingresar un dato a una variable float ke esta dentro de una estructura y por mas ke lo revise miol veces no m anda....
les pido ayuda y si m pueden dar sus mail les mando el archivo .cpp pa' ver si ustedes lo pueden compilar
un saludo muy granbde
y gracias de todas formas
Javier Fileiv
  #2 (permalink)  
Antiguo 23/01/2005, 22:28
Avatar de baklao  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Ana - Isla de Margarita
Mensajes: 482
Antigüedad: 19 años, 5 meses
Puntos: 0
Hola que tal, porque no pones el codigo aqui asi te ayudamos.

Suerte y Salu2.

Bye
__________________
Atte. Mohamed :aplauso:
  #3 (permalink)  
Antiguo 24/01/2005, 16:07
 
Fecha de Ingreso: enero-2005
Mensajes: 60
Antigüedad: 19 años, 3 meses
Puntos: 0
#include<string.h>
#include<conio.h>
#include<stdio.h>
#include<math.h>
#define cant 1
void main()
{
struct colegio
{ int legajo;
char apellido[30];
char nombre[30];
float prom;
}alumno[cant],aux;

int i;
clrscr();
for (i=0;i<cant;i++)
{
printf("ingrese el nro. de legajo del alumno\n\n");
scanf("%d",&alumno[i].legajo);
fflush(stdin);
printf("ingrese el apellido del alumno (maximo 30 carac.)\n\n");
gets(alumno[i].apellido);
fflush(stdin);
printf("ingrese el nombre del alumno (maximo 30 carac.)\n\n");
gets(alumno[i].nombre);
fflush(stdin);
printf("ingrese el promedio del alumno \n\n");
fflush(stdin);
scanf("%f",alumno[i].prom);
fflush(stdin);
clrscr();
}
for (i=0;i<cant;i++)
{
if (alumno[i].prom>alumno[i+1].prom)
{
aux.prom=alumno[i].prom;
aux.legajo=alumno[i].legajo;
strcpy(aux.nombre,alumno[i].nombre);
strcpy(aux.nombre,alumno[i].nombre);
alumno[i].prom=alumno[i+1].prom;
alumno[i].legajo=alumno[i+1].legajo;
strcpy(alumno[i].nombre,alumno[i+1].nombre);
strcpy(alumno[i].apellido,alumno[i+1].apellido);
alumno[i+1].prom=aux.prom;
alumno[i+1].legajo=aux.prom;
strcpy(alumno[i+1].apellido,aux.apellido);
strcpy(alumno[i+1].nombre,aux.nombre);
}
}
for (i=0;i<cant;i++)
{ printf("%d\t%s,%s\t%.02f\n",alumno[i].legajo,alumno[i].apellido,alumno[i].nombre,alumno[i].prom);
}
getch();
}


//* resulta ke cuando kiero ingresar un dato float (con coma decimal) a la variable PROM ke es float ke ta dentro de la estructura colegio no m deja //*
//*me dice esto cuando llega el momento de ejecutarse esa linea " scanf : floating point format noy linked
abnormal program termination" //*
  #4 (permalink)  
Antiguo 24/01/2005, 16:10
 
Fecha de Ingreso: enero-2005
Mensajes: 60
Antigüedad: 19 años, 3 meses
Puntos: 0
monitor

ahora la ayuda ke necesitaria es ke en varios de los programas ke toy haciendo utilizo los comandos inportb() y outportb(), y no se como puedo comprobar ke realmente funcionen.es x eso ke keria saber si hay algun programita ke permita monitorear el puerto serie y ademas emular el envio de datos por el mismo. Tmb seria bueno tener un tutorial del mismo o sino ke sea en español.
desde ya muchisimas gracias!
Javier Fileiv
  #5 (permalink)  
Antiguo 24/01/2005, 16:43
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Hola Javier, bienvenido al foro.

Entro en este hilo solo para decirte que es un poco confusa la manera como escribes para pedir ayuda. Te juro que es mas facil leer tu código que tus textos.

Sería muy bueno para ti, y es un consejo que puedes tomar o no, que leas lo que escribes antes de enviar, ya que podrías perderte de la ayuda de personas que se fastidian en la segunda línea tratando de comprender que problema se esconde detras de tantas letras k.

Saludos y suerte.
  #6 (permalink)  
Antiguo 24/01/2005, 21:07
 
Fecha de Ingreso: enero-2005
Mensajes: 60
Antigüedad: 19 años, 3 meses
Puntos: 0
grx

aprecio mucho esa critica constructiva.pero a mi entender el uso de la "k" en vez de "qu" facilita varias tareas y creo que es comprensible a varias personas. No obstante considero que los textos que rtedacte son de facil entendimiento
sin mas, muchas gracias
Javier Fileiv
  #7 (permalink)  
Antiguo 25/01/2005, 01:45
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
Bueno, primero y principal esto es codigo para MS-DOS, supongo que para un compilador de Borland.

esto es lo que está mal:
scanf("%f", alumno[i].prom);
hay que pasar el parametro asi:
scanf("%f", &alumno[i].prom);

inportb y outportb son macros que se mapean a los opcodes del microprocesador directamente, no entiendo que es lo que queres hacer al respecto.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #8 (permalink)  
Antiguo 25/01/2005, 07:11
 
Fecha de Ingreso: enero-2005
Mensajes: 60
Antigüedad: 19 años, 3 meses
Puntos: 0
lo que quiero es un programa que corra bajo windows y me permita no solo monitorear el puerto serie sino que tambien emularle datos como si los estubiera realmente mandando por el puerto mediante una interface
muchas gracias
Javier Fileiv
  #9 (permalink)  
Antiguo 25/01/2005, 07:14
 
Fecha de Ingreso: enero-2005
Mensajes: 60
Antigüedad: 19 años, 3 meses
Puntos: 0
[QUOTE=Eternal Idol]Bueno, primero y principal esto es codigo para MS-DOS, supongo que para un compilador de Borland.

esto es lo que está mal:
scanf("%f", alumno[i].prom);
hay que pasar el parametro asi:
scanf("%f", &alumno[i].prom);

HICE ESO QUE ME DIJISTE MARIANO Y SIGUE DICIENDOME LO MISMO QUE ANTES........
UN SALUDO GRANDE
JAVIER FILEIV
  #10 (permalink)  
Antiguo 25/01/2005, 08:02
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
No se puede usar inport y outport en Windows en el ring 3, tendrías que crear un driver para hacer eso.

¿Que compilador estas usando? A mi con VC++ me funciona perfectamente (quitando los clrscr).
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #11 (permalink)  
Antiguo 25/01/2005, 10:52
 
Fecha de Ingreso: enero-2005
Mensajes: 60
Antigüedad: 19 años, 3 meses
Puntos: 0
mariano.el inpoirtb() y outportb() los puedo usar.mi compilador es el TurboC ke corre bajo dos
m baje el DEVC++ ke corre bajo windows y probe lo ke me dijiste antes pa' poder ingresar el numero float en la variable prom y tmp m dejo
un saludo
cuidate
p.D.: que es el RING 3??
Javier Fileiv

Última edición por ja_fileiv2; 25/01/2005 a las 10:55
  #12 (permalink)  
Antiguo 25/01/2005, 12:07
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
Turbo C no trabajo bajo Windows, solo compila codigo de 16 bits para MS-DOS y por eso podes usar esos dos opcodes.

El problema con el programa es que a sprintf le estabas pasando el valor de la variable en vez de la posicion en memoria que necesita para meter el valor obtenido del teclado ahi. Como te lo pase tiene que funcionar, DEVC++ es un IDE que usa GCC para compilar sino me equivoco, de cualquier manera el error esta ahi, proba a comentar esa linea sino.

Ring 3, es el anillo donde se ejecuta el codigo de usuario, ring 0 es el de codigo del kernel (donde van los drivers x ej.)
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #13 (permalink)  
Antiguo 25/01/2005, 17:12
 
Fecha de Ingreso: enero-2005
Mensajes: 60
Antigüedad: 19 años, 3 meses
Puntos: 0
mariano el tema ese de usar "scanf("%f",&alumno[i].prom); no m funca. me podrias escribir lo ke tengo ke hacer xq la mayoria del lexico ke utilizas no lo entiendo. perdon.,..
bue un salud grande
Javier Fileiv
  #14 (permalink)  
Antiguo 25/01/2005, 17:24
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
¿Lo pusiste sin las comillas del comienzo verdad?

Tenes que reemplazar esta linea:
scanf("%f", alumno[i].prom);
por esta otra:
scanf("%f", &alumno[i].prom);

Con eso debería funciona, sino probá a ponerla así:
//scanf("%f", alumno[i].prom);

que es un comentario.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #15 (permalink)  
Antiguo 25/01/2005, 18:30
 
Fecha de Ingreso: enero-2005
Mensajes: 60
Antigüedad: 19 años, 3 meses
Puntos: 0
disuclpame pero lo probe asi. con el & y sin el & y no funciona
P.D.: SI, lo puse sin comillas!
UN saludo
Javier Fileiv
  #16 (permalink)  
Antiguo 26/01/2005, 01:12
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
¿Probaste comentando esa linea?
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #17 (permalink)  
Antiguo 26/01/2005, 19:09
 
Fecha de Ingreso: enero-2005
Mensajes: 60
Antigüedad: 19 años, 3 meses
Puntos: 0
a ke t referis con "comentando esa linea"??
un saludo
Javier Fileiv
  #18 (permalink)  
Antiguo 27/01/2005, 01:16
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
A hacer que no se compile, en C/C++ hay dos metodos para hacer un comentario:

/*printf();*/
y
//printf()

Con /**/ lo hacemos al estilo C, todo lo que vaya entre barra asterisco y asterisco barra es un comentario, con // lo hacemos al estilo C++ y todo lo que este en esa linea (a partir de las dos barras) es un comentario.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #19 (permalink)  
Antiguo 27/01/2005, 13:24
 
Fecha de Ingreso: enero-2005
Mensajes: 60
Antigüedad: 19 años, 3 meses
Puntos: 0
entiendo ahora.pero ke es lo ke keres ke comente?? o como keres ke lo comente??
  #20 (permalink)  
Antiguo 27/01/2005, 13:45
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
La linea que da el error, y como te dije en un mensaje anterior la podes comentar asi:

//scanf("%f", alumno[i].prom);

poniendo las dos barras (//) delante de la llamada a la funcion.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #21 (permalink)  
Antiguo 27/01/2005, 17:09
 
Fecha de Ingreso: enero-2005
Mensajes: 60
Antigüedad: 19 años, 3 meses
Puntos: 0
ya lo hice.pero si le grego las 2 barras (//) es como ke hace ke la linea de comandos esa no corra. es decir como ke la pinta de azul
bue..un saludo
Javier fileiv
  #22 (permalink)  
Antiguo 31/01/2005, 09:58
 
Fecha de Ingreso: enero-2005
Mensajes: 60
Antigüedad: 19 años, 3 meses
Puntos: 0
Che mariano. ke hago??
javier fileiv
  #23 (permalink)  
Antiguo 31/01/2005, 12:13
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
Usa este codigo:

#include<string.h>
#include<conio.h>
#include<stdio.h>
#include<math.h>
#define cant 1
void main()
{
struct colegio
{ int legajo;
char apellido[30];
char nombre[30];
float prom;
}alumno[cant],aux;

int i;
clrscr();
for (i=0;i<cant;i++)
{
printf("ingrese el nro. de legajo del alumno\n\n");
scanf("%d",&alumno[i].legajo);
fflush(stdin);
printf("ingrese el apellido del alumno (maximo 30 carac.)\n\n");
gets(alumno[i].apellido);
fflush(stdin);
printf("ingrese el nombre del alumno (maximo 30 carac.)\n\n");
gets(alumno[i].nombre);
fflush(stdin);
printf("ingrese el promedio del alumno \n\n");
fflush(stdin);
scanf("%f",&alumno[i].prom);
fflush(stdin);
clrscr();
}
for (i=0;i<cant;i++)
{
if (alumno[i].prom>alumno[i+1].prom)
{
aux.prom=alumno[i].prom;
aux.legajo=alumno[i].legajo;
strcpy(aux.nombre,alumno[i].nombre);
strcpy(aux.nombre,alumno[i].nombre);
alumno[i].prom=alumno[i+1].prom;
alumno[i].legajo=alumno[i+1].legajo;
strcpy(alumno[i].nombre,alumno[i+1].nombre);
strcpy(alumno[i].apellido,alumno[i+1].apellido);
alumno[i+1].prom=aux.prom;
alumno[i+1].legajo=aux.prom;
strcpy(alumno[i+1].apellido,aux.apellido);
strcpy(alumno[i+1].nombre,aux.nombre);
}
}
for (i=0;i<cant;i++)
{ printf("%d\t%s,%s\t%.02f\n",alumno[i].legajo,alumno[i].apellido,alumno[i].nombre,alumno[i].prom);
}
getch();
}
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #24 (permalink)  
Antiguo 31/01/2005, 20:24
 
Fecha de Ingreso: enero-2005
Mensajes: 60
Antigüedad: 19 años, 3 meses
Puntos: 0
disuclpame pero ni uisando ese codigo anduvo......... sigue diciendome el mismo error
sera mi compilador??
un saludo
Javier Fileiv
  #25 (permalink)  
Antiguo 31/01/2005, 21:24
 
Fecha de Ingreso: noviembre-2003
Ubicación: Mexico
Mensajes: 1.081
Antigüedad: 20 años, 5 meses
Puntos: 7
tengo 3 sugerencias:

1.- incluye la libreria stdlib
#include <stdlib.h>

2:
cambia esta parte del codigo:
struct colegio
{ int legajo;
char apellido[30];
char nombre[30];
float prom;
}alumno[cant],aux;

por esta:
struct colegio
{ int legajo[30];
char apellido[30];
char nombre[30];
float prom[30];
};

y creas un objeto:
colegio col ;
Y ahhora accesas asi:
scanf("%d",col.legajo[i]);

otra cosa, tu variable cant es = 1, y tu ciclo for dice que solo se ejecutara mientras i < cant.
por lo tanto solo se hara 1 vez, asi que no le veo chiste del ciclo.

en teoria, asi ya no deberia de haber problema
  #26 (permalink)  
Antiguo 01/02/2005, 01:16
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
Lo que dice blackwind es bastante correcto, solo dejaria como antes lo de int legajo; y float prom; ya que no hace falta un array para esas variables (al menos en el codigo no se utilizan como arrays).
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #27 (permalink)  
Antiguo 02/02/2005, 15:52
 
Fecha de Ingreso: enero-2005
Mensajes: 60
Antigüedad: 19 años, 3 meses
Puntos: 0
el hecho de usar cant, y en este caso ke valga 1, es ke yo ahora toy probando y no kiero ingresar mas de 1 dato..pero en un futuro lo cambio x uin nro mas grande y puedo tener varios vectores con esas caracteristicas de la estructura
  #28 (permalink)  
Antiguo 02/02/2005, 16:04
 
Fecha de Ingreso: enero-2005
Mensajes: 60
Antigüedad: 19 años, 3 meses
Puntos: 0
disculpen nuevamente pero tmp he podido de esa forma.........
grx
Javier Fileiv
  #29 (permalink)  
Antiguo 02/02/2005, 17:12
 
Fecha de Ingreso: noviembre-2003
Ubicación: Mexico
Mensajes: 1.081
Antigüedad: 20 años, 5 meses
Puntos: 7
jejeje, acabo de darme cuenta cual es el error.

al momento de hacer el sacnf del promedio no le haces referencia:

dbes hacerlo asi:
scanf("%f",&alumno[i].prom);
  #30 (permalink)  
Antiguo 02/02/2005, 19:52
Avatar de spike_jr  
Fecha de Ingreso: febrero-2005
Ubicación: Valencia
Mensajes: 114
Antigüedad: 19 años, 2 meses
Puntos: 2
A ver si va a ser...

Emm... toy un poco confudio. A ver, he compilado el codigo con Dev-C++ 4 y el unico error(warning) que me da es en:

alumno[i+1].legajo=aux.prom;

-- warning --> assignament to 'int' from 'float'

Osease, lo que se dice un "cast". Estas asignando a un valor "int" un valor "float" y tienes que hacer un cast:

alumno[i+1].legajo=(int)aux.prom;

Vaya que no se si sera eso, porque no esta centrado en lo que estais diciendo sobre el scanf("%f", &alumno[i].prom).

Asi que... a ver si es que si.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:02.