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. Señores corregi los errores y definitivamente no es lo del cast ni lo del &......... nose ke voy a hacer!!!!!!!!! Javier Fileiv...

  #31 (permalink)  
Antiguo 02/02/2005, 22:16
 
Fecha de Ingreso: enero-2005
Mensajes: 60
Antigüedad: 19 años, 9 meses
Puntos: 0
Señores corregi los errores y definitivamente no es lo del cast ni lo del &......... nose ke voy a hacer!!!!!!!!!
Javier Fileiv
  #32 (permalink)  
Antiguo 02/02/2005, 22:17
 
Fecha de Ingreso: enero-2005
Mensajes: 60
Antigüedad: 19 años, 9 meses
Puntos: 0
Cita:
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.
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
un saludo
Javier Fileiv
  #33 (permalink)  
Antiguo 02/02/2005, 23:02
 
Fecha de Ingreso: noviembre-2003
Ubicación: Mexico
Mensajes: 1.081
Antigüedad: 21 años
Puntos: 7
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
  #34 (permalink)  
Antiguo 03/02/2005, 01:11
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años, 5 meses
Puntos: 74
Cita:
Iniciado por blackwind
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);
Creo que eso lo dije hace varios dias (exactamente el 25/01/2005).
Es mas que obvio que eso esta mal, el compilador intentara escribir sobre un valor empaquetado (segun el formato de numeros flotantes IEEE-754 con 4 bytes) y no sobre una direccion de memoria valida.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO

Última edición por Eternal Idol; 03/02/2005 a las 01:23
  #35 (permalink)  
Antiguo 03/02/2005, 07:53
 
Fecha de Ingreso: enero-2005
Mensajes: 60
Antigüedad: 19 años, 9 meses
Puntos: 0
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
  #36 (permalink)  
Antiguo 03/02/2005, 07:59
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años, 5 meses
Puntos: 74
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
  #37 (permalink)  
Antiguo 03/02/2005, 08:09
 
Fecha de Ingreso: enero-2005
Mensajes: 60
Antigüedad: 19 años, 9 meses
Puntos: 0
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
  #38 (permalink)  
Antiguo 03/02/2005, 12:26
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años, 5 meses
Puntos: 74
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
  #39 (permalink)  
Antiguo 08/02/2005, 09:46
 
Fecha de Ingreso: enero-2005
Mensajes: 60
Antigüedad: 19 años, 9 meses
Puntos: 0
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();
}
  #40 (permalink)  
Antiguo 08/02/2005, 13:20
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años, 5 meses
Puntos: 74
Lee mi anterior mensaje, hay errores que no has solucionado en tu ultimo mensaje.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #41 (permalink)  
Antiguo 08/02/2005, 14:55
 
Fecha de Ingreso: enero-2005
Mensajes: 60
Antigüedad: 19 años, 9 meses
Puntos: 0
listo con eso....pero m sigue sin dejarme ingresar el float!!!!!
ya toy CRAZY!!!!!!!
  #42 (permalink)  
Antiguo 08/02/2005, 14:57
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años, 5 meses
Puntos: 74
¿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
  #43 (permalink)  
Antiguo 08/02/2005, 19:25
 
Fecha de Ingreso: enero-2005
Mensajes: 60
Antigüedad: 19 años, 9 meses
Puntos: 0
ahora tengo el TurboC 3.0
  #44 (permalink)  
Antiguo 09/02/2005, 00:47
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años, 5 meses
Puntos: 74
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
  #45 (permalink)  
Antiguo 09/02/2005, 09:37
 
Fecha de Ingreso: enero-2005
Mensajes: 60
Antigüedad: 19 años, 9 meses
Puntos: 0
gracias.... toy intentando descargarlo y probar con ese
  #46 (permalink)  
Antiguo 09/02/2005, 09:44
 
Fecha de Ingreso: enero-2005
Mensajes: 60
Antigüedad: 19 años, 9 meses
Puntos: 0
mira..... no m lo esta bajando.lo tenes pa' mandarlo si podes....... mi mail es [email protected]
si podes mandalo
un saludo
Javier Fileiv
  #47 (permalink)  
Antiguo 09/02/2005, 11:32
 
Fecha de Ingreso: noviembre-2003
Ubicación: Mexico
Mensajes: 1.081
Antigüedad: 21 años
Puntos: 7
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.
  #48 (permalink)  
Antiguo 09/02/2005, 12:18
 
Fecha de Ingreso: enero-2005
Mensajes: 60
Antigüedad: 19 años, 9 meses
Puntos: 0
m baje el VC toolkit..... pero nose como usarlo
un saludo
  #49 (permalink)  
Antiguo 11/02/2005, 07:03
 
Fecha de Ingreso: enero-2005
Mensajes: 60
Antigüedad: 19 años, 9 meses
Puntos: 0
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
  #50 (permalink)  
Antiguo 11/02/2005, 08:56
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años, 5 meses
Puntos: 74
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
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 00:28.