Menú

Mostrar Mensajes

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ú

Mensajes - avesudra

#801
Programación C/C++ / Re: Ayuda en C
29 Junio 2012, 02:46 AM
Bueno se me ha adelantado durasno , la proxima vez que postees , por favor pon las etiquetas GeSHi y los errores , verás que pronto acuden los usuarios a ayudar. Y lo que te venia diciendo durasno corregido , mas una cosa ¿Porqué utilizas conio.h? para hacer el getch , simplemente en vez de utilizar valores enteros de carácteres para comparar en el switch ,utiliza valores enteros que es mas fácil , y recoges la opcion con:
scanf("%d",&opcion);
Te dejo el código corregido , he dejado los comentarios y eso , he añadido la función de buscar persoa para que te buscase un nombre que tu le metieses también , y los problemillas puntuales que salían :)

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
//#include <conio.h> Omitido , acostumbrate a no usarla...


typedef struct perso//definimos la estructura que usaremos, debemos tener cuidado de no elegir los mismo nombres
        //para la definicion de la variable y para la variable
{
    char nombre [30];
    char apellido [30];
    int edad;
    struct perso *lista;

} persona;

void ingrese_persona(persona *p);//declaramos las funciones
void imprima_persona(persona *p);
persona *busca_persona(persona *listanueva,char *nombre);
persona *agregar_persona(persona*lista);

int main ()
{
    int opcion=0,N=0;
    persona *listanueva=NULL;
    char nombpersbusc[30];//Variable para albelgar el nombre de la persona a buscar.
    do //ciclo do while para evitar seleccionar un numero que no este entre las opciones
    {
        printf ("\n\nMenu:\n\n");
        printf("Seleccione una opcion:\n\t\t");
        printf("\n\n\t\t 1.-Ingresar persona");
        printf("\n\t\t2.-Imprimir lista");
        printf("\n\t\t3.Buscar persona");
        printf("\n\t\t4.-Salir\n\n");
        scanf("%d", &opcion);
        //opcion=getch();//se ocupa getch() y no getchar() o si no me devuelve dos veces el menu cada vez y nos lee el caracter desde teclado, parecido a scanf
        switch (opcion)
        {

        case 1://definimos las opciones y sus correspondientes valores
            if(N<5)
            {
                printf("Selecciono opcion: 1\n\n");
                listanueva=agregar_persona(listanueva);//llama a funcion
                N++;
            }
            else
                printf("limite de personas");
            break;
        case 2:
            printf("Selecciono opcion: 2\n\n");
            imprima_persona(listanueva);//llama para imprimri
            break;
        case 3:
            printf("Selecciono opcion:3\n\n");
            printf("Digame el nombre de la persona a buscar:");
            scanf("%s",nombpersbusc);
            listanueva=busca_persona(listanueva,nombpersbusc);
            break;
        default:
            printf("seleccion no valida\n\n"); //nos evita
            break;

        }

    }

    while (opcion!=4);
    return 0;

}

void ingrese_persona (persona *p)
{
    printf("\nIngrese nombre: ");
    scanf("%s", p->nombre);
    printf("Ingrese apellido: ");
    scanf("%s", p->apellido);
    printf("Ingrese edad: ");
    scanf("%d", &(p->edad));
    p++;
    p->lista=NULL;
}

void imprima_persona(persona *p)
{
    persona *aux3=p;
    while (aux3!=NULL)
    {
        printf(" %s %s (%d años)\n",aux3->nombre, aux3->apellido, aux3->edad);
        aux3=aux3->lista;//definimos un puntero auxiliar para evitar que el puntero quede en nULL
    }
}

persona *agregar_persona(persona *auxlista)//definicion de puntero a persona lista
{
    persona *aux2lista=(persona*)malloc(sizeof(persona));//reservamos con memoria dinamica un espacio para el puntero
    ingrese_persona(aux2lista);//agregamos la funcnio
    aux2lista->lista=NULL;//ahora debemos usar un puntero auxiliar para que asi lista nos quede apuntando a NULL
    if (auxlista==NULL)
    {
        auxlista=aux2lista;//si el puntero auxiliar es igual a NULL quedara apuntando a NUll
    }
    else
    {
        persona *actual=auxlista,*anterior;//creacion de dos punteros para recorrer la lista
        while (actual!=NULL)
        {
            anterior=actual;//anterior queda apuntando a actual
            actual=actual->lista;//actual apunta al siguietne
        }
        anterior->lista=aux2lista;//de esta forma se genera que el puntero no este apuntando a NULL si no al puntero siguiente
    }
    return(auxlista);//devuleve el puntero a lista
}

persona *busca_persona(persona *listanueva,char *nombre)
{
    persona *auxbuscar=listanueva;
    while (auxbuscar!=NULL)
    {
        //if (strcmp(auxbuscar->nombre,nombre)==0) Para comparar cadenas utiliza strcmp!!!!!
        if(strcmp(auxbuscar->nombre,nombre)==0)
        {
            printf("nombre encontrado\n");
            return auxbuscar;
        }
        auxbuscar=auxbuscar->lista;
    }
    printf ("no existe\n");
    return auxbuscar;
}


¡Un saludo!
#802
Tengo problemas con la codificación UTF-8 , y es que yo convierto el texto del buffer a ISO-8859-1 hago lo que sea con el , lo vuelvo a convertir a UTF-8 y lo pongo en el text view del resultado , pero en ese resultado a veces hay letras que son cuadrados rellenos con cuatro números, entonces al pasar esta cadena cifrada por algún medio, por algún motivo pierde información y la persona que la recibe la descifra pero salen algunos carácteres raros.

Y con respecto a pasar texto cifrado de Linux a Windows se me complica la vida y mi cabeza no dá para mas , no sé si puede ser por el medio por el que paso el texto , si el programa está mal ni idea la verdad. Sé que mi Ubuntu 11.10 utiliza UTF-8 y que Windows (otro no se cual) , no se si puede ser eso...

¡Un saludo!  ;D

EDITADO: He probado a pasar un .txt con codificación UTF-8 de Windows a Linux y ha funcionado o sea que el problema es el medio de comunicación (tuenti, gmail, facebook)...
#803
Muchísimas gracias por interesarte daniyo , si son de esas todas las que quieras  ;-) , por cierto me he dado cuenta de que en el source que he puesto falta una carpeta llamada recursos que es donde está el .glade que le da la interfaz al programa y también he cambiado algunas cosillas para no tener problemas con las codificaciones de Windows y Linux así que lo actualizo y edito los links del post inicial.

¡Un saludo!
#804
Buenas a todos, pues nada después de bastante tiempo programando en consola , he decidido portar mi proyecto más serio de aprendiz llamado des&&crypt (se que es cutre el proyecto pero bueno) a modo gráfico , se trata de un encriptador y desencriptador de texto plano , que me parece que utiliza criptografía simétrica.Os dejo el source (es portable ) y la aplicación y por favor hagan críticas , todas las que puedan, pero constructivas eh no destructivas :)

¡Un Saludo! y gracias a Daniyo por contestarme en la otra cuestión que era sobre esto.

Source ---> http://www.mediafire.com/?bmt5kyz9e2wb8ll
Versión compilada(Para Windows) --> http://www.mediafire.com/?9ki7127un6q89ui

PD: Espero poner las de linux no se me enfaden, aunque todavia no he hecho nada con gtk+ en linux pero como es portable supongo que será facil de compilar.
#805
Programación C/C++ / Re: Problema con GTK+
27 Junio 2012, 14:31 PM
Ya ya eso lo sabia , ya está arreglado , lo que pasaba es que copiaba las dll y eso pero no la carpeta donde van los themes de GTK+ entonces aparecía el modo clásico , de todas maneras me sige pareciendo una barbaridad 10 megabytes de espacio para un programa tan cutre. ¿Se puede compilar estáticamente con GTK+ en C? Me parecía haber leído que nó.
#806
Programación C/C++ / Problema con GTK+
27 Junio 2012, 13:06 PM
Buenas a todos , hace ya tiempo quise empezar a programar una interfaz gráfica aunque todavía no había terminado de aprender C y a día de hoy sigo igual , bueno  a lo que vamos tengo un problema no con las librerías de GTK+ en si , sino con su apariencia , mi problema es que cuando compilo mi programa sobre una plataforma(por si lo preguntais) Windows 7 x64 , y lo paso a otro ordenador de la misma plataforma(con las correspondientes .dll que acompañan al exe) que no tiene GTK+ , se vé una apariencia rústica , al estilo de Windows 98 ¿alguna idea de porqué pasa esto?

PD: O yo no sé buscar en internet o me mata demasiado que exista muy poca documentación al respecto con ese problema...

¡Un Saludo!
#807
Programación C/C++ / Re: Soy nuevo en c
22 Junio 2012, 21:34 PM
Un puntero es una variable de determinado tipo(char, int ...) que como su nombre indica apunta.¿A qué? a una dirección de memoria , a otra variable... Con estos tipos de variables(los punteros) se utilizan dos tipos de operadores el ampersand (&) y el  asterisco (*):

El operador ampersand(&) se utiliza para que nos devuelva el valor donde está guardado el contenido de una variable en la memoria. Por ejemplo.
Código (cpp) [Seleccionar]
char letra; //supongamos que esta variable tiene un valor de posicion en la memoria de 0x0041000
char *pletra;//creamos un puntero de tipo char
pletra = &letra;// y ahora lo que hacemos es pasar el valor de la posición de memoria de letra con el ampersand(&) al puntero para que este apunte a esa dirección de memoria.

El operador asterisco(*) , se le llama operador de desreferencia , porque lo que hace es devolvernos el valor que hay en la dirección de memoria que apunta el puntero. Por ejemplo:
Código (cpp) [Seleccionar]
char letra = "b";// creamos una variable de tipo char y le asignamos un valor en este caso b;
char *pletra;// creamos un puntero de tipo char
pletra = &letra;// pasamos la dirección de letra a pletra y pletra apunta a letra que su contenido es "b"
//.............................................................................................
//entonces si imprimimos lo que hay en *pletra(utilizamos el * para saber el contenido no el valor de memoria).
printf("%c", *pletra); //----> saldra b pues es el caracter al que estabamos apuntando.


Si algún programador más experimentado tiene que corregir algo que lo haga , yo ni mucho menos entiendo mucho de punteros , es la realidad, pero bueno solo por el simple hecho de ayudar...

PD: De todas maneras consiguete un buen libro , y lee mucho y antes de preguntar busca en internet :)

¡Un Saludo!
#808
Bueno tengo un examen pasado mañana y estoy estudiando pero me ha surgido una inseguridad ( a quién no le habrá pasado) bueno a ver si me pueden ayudar... El problema en cuestión:
La hemofilia es una enfermedad hereditaria controlada por un gen (h) recesivo ligado al cromosoma X, mientras que el albinismo esta determinado por un gen (a) recesivo ligado a un autosoma. Un hombre normal, respecto a la hemofilia pero albino, se casa con una mujer morena, de madre albina y de padre hemofílico. ¿Cuáles serán los genotipos y los fenotipos de los cónyuges? ¿Y los de los hijos? ¿Con qué frecuencia se presentan?

Lo que tengo hecho:
Genotipo:
x : Coagulación normal.
xh: Hemofílico.
A : Pigmentación.
a : Albino.

El hombre es albino pero nó hemofílico o sea su genotipo es xyaa.
La mujer es hija de padre hemofílico (suponiendo que no sea portador del albinismo)
sería el genotipo del padre:xhyAA
y de madre Albina (y no portadora de la hemofilia)
sería el genotipo de la madre: xxaa

Ahora tenemos que la hija ha salido morena o sea que su genotipo tiene que ser por fuerza xxhAa, la hemofília la hereda de la xh del padre.

Por lo tanto realizamos el cruce entre los dos individuos    xyaa <-----> xxhAa
realizamos una tabla para que nos sea más fácil:

Por lo tanto los porcentajes si son hombres serian:
25% normal y portador del albinismo
25% albino
25% albino y portador del albinismo
25% hemofílico y albino
Si son mujeres:
25% normales y portadoras de del albinismo
25% albinas
25% normales y portadoras de la hemofilia y el albinismo
25% albinas y portadoras de la hemofilia.

¿alguien que sepa puede decirme si está bien? Un saludo a todos y muchas gracias !
#809
¡Puaf! Eres impresionante Potato , que esfuerzo y que constancia dios! y hace 4 semanas estabas que decias que no tenias ni idea de ordenadores. Pues yo quiero seguir con el curso de ricardo pero no tengo tiempo me pongo en mis ratos libres , tengo que estudiar, que paso de quedarme el verano estudiando para hacer las recuperaciones...

¡Pues ya sabes mas que yo , y os admiro a ti , y a todos lo que sabeis de informatica!
¡Mucho ánimo!(que no te falta desde luego) y a ver si puedes descifrar que contenía ese archivo .enc :D
#810
Ya esta solucionado, el problema era que tenia la 2.00.01 y esa no tiene unos cuantos .udd que contienen información de las apis y cosas de esas creo, no sé. Desde luego diferencia hay ,tengo la 2.00.01 que pesa (1,80 mb) , me he bajado la 2.01 (alpha 4)que pesa (50 mb) y todo rulando.

¡Un Saludo y muchas gracias a todos!