Cita de: ivancea96 en 12 Enero 2014, 16:59 PM
Ahora falta el print n%2 :O
A ver si a la tercera es la vencida xD
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes MenúCita de: ivancea96 en 12 Enero 2014, 16:59 PM
Ahora falta el print n%2 :O
Cita de: engelx en 12 Enero 2014, 08:27 AM
cuando llamas a decBin dentro de esa misma funcion, para efectos del diagrama de flujo es como si llamaras a una función externa, ya que a fin de cuentas eso es lo que está haciendo, que la función que llame seaexactamente igual, no tiene nada que ver
#include <stdio.h>
#include "decBin.h"
void decBin(int n);
int leeNumero();
int main ()
{
int n;
n = leeNumero();
decBin(n);
printf("\n");
return 0;
}
int leeNumero()
{
int numero;
do{
printf(T_INTRODUZCA_NUMERO);
scanf("%d", &numero);
}
while(numero < 0);
return numero;
}
void decBin (int n)
{
if (n == 0)
printf("0");
else if (n == 1)
printf("1");
else
{
decBin (n/2);
printf("%d", n % 2);
}
}
Cita de: engelx en 10 Enero 2014, 00:50 AM
tu programaste hexDec? por hexDec revisa la validez de los caracteres... lo otro que no entiendo es por qué tendrias que quitar cosas de hexDec :s creo que es bueno que te expliques con mas detalle (sin codigo) para poder comprender lo siguiente...
- que tienes?
- que quieres?
- que sabes?
- cual es tu problema?
- donde está el problema?
porque hexValidos a simple vista se ve funcional, hexDec también, así que no comprendo el problema del programa
#include <stdio.h>
#define NOERROR 1
#define ERROR 0
int hexValidos(char a, char b);
int hexDec(char c1, char c2);
int main()
{
/* Declaramos las variables */
char car1;
char car2;
/* Bucle While para que salga con qq */
do
{
printf("Introduzca el numero hexadecimal: ");
scanf(" %c %c", &car1, &car2);
hexDec(car1, car2);
}
while(car1 != 'q' && car2 != 'q');
return 0;
}
int hexDec(char c1, char c2)
{
char v1;
char v2;
int cuno = NOERROR;
int cdos = NOERROR;
int resultado;
if (c1 != 'q' && c2 != 'q')
{
if ('0' <= c1 && c1 <= '9')
v1 = c1 - '0';
else if ('A' <= c1 && c1 <= 'F')
v1 = c1 - 'A' + 10;
else if ('a' <= c1 && c1 <= 'f')
v1 = c1 - 'a' + 10;
else
{
hexValidos(c1,c2);
}
if ('0' <= c2 && c2 <= '9')
v2 = c2 - '0';
else if ('A' <= c2 && c2 <= 'F')
v2 = c2 - 'A' + 10;
else if ('a' <= c2 && c2 <= 'f')
v2 = c2 - 'a' + 10;
else
{
hexValidos(c1,c2);
}
if (cuno == NOERROR && cdos == NOERROR)
{
resultado = 16 * v1 + v2;
printf("El valor decimal de 0x%c%c es %d\n", c1, c2,
resultado);
}
}
cuno = NOERROR;
cdos = NOERROR;
return resultado;
}
int hexValidos(char a, char b)
{
char va1;
char va2;
int cuno = NOERROR;
int cdos = NOERROR;
if (a != 'q' && b != 'q')
{
if ('0' <= a && a <= '9')
va1 = a - '0';
else if ('A' <= a && a <= 'F')
va1 = a - 'A' + 10;
else if ('a' <= a && a <= 'f')
va1 = a - 'a' + 10;
else
{
cuno = ERROR;
}
if ('0' <= b && b <= '9')
va2 = b - '0';
else if ('A' <= b && b <= 'F')
va2 = b - 'A' + 10;
else if ('a' <= b && b <= 'f')
va2 = b - 'a' + 10;
else
{
cdos = ERROR;
}
if (cuno == ERROR || cdos == ERROR)
{
printf("Invalido\n");
}
}
return 0;
}
#include <stdio.h>
#define NOERROR 1
#define ERROR 0
int hexDec(char c1, char c2);
int main()
{
/* Declaramos las variables */
char car1;
char car2;
/* Bucle While para que salga con qq */
do
{
printf("Introduzca el numero hexadecimal: ");
scanf(" %c %c", &car1, &car2);
hexDec(car1, car2);
}
while(car1 != 'q' && car2 != 'q');
return 0;
}
int hexDec(char c1, char c2)
{
char v1;
char v2;
int cuno = NOERROR;
int cdos = NOERROR;
int resultado;
if (c1 != 'q' && c2 != 'q')
{
if ('0' <= c1 && c1 <= '9')
v1 = c1 - '0';
else if ('A' <= c1 && c1 <= 'F')
v1 = c1 - 'A' + 10;
else if ('a' <= c1 && c1 <= 'f')
v1 = c1 - 'a' + 10;
else
{
cuno = ERROR;
printf("Error en el primer valor introducido\n");
}
if ('0' <= c2 && c2 <= '9')
v2 = c2 - '0';
else if ('A' <= c2 && c2 <= 'F')
v2 = c2 - 'A' + 10;
else if ('a' <= c2 && c2 <= 'f')
v2 = c2 - 'a' + 10;
else
{
cdos = ERROR;
printf("Error en el segundo valor introducido\n");
}
if (cuno == NOERROR && cdos == NOERROR)
{
resultado = 16 * v1 + v2;
printf("El valor decimal de 0x%c%c es %d\n", c1, c2,
resultado);
}
}
cuno = NOERROR;
cdos = NOERROR;
return resultado;
}
void hexValidos(char a, char b)
{
int v1;
int v2;
int valor;
int ca = NOERROR;
int cb = NOERROR;
if (a != 'q' && b != 'q')
{
if ((('0' <= a && a <= '9') || ('A' <= a && a <= 'F') || ('a' <= a && a <= 'f')) && (('0' <= b && b <= '9') || ('A' <= b && b <= 'F') || ('a' <= b && b <= 'f')))
hexDec(c1,c2);
else
printf("Invalido\n");
return;
}
Cita de: dato000 en 9 Enero 2014, 02:11 AM
Ahhh el llamado pseudocódigo, esos diagramas de flujo son excelentes para confundir a las personas y venderles una buena idea o una completa basura con una lógica y cáracter argumentado con un encanto sin igual...
En fin, viejos recuerdos, mira, una cosa que se me hace raro en las instituciones es que no enseñan a realizar el ciclo for, extraño, pero así pasa, lo hicieron en el mio, lo hicieron en muchos, hay muchas cosas que no se enseñan, y que estan en los libros amigo mio, internet no siempre es la respuesta.
No es tan dificil, solo es cuestión de leer un poco, si quieres saber más, que bien te haría, te sugiero estos sitios, hablan también de C# que también es muy util, pero digamos que te dejo estos links para que uses la referencia que tienen sobre los diagramas.
Codificación del diagrama de flujo
Estructura repetitiva for
Estructura repetitiva while
Estructura repetitiva do while
Aquí el curso, muy recomendable.
Curso introduccion a CSharp/C# - CSharpYa
Saludos