elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


  Mostrar Temas
Páginas: 1 ... 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 [22]
211  Programación / Programación C/C++ / comparacion de cadenas en: 16 Febrero 2012, 23:09 pm
estoy haciendo este programa que me pide que le ingrese datos a 10 personas cualquiera, me pide nombre,edad y estatura. Pero una vez que se los ingreso me pide que le de un nombre cualquiera y este tiene que buscar que si se encuentre, pero tengo un error porque no me esta respetando el strncmp que le puse para comparar las dos cadenas :huh: alguien que me diga donde me estoy equivocando??

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define MAX_PERSONAS 3
  4. #define NOMBRE 20
  5. #define EDAD 20
  6. #define ESTATURA 2
  7.  
  8. int main()
  9. {
  10.    int i;
  11.    char nombre[NOMBRE],buscarNombre[NOMBRE];
  12.    int edad[EDAD];
  13.    float estatura[ESTATURA];
  14.    printf("Dame los datos de 10 persona:\n");
  15.    for(i=0;i<MAX_PERSONAS;i++)
  16.    {
  17.        printf("Dame el nombre de la persona:\n");
  18.        scanf("%s",&nombre[i]);
  19.        printf("Dame la edad de la persona\n");
  20.        scanf("%d",&edad[i]);
  21.        printf("Dame la estatura:\n");
  22.        scanf("%f",&estatura[i]);
  23.        system("cls");
  24.    }
  25.    printf("Dame el nombre de la persona que deseas buscar:\n");
  26.    scanf("%s",&buscarNombre[i]);
  27.    for(i=0;i<MAX_PERSONAS;i++)
  28.    {
  29.        if(strncmp(buscarNombre,nombre,NOMBRE)!=0)
  30.        {
  31.            printf("Dame la edad de la persona\n");
  32.            scanf("%d",&edad[i]);
  33.            printf("Dame la estatura:\n");
  34.            scanf("%f",&estatura[i]);
  35.        }
  36.        else
  37.           printf("No existe\n");
  38.    }
  39.    return 0;
  40. }
  41.  

de antemano gracias
212  Programación / Programación C/C++ / problema con while en: 12 Febrero 2012, 06:43 am
Tengo un problema con mi programa en la opcion numero 1 que me pide todos los datos para registrarme y despues me vuelve a pedir la contraseña, si esta contraseña coincide con la del registro ingresa y si no entra en el ciclo while hasta darle la correcta. Pero nunca sale del while y no se por que :-(

de antemano gracias

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct
  5. {
  6.    char nombre[20];
  7.    char apellidos[20];
  8.    char ciudad[15];
  9.    char pais[15];
  10.    char escuela[25];
  11.    char correo_elect1[15];
  12.    char correo_elect2[15];
  13.    char contrasenia[10];
  14.    int edad;
  15.    char cumpleanios[10];
  16.  
  17. }registro;
  18.  
  19. int main()
  20. {
  21.    registro info_p;
  22.    int opcion,situacion;
  23.    char resp;
  24.    printf("Menu\n");
  25.    printf("1)Registrar cuenta\n");
  26.    printf("2)Editar perfil\n");
  27.    printf("3)Mensajes o Notificaciones\n");
  28.    printf("4)Salir\n");
  29.    do
  30.    {
  31.        printf("Elige una opcion:\n");
  32.        scanf("%d",&opcion);
  33.        switch(opcion)
  34.        {
  35.            case 1: printf("Registrarse \n");
  36.                    printf("Nombre\n");
  37.                    fflush(stdin);
  38.                    gets(info_p.nombre);
  39.                    printf("Apellidos\n");
  40.                    fflush(stdin);
  41.                    gets(info_p.apellidos);
  42.                    printf("Correo Electronico\n");
  43.                    fflush(stdin);
  44.                    gets(info_p.correo_elect1);
  45.                    printf("Contrasenia\n");
  46.                    fflush(stdin);
  47.                    gets(info_p.contrasenia);
  48.                    printf("Pais\n");
  49.                    fflush(stdin);
  50.                    gets(info_p.pais);
  51.                    printf("Ciudad\n");
  52.                    fflush(stdin);
  53.                    gets(info_p.ciudad);
  54.                    printf("Edad\n");
  55.                    fflush(stdin);
  56.                    scanf("%d",&info_p.edad);
  57.                    printf("\nBienvenid@ %s!!\n\n",info_p.nombre);
  58.                    printf("Ingresar\n");
  59.                    printf("Dame correo\n");
  60.                    fflush(stdin);
  61.                    gets(info_p.correo_elect2);
  62.                    while(info_p.correo_elect1!=info_p.correo_elect2)
  63.                    {
  64.                        printf("Intentalo otra vez\n");
  65.                        fflush(stdin);
  66.                        gets(info_p.correo_elect2);
  67.                    }
  68.                    printf("El correo es el correcto\n");
  69.                    break;
  70.            case 2: printf("Editar perfil\n");
  71.                    printf("Situacion sentimental\n\n");
  72.                    printf("Elige:\n");
  73.                    printf("1)Soltero\n");
  74.                    printf("2)Casado\n");
  75.                    printf("3)Union libre\n");
  76.                    scanf("%d",&situacion);
  77.                    switch(situacion)
  78.                    {
  79.                        case 1: printf("Soltero\n");
  80.                                break;
  81.                        case 2: printf("Casado\n");
  82.                                break;
  83.                        case 3: printf("Union libre\n");
  84.                                break;
  85.                        default:printf("No mostrar situacion sentimental\n");
  86.                    }
  87.                    printf("Formacion Academica\n");
  88.                    fflush(stdin);
  89.                    gets(info_p.escuela);
  90.                    printf("Cumpleanios\n");
  91.                    fflush(stdin);
  92.                    gets(info_p.cumpleanios);
  93.                    break;
  94.            case 3: printf("Mensajes o Notificaciones\n");
  95.                    printf("Quiere escribir un mensaje? (S/N)\n");
  96.                    scanf("%c",&resp);
  97.                    if(resp=='S')
  98.                       printf("Escriba el mensaje\n");
  99.                    else
  100.                    if(resp=='N')
  101.                       printf("Leer notificaciones\n");
  102.                    else
  103.                       printf("Error\n");
  104.                    break;
  105.            case 4: printf("Salir\n");
  106.                    break;
  107.        }
  108.    }while(opcion!=4);
  109.    return 0;
  110. }
  111.  
213  Programación / Programación C/C++ / funcion trunc en: 4 Febrero 2012, 21:41 pm
Hola!! Quiero usar la función trunc en mi programa al que le tengo que ingresar un numero, y este me tiene que devolver si es entero o flotante

lo que yo tengo en mente es que le paso el dato a la funcion, y cuando esta me devuelva la parte entera   le resto de nuevo el dato y si es 0 me devuelve el entero y sus rangos de valores y si no es flotante. Pero en esta ultima parte no compila :huh:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. //Este programa muestra los valores de los tipos de datos//
  5.  
  6. int main()
  7. {
  8.    char dato;
  9.    printf("Dame un dato\n");
  10.    scanf("%c",&dato);
  11.    if(trunc(dato)-dato==0)
  12.        printf("Es un tipo de dato int\nCon un rango de -32,768 a 32,767\n");
  13.    else
  14.    if(trunc(dato)-dato!=0)
  15.        printf("Es un tipo de dato float\nCon un rango de 3.4 E-38 a 3.4 E+38\n");
  16.    return 0;
  17. }
214  Programación / Programación C/C++ / problemas con punteros en: 4 Enero 2012, 20:15 pm
tengo un problema con este codigo que me tiene que ingresar un maximo de 20 registros con listas enlazadas, no se si lo estoy haciendo bien :rolleyes: no se si tengo que definir un nuevo tipo, algo asi como :

ingreso ingresos, y despues pasarle el apuntador ingreso*pIngreso y pasarle la direccion pIngreso=&ingresos :o

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>//funcion malloc()
  3. #include <conio.h> // funcion getch()
  4. #include <string.h> // funcion strcpy()
  5. #define  MAX_REG 20 //Define el maximo numero de registros
  6.  
  7. // Primero definimos los tipos
  8. typedef struct registro1
  9. {
  10.    char concepto[30+1];
  11.    char RFC[21+1];
  12.    float monto;
  13.    int mes;
  14.    struct registro1* sig;
  15.  
  16. }ingreso;
  17.  
  18. int introduceRegistro(ingreso *pIngreso);//le pasamos el puntero original de la lista
  19.  
  20. int main()
  21. {
  22.    ingreso *pIngreso;
  23.    printf("\nIngresa los datos del registro \n");
  24.    introduceRegistro(pIngreso);//Aqui todavia no estoy segura de ponerle el ampersand, porque me marca un warning:passing arg 1 of `introduceRegistro´ from incompatible pointer type
  25.  
  26.    getch();
  27.    return 0;
  28. }
  29.  
  30. int introduceRegistro(ingreso *pIngreso)
  31. {
  32.    int i;
  33.    for(i=0,pIngreso->sig==NULL;i<MAX_REG;i++,pIngreso=pIngreso->sig)
  34.    {
  35.        pIngreso=(ingreso*)malloc(sizeof(ingreso));//A todo puntero hay que asignarle memoria.
  36.        printf("Concepto :");
  37.        fflush(stdin);
  38.        gets(pIngreso->concepto);
  39.        printf("RFC :");
  40.        fflush(stdin);
  41.        gets(pIngreso->RFC);
  42.        printf("Monto :");
  43.        fflush(stdin);
  44.        scanf("%f",&pIngreso->monto);
  45.        printf("Mes :");
  46.        fflush(stdin);
  47.        scanf("%d",&pIngreso->mes);
  48.    }
  49. return 0;
  50. }
  51.  
215  Programación / Programación C/C++ / Torres de Hanoi en: 21 Diciembre 2011, 05:47 am
Código
  1.  
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define TORRE_INICIAL 1
#define TORRE_AUXILIAR 2
#define TORRE_FINAL 3
#define MAX_DISCOS 5

int hanoi(int numDiscos, int torreInicial, int torreAuxiliar, int torreFinal);
int inicializa_discos(int cantDiscos);
int diametro_discos(int cantDiscos);

int main()
{
    int cantDiscos, movimientos;
    system("Cls");
    printf("TORRES DE HANOI\n\n");
   printf("\nCantidad de discos a mover (max 5): ");
   scanf("%d", &cantDiscos);
   if(cantDiscos>MAX_DISCOS)
       printf("\nError! numero de discos maximo es 5\n");
    else
    {
        printf("\nLa serie de movimientos a realizar es:\n");
        printf("\nDiscos al inicio, se muestra el diametro de los discos:\n");
        printf("Torre1: \n",inicializa_discos(cantDiscos));
        printf("Torre2: \n");
        printf("Torre3: \n");
        movimientos = hanoi(cantDiscos, TORRE_INICIAL, TORRE_AUXILIAR, TORRE_FINAL);
        printf("\nSe realizaron en total %d movimientos\n", movimientos);
        printf("Presione una tecla para continuar...\n");
        getch();

    }
    return 0;
}

int hanoi(int numDiscos, int torreInicial, int torreAuxiliar, int torreFinal)
{
    int cantDiscos;
    static int movimientos = 0;
   if(numDiscos == 1)
   {
      printf("Mover el disco superior de la torre %d a la torre %d\n",torreInicial, torreFinal);
      movimientos++;
      printf("Torre1: \n");
      printf("Torre2: \n");
      printf("Torre3: \n");
   }
   else
   {
      hanoi(numDiscos - 1, torreInicial, torreFinal, torreAuxiliar);
      printf("Mover el disco superior de la torre %d a la torre %d\n",torreInicial, torreFinal);
      movimientos++;
      printf("Torre1: \n");
      printf("Torre2: \n");
      printf("Torre3: \n");
      hanoi(numDiscos - 1, torreAuxiliar, torreInicial, torreFinal);
   }
   return movimientos;
}

int inicializa_discos(cantDiscos)
{
    int i;
    for(i=cantDiscos;cantDiscos>=1;cantDiscos--)
       printf("%d",cantDiscos);

  return(cantDiscos);
}

Tengo un problema en la linea numero 26 de mi codigo, en vez de imprimir:

Torre1: 3 2 1 <- Son el numero de discos con los que se inicializa la torre.
 me imprime esto:

321Torre1:  (deberia de ser alreves)
 creo que no estoy llamando bien a la funcion inicializa_discos()

gracias de antemano
216  Programación / Programación C/C++ / problema con uso de strcpy en: 19 Diciembre 2011, 17:42 pm
Código
  1.  
#include <stdio.h>
#include <stdlib.h>
//constantes//
#define IVA 16.0f
#define POR_RET_IVA 10.0f
#define POR_RET_ISR 10.0f
#define CAPTURA_MES 1
#define CAP_INGRESO 2
#define CAP_GASTOS 3
#define L_INGR_ANUALES 4
#define L_GAST_ANUALES 5
#define CALC_IMPUESTOS 6
#define SALIR 7
#define MESES 12
#define GASTOS 20
#define INGRESOS 20

void mostrar_menu();
void captura_mes();
void captura_ingreso();
void captura_gasto();
void lista_ingreso_anual();
void lista_gasto_anual();
float monto(float ganancia_bruta);
void calculo_impuestos();
void inicializa();

typedef struct registro1
{
    char concepto[30+1];
    char RFC[21+1];
    float monto;
    int mes;
    struct registro1* sig;

}ingreso;

typedef struct registro2
{
    char concepto[30+1];
    char RFC[21+1];
    float monto;
    int mes;
    struct registro2* sig;
}gasto;

//variables globales de uso interno del programa//
char *meses[MESES];
int m,contador=0,mes,reg,indice,porcentaje_ISR[3];
float rango_monto[3][2];
//arreglo de ingresos y gastos//
float gastos_meses[GASTOS],ingreso_meses[INGRESOS];

int main()
{
  //variables de programa modificables por el usuario//
  ingreso *info_registro1;
  gasto *info_registro2;

  int opcion,continuar = 1;
  inicializa();
    do
    {
        mostrar_menu();
        scanf("%d",&opcion);
        switch(opcion)
        {
            case CAPTURA_MES:
                captura_mes();
                break;
            case CAP_INGRESO:
                captura_ingreso();
                break;
            case CAP_GASTOS:
                captura_gasto();
                break;
            case L_INGR_ANUALES:
                lista_ingreso_anual();
                break;
            case L_GAST_ANUALES:
                lista_gasto_anual();
                break;
            case CALC_IMPUESTOS:
                calculo_impuestos();
                break;
            case SALIR:
                continuar = 0;
                break;
            default:printf("Opcion no valida!\n");
        }
        if(continuar){
            system("pause");
        }
    }while(continuar);
    return 0;
}

void inicializa()
{
    reg=0;
    m=0;
    mes=1;
    indice=0;
    meses[0]="Enero";
    meses[1]="Febrero";
    meses[2]="Marzo";
    meses[3]="Abril";
    meses[4]="Mayo";
    meses[5]="Junio";
    meses[6]="Julio";
    meses[7]="Agosto";
    meses[8]="Septiembre";
    meses[9]="Octubre";
    meses[10]="Noviembre";
    meses[11]="Diciembre";
    rango_monto[0][0]=0;
    rango_monto[0][1]=10000.00;
    rango_monto[1][0]=10000.00;
    rango_monto[1][1]=20000.00;
    rango_monto[2][0]=20000.00;
    rango_monto[2][1]=10000000.00;
    porcentaje_ISR[0]=11;
    porcentaje_ISR[1]=15;
    porcentaje_ISR[2]=20;
}

void mostrar_menu()
{
    ingreso*info_registro1;
    ingreso*nuevo;
    nuevo=info_registro1;
    system("cls");
    printf("CALCULO DE IMPUESTOS ANUAL\n\n");
    printf("Menu principal:\n");
    printf("1. Establecer mes para la captura (mes actual es %s)\n",meses[mes-1]);
    printf("2. Captura de ingresos\n");
    printf("3. Captura de gastos\n");
    printf("4. Mostrar lista de ingresos anual\n");
    printf("5. Mostrar lista de gastos anual\n");
    printf("6. Calculo de impuestos anual\n");
    printf("7. Salir\n");
    printf("Opcion: ");
}

void captura_mes()
{
    int indice;
    printf("Establecer mes para captura\n");
    for(contador=0,indice=0;contador<MESES;contador++,indice++)
    printf("%d) %s\n",indice+1,meses[contador]);
    printf("Elige el mes (1 a 12):\n");
    fflush(stdin);
    scanf("%d",&m);
    if(m > 12)
        printf("Mes no valido!\n");
    else
    {
        printf("Se ha establecido el mes de captura en %s\n",meses[m-1]);
        mes = m;
    }
}

void captura_ingreso()
{
    ingreso*info_registro1;
    ingreso*nuevo;
    nuevo=(ingreso*)malloc(sizeof(ingreso));
    nuevo->sig=info_registro1->sig;
    info_registro1->sig=nuevo;

    printf("Captura ingresos\n");
    printf("Dame un ingreso mas para el mes de %s: \n",meses[m-1]);
    printf("Provee datos para el ingreso %d.\n",reg);
    if(reg>INGRESOS)
       printf("no hay mas espacio\n");
    printf("RFC:");
    fflush(stdin);
    gets(nuevo->RFC);
    printf("Concepto:");
    fflush(stdin);
    gets(nuevo->concepto);
    printf("Monto:");
    fflush(stdin);
    scanf("%f",&nuevo->monto);
    nuevo->mes=m;
    ++reg;
}

void captura_gasto()
{
    gasto*info_registro2;
    gasto*nuevo;
    nuevo=(gasto*)malloc(sizeof(gasto));
    nuevo->sig=info_registro2->sig;
    info_registro2->sig=nuevo;

    printf("Captura gastos\n");
    printf("Dame el gasto del mes de %s: \n",meses[m-1]);
    printf("Provee datos para el gasto %d.\n",reg);
    if(reg>GASTOS)
       printf("no hay mas espacio\n");
    printf("Concepto:");
    fflush(stdin);
    gets(nuevo->concepto);
    printf("Monto:");
    fflush(stdin);
    scanf("%f",&nuevo->monto);
    nuevo->mes=m;
    ++reg;
}

void lista_ingreso_anual()
{
    ingreso*info_registro1;
    ingreso*nuevo;
    nuevo=info_registro1->sig;
    printf("Mostrar lista de ingresos anual\n\n");
    printf("Indice  Mes\tMonto\tRFC\t\tConcepto\n");
    printf("%d\t",indice);
    printf("%s",meses[nuevo->mes-1]);
    strcpy("nuevo->monto",ingreso_meses);
    strcpy(ingreso_meses,"nuevo->RFC");
    strcpy(ingreso_meses,"nuevo->concepto");
}

void lista_gasto_anual()
{
    gasto*info_registro2;
    gasto*nuevo;
    nuevo=info_registro2->sig;
    printf("Mostrar lista de gastos anual\n");
    printf("Indice  Mes\tMonto\tCconcepto\n");
    printf("%d\t",indice);
    printf("%s",meses[nuevo->mes-1]);
    strcpy("nuevo->monto",ingreso_meses);
    strcpy(ingreso_meses,"nuevo->concepto");
}

float monto(float gan_bruta)
{
    float por_isr;
    if((gan_bruta>rango_monto[0][0])&&(gan_bruta<=rango_monto[1][0]))
    por_isr= porcentaje_ISR[0];
    else
    if((gan_bruta>rango_monto[1][0])&&(gan_bruta<=rango_monto[2][0]))
    por_isr= porcentaje_ISR[1];
    else
    if(gan_bruta>rango_monto[2][0])
    por_isr= porcentaje_ISR[2];
    else
    por_isr=0.00;

    return(por_isr);
}

void calculo_impuestos()
{
    int contador;
    float iva,subtotal,ret_isr,ret_iva,total,gan_bruta,isr,gan_neta,isr_pag,gasto_iva,iva_pag;
    float por_isr,ingreso_total,gasto_total;

    for(contador=0;contador<=MESES;contador++)
    {
        ingreso_total=ingreso_meses[contador];
        gasto_total=gastos_meses[contador];
    }
    iva=(ingreso_total*IVA)/100;
    subtotal=ingreso_total+iva;
    ret_isr=(ingreso_total*POR_RET_ISR)/100;
    ret_iva=(ingreso_total*POR_RET_IVA)/100;
    total=subtotal-(ret_isr+ret_iva);
    gan_bruta=(ingreso_total-gasto_total);
    por_isr=monto(gan_bruta);
    isr=(gan_bruta*por_isr)/100;
    gan_neta=(gan_bruta-isr);
    isr_pag=(isr-ret_isr);
    gasto_iva=(gasto_total*IVA)/100;
    iva_pag=(iva-gasto_iva-ret_iva);
    printf("CALCULO DE IMPUESTOS\n\n");
    printf("***Tabla de Recibo de Honorarios***\n");
    printf("Ingresos\t\t%.2f\n",ingreso_total);
    printf("(+) IVA\t\t\t%.2f\n",iva);
    printf("(=) Subtotal\t\t%.2f\n",subtotal);
    printf("(-) Retención ISR\t%.2f\n",ret_isr);
    printf("(-) Retención IVA\t%.2f\n",ret_iva);
    printf("(=) Total\t\t%.2f\n",total);
    printf("***Tabla Ganancias***\n");
    printf("Ingresos\t\t%.2f\n",ingreso_total);
    printf("(-) Gastos\t\t%.2f\n",gasto_total);
    printf("(=) Ganancia Bruta\t%.2f\n",gan_bruta);
    printf("(-) ISR %.2f%%\t\t%.2f\n",por_isr,isr);
    printf("(=) Ganancia Neta\t%.2f\n",gan_neta);
    printf("***Tabla ISR***\n");
    printf("ISR %.2f%%\t\t%.2f\n",por_isr,isr);
    printf("(-) ISR Retenido\t%.2f\n",ret_isr);
    printf("(=) ISR a Pagar\t\t%.2f\n",isr_pag);
    printf("***Tabla IVA***\n");
    printf("IVA\t\t\t%.2f\n",iva);
    printf("(-) Gastos IVA\t\t%.2f\n",gasto_iva);
    printf("(-) Retención IVA\t%.2f\n",ret_iva);
    printf("(=) IVA a Pagar\t\t%.2f\n",iva_pag);
}

en este codigo me marca unos warnings en la linea 225,226 y 227, tengo problemas con el strcpy

si me pudieran ayudar con eso porfavor
gracuas
217  Programación / Programación C/C++ / codigo conversion decimal a binario y complemento a dos en: 15 Diciembre 2011, 19:20 pm
Código
  1.  
int binario(int num);
int invertir(int num);

int main()
{
    int num,complemento,res;
    printf("Bits en la RAM\n\n");
    printf("Dame un valor entero: ");
    scanf("%d",&num);
    if(num>0)
        binario(num);
    else if(num<0)
    {
        complemento=binario(num);
        res=complemento_a_dos(complemento);
    }

    return 0;
}

int binario(int num)
{
    if(num>1)
    {
        binario(num/2);
        num%=2;
        printf("%d",num);
    }
    else
    {
        printf("%d",num);
        return num;
    }
    return 0;
}

int complemento_a_dos(int complemento)
{
    int res;
    while((complemento%=10)!=1){
    complemento/=10;
    }
       res=~(complemento%=10);

 return res;
}

tengo un problema con este codigo, hasta la funcion que convierte decimal en binario esta bien, pero despues cuando ingrese un numero negativo me tiene que dar el complemento a dos, y ahí fue donde me perdi completamente. Estaba pensando que tal vez con divisiones sucesivas hasta que me aparezca un 1 de derecha a izquierda y despues los digitos que le siguen cambiar los 0 por unos y viceversa
Páginas: 1 ... 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 [22]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines