Foros del Web » Programación para mayores de 30 ;) » C/C++ »

control de errores c++

Estas en el tema de control de errores c++ en el foro de C/C++ en Foros del Web. tengo el siguiente trozo de codigo, en marquee puedo meter solo alternate o scroll, los movimientos de una marquesina, pero como hago para comprarar el ...
  #1 (permalink)  
Antiguo 21/05/2006, 07:48
 
Fecha de Ingreso: febrero-2002
Ubicación: Navarra
Mensajes: 701
Antigüedad: 22 años, 3 meses
Puntos: 2
control de errores c++

tengo el siguiente trozo de codigo, en marquee puedo meter solo alternate o scroll, los movimientos de una marquesina, pero como hago para comprarar el valor qeu tiene la marquesina con uno de los valores posibles? para comparar caracteres es con strcmp no? me sale este error:
strcmp' : cannot convert parameter 1 from 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' to 'const char *'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called

case 2:
cout <<"introduce "<<a<<" nueva"<<endl;
cin>>com;
if (com!=alternate || com!= scroll)
{b=2;
throw ERROR_EN_MOVIMIENTO;
}
if ((strcmp(com, alternate)<0) || (strcmp(com, alternate)>0) || (strcmp(com, scroll)!=0) || (strcmp(com, scroll)!=0))
{
b=2;
throw ERROR_EN_MOVIMIENTO;
}

movimiento=com;
b=0;
break;
}
}
catch(error e)
{
switch(e)
{
case ERROR_EN_MOVIMIENTO:
cerr<<"Ese movimiento no existe"<<endl;
break;
case RANGO:
cerr<<"El numero introducido esta fuera del rango"<<endl;
break;
}
__________________
asp, php, .net, adaptandose a las necesidades
  #2 (permalink)  
Antiguo 22/05/2006, 00:56
 
Fecha de Ingreso: abril-2006
Ubicación: Acapulco Gro. México
Mensajes: 483
Antigüedad: 18 años
Puntos: 2
No veo que tipode cadenas usas, pero creo que estas usando la clase string.

strcmp no funciona con cadenas de la clase string, sino con arrays de caracteres:

char * cad;
o
char cad[];

si usas la cadena string, creo que tienen sobrecargado el operador << y >> de cout y cin, pero para comparar usa el operador == > < o alguna funcion miembro Compare, la verdad no uso la clase string.

Saludos.
  #3 (permalink)  
Antiguo 22/05/2006, 11:07
 
Fecha de Ingreso: febrero-2002
Ubicación: Navarra
Mensajes: 701
Antigüedad: 22 años, 3 meses
Puntos: 2
control de errores ++

te paso la funcion entera, si necesitas mas informacion te paso el proyecto entero. Que librerias de c++ se pueden utilizar? tengo q hacer otra aparte de: (iomanip tambien esta).
#include <iostream>
#include <string>
#include <fstream>
#include <iomanip>

void marquee::pedir_marquee (string a, int b)
{
string velo;
string com;
string alternate;
string scroll;
int i;
int velo1;
do{
try
{

switch (b)
{
case 1:
cout <<"introduce "<<a <<" nueva"<<endl;
cin>>velo;
velo1=0;
for (i=0;i<velo.size();i++)
{
velo1=velo1+(velo.at(i)-48)*(pow(10, velo.size()-i-1));
}
for(i=0; i<velo.size();i++)
{
if (velo.at(i)<48 || velo.at(i)>57)
{
b=1;
throw LETRAS_EN_NUMEROS;
}
if (velo1<0 || velo1>500)
{
throw RANGO;
}
}

velocidad=velo;
b=0;
break;

case 2:
cout <<"introduce "<<a<<" nueva"<<endl;
cin>>com;
if (com!=alternate || com!= scroll)
{b=2;
throw ERROR_EN_MOVIMIENTO;
}/*
if ((strcmp(com, alternate)<0) || (strcmp(com, alternate)>0) || (strcmp(com, scroll)!=0) || (strcmp(com, scroll)!=0))
{
b=2;
throw ERROR_EN_MOVIMIENTO;
}
*/
movimiento=com;
b=0;
break;
}
}
catch(error e)
{
switch(e)
{
case ERROR_EN_MOVIMIENTO:
cerr<<"Ese movimiento no existe"<<endl;
break;
case RANGO:
cerr<<"El numero introducido esta fuera del rango"<<endl;
break;
}
}
}while(b!=0);

}
__________________
asp, php, .net, adaptandose a las necesidades
  #4 (permalink)  
Antiguo 22/05/2006, 14:29
 
Fecha de Ingreso: abril-2006
Ubicación: Acapulco Gro. México
Mensajes: 483
Antigüedad: 18 años
Puntos: 2
La clase string, tienen la funcion Compare y los operadores logicos, para hacer una comparacion entre cadenas,

la funcion Compare se comporta de la misma forma que strcmp.

Saludos.
  #5 (permalink)  
Antiguo 22/05/2006, 15:52
 
Fecha de Ingreso: febrero-2002
Ubicación: Navarra
Mensajes: 701
Antigüedad: 22 años, 3 meses
Puntos: 2
compare

sigo teniendo problemas, ya he kitado strcmp y esta como arriba en el codigo, pero no se, es peor, ya no se que hacer
__________________
asp, php, .net, adaptandose a las necesidades
  #6 (permalink)  
Antiguo 22/05/2006, 21:24
 
Fecha de Ingreso: abril-2006
Ubicación: Acapulco Gro. México
Mensajes: 483
Antigüedad: 18 años
Puntos: 2
en esta seccion seria:
if ((strcmp(com, alternate)<0) || (strcmp(com, alternate)>0) || (strcmp(com, scroll)!=0) || (strcmp(com, scroll)!=0))

if((com.Compare(alternate) < 0) || (com.Compare(alternate) > 0) || (com.Compare(scroll) != 0) || (com.Compare(scroll) != 0))
  #7 (permalink)  
Antiguo 23/05/2006, 08:10
 
Fecha de Ingreso: febrero-2002
Ubicación: Navarra
Mensajes: 701
Antigüedad: 22 años, 3 meses
Puntos: 2
compare

ya solucione ese error, es com!=alternate && com != scroll
ahora el problema lo tengo en otro lugar del fichero. gracias
__________________
asp, php, .net, adaptandose a las necesidades
  #8 (permalink)  
Antiguo 23/05/2006, 18:56
 
Fecha de Ingreso: abril-2006
Ubicación: Acapulco Gro. México
Mensajes: 483
Antigüedad: 18 años
Puntos: 2
Si eso te comente antes, la funcion Compare de la clase string, esta sobrecargada con los operadores logicos. los cuales usas.
seguimos aqui.

Saludos.
  #9 (permalink)  
Antiguo 24/05/2006, 09:37
 
Fecha de Ingreso: febrero-2002
Ubicación: Navarra
Mensajes: 701
Antigüedad: 22 años, 3 meses
Puntos: 2
uml

hola muy buenas , podrias echarme una mano con el uml, los casos de actividades me lian mucho
__________________
asp, php, .net, adaptandose a las necesidades
  #10 (permalink)  
Antiguo 24/05/2006, 14:39
 
Fecha de Ingreso: abril-2006
Ubicación: Acapulco Gro. México
Mensajes: 483
Antigüedad: 18 años
Puntos: 2
Ja Ja ahora sí te voy a fallar, pues de UML no se nada.
Alguien andara por ahi que sepa de esto.

Voy a investigar un poco por si acaso.

Saludos.
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 02:55.