Señores corregi los errores y definitivamente no es lo del cast ni lo del &......... nose ke voy a hacer!!!!!!!!!
Javier Fileiv
| |||
Cita: El problema no es al compilñarlo...... sino al ejecutarlo... en el momento de ingresar el promedio como float se termina el programa y m da los mensajes ke dije antes
Iniciado por spike_jr 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. un saludo Javier Fileiv |
| |||
con lo del "&" se resuelve el problema. estoy 100% seguro. ya que copie tu codigo, y lo ejecute, y me pasaba lo que dices , luego le aumente el & y si era eso. es mas, te voy a poner el codigo que si jala: #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(); } con eso ya puedes ingresar el promedio. de ahi arroja un numero (no se si eso sea lo que quieres --que no creo--), ya me dio flojera leer lo demas y tratar de corregirlo. Última edición por blackwind; 02/02/2005 a las 23:07 |
| |||
el codigo ke recibi antes en el dev c++ se me ejecuta pero m hace cualkier cosa....en cambio en el TC m dice exactamente el mismo error....el tema del & ya lo habia solucionado antes cuando Eternal Idol m lo dijo |
| ||||
Este es el codigo que te di hace un tiempo (31-01-2005) con los clrscr comentados y abajo hay un screen-shot del output (CORRECTO) generado: #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 |
| |||
señores pude resolver el problema grx a la ayuda de ustedes...muy agradecido. Ahora el problema ke tengo es ke los valores ke ingrese ultimo. es decir el legajo prom nombre y apellido ke ingrese como ultimo alumno a ingresar, ke lo modifico con la variale CANT definida en el encabezado del codigo, me aparece cualkier cosa. ni se asemeja a lo ke le escribo |
| ||||
Arreglado, habia dos pequeños errores (mas que nada descuidos en el bucle que ordena los nombres): 1.strcpy(aux.nombre,alumno[i].nombre); strcpy(aux.nombre,alumno[i].nombre); deberia ser strcpy(aux.nombre,alumno[i].nombre); strcpy(aux.apellido,alumno[i].apellido); por eso no salia el apellido, aux tenia el apellido en blanco! 2.alumno[i+1].prom=aux.prom; alumno[i+1].legajo=aux.prom; deberia ser: alumno[i+1].prom=aux.prom; alumno[i+1].legajo=aux.legajo; Aca esta el codigo un poco mas pulido (legible):
Código:
#include <string.h> #include <conio.h> #include <stdio.h> #include <math.h> #define cant 5 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\r\n"); scanf("%d", &alumno[i].legajo); fflush(stdin); printf("ingrese el apellido del alumno (maximo 30 carac.)\r\n"); gets(alumno[i].apellido); fflush(stdin); printf("ingrese el nombre del alumno (maximo 30 carac.)\r\n"); gets(alumno[i].nombre); fflush(stdin); printf("ingrese el promedio del alumno\r\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.apellido, alumno[i].apellido); 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.legajo; 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\r\n", alumno[i].legajo, alumno[i].apellido, alumno[i].nombre, alumno[i].prom); } getch(); }
__________________ ¡Peron cumple, Evita dignifica! VIVA PERON CARAJO |
| |||
muchachos....OTRA VEZ SOPA! m sigue tirando el mismo error dfe antes ke no m deja ingresar el float este el el codigo #include<string.h> #include<conio.h> #include<stdio.h> #include<math.h> #define cant 2 void main() { struct colegio { int legajo; char apellido[30]; char nombre[30]; float prom; }; clrscr(); int i; struct colegio alumno[cant],aux; 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.legajo; 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%f\n",alumno[i].legajo,alumno[i].apellido,alumno[i].nombre,alumno[i].prom); } getch(); } |
| ||||
¿Que compilador estas usando? A mi me funciona perfectamente, lo del float se soluciona con pasar la direccion de memoria de la variable y no el valor.
__________________ ¡Peron cumple, Evita dignifica! VIVA PERON CARAJO |
| ||||
Baja este: http://msdn.microsoft.com/visualc/vctoolkit2003/ cuando los tengas configurado pone cl archivo.cpp y listo
__________________ ¡Peron cumple, Evita dignifica! VIVA PERON CARAJO |
| |||
mira..... no m lo esta bajando.lo tenes pa' mandarlo si podes....... mi mail es [email protected] si podes mandalo un saludo Javier Fileiv |
| |||
tambien te puedes bajar el dev-cpp http://www.bloodshed.net/devcpp.html gratis y muy bueno. por cierto...no crees que ya llevas demasiados dias con eso? quiza deberias reescribirlo de nuevo deotra manera y antes leer bien como leer , imprimir, copiar y demas..... Digo , es solo una opinion, ademas de que el codigo no es tan largo com opara hacerlo desde el principio. |
| |||
muchachos m alegra decirles ke yo estaba ekivocado..... si kiero ver lo ke sale del puerto tenia ke puentearlo mediante un cable externo al otro puerto y ver ke pasa en el otro.......... pero como el COM2 lo tengo usado por el monitor kiero usar el paralelo... es x eso ke mi pregunta va referida a si las señales ke envia el puerto paralelo son de un valor de tension (V) aceptable pa' el puerto serie y viceversa ya ke del paralelo, ke es el ke voy a monitorear, kiero recibir y enviar datos al serie y no kiero dañar ninguno de los puertos...... se entiende mi pregunta??.....muchas gracias Javier Fileiv |
| ||||
Se entiende pero no se la respuesta, seguramente en google estara, pero esto no tiene nada que ver con la pregunta original, si abris una nueva seguramente va a ser vista por mucha mas gente que esta.
__________________ ¡Peron cumple, Evita dignifica! VIVA PERON CARAJO |