Domingo 15 de Diciembre de 2024, 18:47
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Problema En La Comparacion De Caracteres!
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Problema En La Comparacion De Caracteres! (Leído 1269 veces)
cazadorite
Nuevo Miembro
Mensajes: 23
Problema En La Comparacion De Caracteres!
«
en:
Viernes 14 de Diciembre de 2007, 00:41 »
0
weno el problema es que me salta error en el if(vcat=='r') y no tengo idea porque!!
pd:no se porque todo el mensaje aparece tachado
una municipalidad desea efectuar un control de la cobranza del impuesto en los 6 bimestres del ultimo año. existen 400 contribuyentes, numerados del 1 al 400.
1er lote ordenado por bimestre, con 18 registros, conteniendo los importes de los impuestos del ultimo año.
contiene:
bimestre (1 a 6)
categoria del contribuyente( 'r' residencial,'c' comercial,'y'country)
importe
2do lote tiene datos de los 400 contribuyentes .cada registro tiene.
numero de contribuyente (1 a 400)
categoria del contribuyente( 'r' residencial,'c' comercial,'y'country)
3er lote ordenado secuencialmete por numero de contribuyente, nos informa sobre cada pago efectuado. y tiene:
numero de contribuyente (1 a 400)
bimestre pagado.
finaliza con nro de contribuyente ==0
informar:
A)la deuda de cada contribuyente, con el siguiente formato
deudas registradas en el año 20xx
Contribuyente Bimestres 1-2-3-4-5-6 Importe adeudado
XXXX X X XXXXX.XX
XXXX X X X
*****************************
Código: Text
#include <stdio.h>
#include<conio.h>
#include <string.h>
void main (void)
{
int b,imp,nc,vbr[2],vbc[2],vby[2];
char vcat[2][2],cat;
int mp[2][2]={0};
for(int i=0; i<6; i++)
{
printf(" bimestre (1 a 2) ");
scanf("%d",&b);
printf(" categoria contribuyente (r= residencial,c=comercial,y=country ");
scanf("%c",&cat);
printf(" importe ");
scanf("%d",&imp);
switch(cat)
{
case'r':
{
vbr[b-1]=imp;
}
case'c':
{
vbc[b-1]=imp;
}
case'y':
{
vby[b-1]=imp;
}
}
}
for(int j=0; j<2; j++)
{
printf(" categoria contribuyente (r= residencial,c=comercial,y=country ");
gets(vcat[j]);
}
printf(" nro contribuyente (1 a 2) ");
scanf("%d",&nc);
while(nc!=0)
{
printf(" bimestre pagado (1 a 2) ");
scanf("%d",&b);
mp[nc-1][b-1]++;
printf(" nro contribuyente (1 a 2) ");
scanf("%d",&nc);
}
for(int k=0; k<2; k++)
{
for(int s=0; s<2; s++)
{
if(mp[k][s]==0)
{
if(vcat[s]=='r')//necesito chekiar a que categoria pertenece nose porque me salta error :P
printf(" nro contribuyente %d bimestre %d deuda %d ",k+1,s+1,vbr[s]); //y aca mostraria
} // el contribuyente
//que no pago
// y su deuda
}
}
}
Tweet
ProfesorX
Moderador
Mensajes: 796
Nacionalidad:
Re: Problema En La Comparacion De Caracteres!
«
Respuesta #1 en:
Viernes 14 de Diciembre de 2007, 02:35 »
0
Eel error es el siguiente:
Código: Text
if(vcat[s]=='r')//necesito chekiar a que categoria pertenece nose porque me salta error :P
estas comparando un string (cadena de caracteres) con un char, aunque un string solo tenga un caracter, internamente ocupa 2 espacios, uno para el caracter y otro par el "fin de cadena" (o nulo), asi que necesitas utilizar la funcion strcmp, para comparar cadenas, o comparar solamente el primer caracter.
Código: Text
if(vcat[s][1] == 'r')
o (mas correcto)
Código: Text
if(strcmp(vcat[s], "r") == 0)
el resultado de strcmp es = a cero, si las cadenas son iguales.
Saludos
NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================
cazadorite
Nuevo Miembro
Mensajes: 23
Re: Problema En La Comparacion De Caracteres!
«
Respuesta #2 en:
Viernes 14 de Diciembre de 2007, 03:02 »
0
hi tengo una duda el programa funka pero no del todo bien cuando pongo que son todos de la categoria comercial o country me sigue mostrando la deuda de residencial
es por la funcion strcmp esa compara la longitud si tiene los misma cantidad de caracteres y como el if de residencial esta primero supongo entra ahi (no hace diferencia de R, C o Y)y muestra esa deuda siempre.. como hago para que acceda a la categoria que yo quiero
Código: Text
#include <stdio.h>
#include<conio.h>
#include <string.h>
void main (void)
{
int b,imp,nc,vbr[2],vbc[2],vby[2];
char vcat[2][2],cat;
int mp[2][2]={0};
for(int i=0; i<6; i++)
{
printf(" bimestre (1 a 2) ");
scanf("%d",&b);
fflush(stdin);
printf(" categoria contribuyente (r= residencial,c=comercial,y=country ");
scanf("%c",&cat);
printf(" importe ");
scanf("%d",&imp);
switch(cat)
{
case'r':
{
vbr[b-1]=imp;
}
case'c':
{
vbc[b-1]=imp;
}
case'y':
{
vby[b-1]=imp;
}
}
}
for(int j=0; j<2; j++)
{
fflush(stdin);
printf(" categoria contribuyente (r= residencial,c=comercial,y=country "); //si cargo todo de Comercial
gets(vcat[j]); //
}
printf(" nro contribuyente (1 a 2) ");
scanf("%d",&nc);
while(nc!=0)
{
printf(" bimestre pagado (1 a 2) ");
scanf("%d",&b);
mp[nc-1][b-1]++;
printf(" nro contribuyente (1 a 2) ");
scanf("%d",&nc);
}
for(int k=0; k<2; k++)
{
for(int s=0; s<2; s++)
{
if(mp[k][s]==0)
{
if(strcmp(vcat[s],"r")==0) //estos if solo toman residencial debe ser por la funcion strcmp
printf(" nro contribuyente %d bimestre %d deuda %d \n",k+1,s+1,vbr[s]); // si pongo otra categoria
if(strcmp(vcat[s],"c")==0) // que no sea residencial
printf(" nro contribuyente %d bimestre %d deuda %d \n",k+1,s+1,vbr[s]); //igual me sigue mostrando
if(strcmp(vcat[s],"y")==0) // la deuda de residencial
printf(" nro contribuyente %d bimestre %d deuda %d \n",k+1,s+1,vbr[s]); // en ves de la comercial
}
}
}
}
cazadorite
Nuevo Miembro
Mensajes: 23
Re: Problema En La Comparacion De Caracteres!
«
Respuesta #3 en:
Viernes 14 de Diciembre de 2007, 03:14 »
0
listo arreglado perdonen
Código: Text
#include <stdio.h>
#include<conio.h>
#include <string.h>
void main (void)
{
int b,imp,nc,vbr[2],vbc[2],vby[2];
char vcat[2][2],cat;
int mp[2][2]={0};
for(int i=0; i<6; i++)
{
printf(" bimestre (1 a 2) ");
scanf("%d",&b);
fflush(stdin);
printf(" categoria contribuyente (r= residencial,c=comercial,y=country ");
scanf("%c",&cat);
printf(" importe ");
scanf("%d",&imp);
switch(cat)
{
case'r':
{
vbr[b-1]=imp;
}
case'c':
{
vbc[b-1]=imp;
}
case'y':
{
vby[b-1]=imp;
}
}
}
for(int j=0; j<2; j++)
{
fflush(stdin);
printf(" categoria contribuyente (r= residencial,c=comercial,y=country ");
gets(vcat[j]);
}
printf(" nro contribuyente (1 a 2) ");
scanf("%d",&nc);
while(nc!=0)
{
printf(" bimestre pagado (1 a 2) ");
scanf("%d",&b);
mp[nc-1][b-1]++;
printf(" nro contribuyente (1 a 2) ");
scanf("%d",&nc);
}
for(int k=0; k<2; k++)
{
for(int s=0; s<2; s++)
{
if(mp[k][s]==0)
{
if(strcmp(vcat[s],"r")==0)
printf(" nro contribuyente %d bimestre %d deuda %d \n",k+1,s+1,vbr[s]);
if(strcmp(vcat[s],"c")==0)
printf(" nro contribuyente %d bimestre %d deuda %d \n",k+1,s+1,vbc[s]);
if(strcmp(vcat[s],"y")==0)
printf(" nro contribuyente %d bimestre %d deuda %d \n",k+1,s+1,vby[s]);
}
}
}
}
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Problema En La Comparacion De Caracteres!