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 - Fire544

#61
Esta bien implementare otro metodo, luego posteo lo implementado, gracias Xiruko !!
#62
El metodo es a si como dices me entiendes perfectamente, pero todavia la operacion que me pasas no resuelve la problematica, a ver si sumas un vector todo sale bien, pero si intentas simular la logistica de una calculadora se te rompe la caveza xDDD !! Pero estoy llegando casi casi, a ver intenta otra o implementa tu solucion !! Saludos Xiruko
#63
Claro Xiruko Lei perfectamente tu resp. El problema es que no puedo hacer entradas con la funcion scanf(); sino mira lo que estoy haciendo

si evento==1
entonces
vector[i]=1
i++;
fin si

si evento==2
entonces
vector[i]=2
i++;
fin si
..
..
..
etc.


Hago esto porque trabajo con eventos o sea estoy desarrollando con SDL una GUI, todo perfecto entonces a la hora de hacer una sencilla calculadora no puedo porque me da valores incorrectos casi aproximados, estoy intentando sumar los vectores luego de recojer los valores.
#64
El problema es pasar del vector[1,2,3] a una variable entera de 2 bytes a si

int numero=vector;

y que mi variable numero quede numero=123; esa es la problematica porque estoy trabajando con eventos y cuando pulso algun valor de mi teclado KP numerico entonces se mete el valor numerico en el vector y no es como hacer scanf("%i" &numero), sino que hace esto si evento==numero 1 o 2, etc entonces meter 1, 2, etc en vector.
#65
Explicate mejor Xiruco, te comprendo pero esas elevaciones ^ por que las haces ?
#66
 :-\ Hola a todos internautas ! Tengo ya varios dias intentando sumar vectores, mi problematica esta en los valores absoluo que me tiene que devolver la variable suma  al operar con los dos vectores.

les dejare el codigo para que vean que es lo que quiero lograr.


int vector_1[5]={5, 978, 6, 4, 9}, vector_2{65, 9, 12, 66, 45}, suma=0;

for(int i=0; i<5; i++)
{
suma=suma + (vector_1[i]+vector_2[i]);
}

printf("%i", suma);


A simple vista solo con observar podemos darnos cuenta de que no hay error, el cogio hace la operacion de suma sobre los vectores, pero fijense lo que hace.

vector_1[1]=5 + vector_2[1]=65 esto seria igual a 70, y a si sucecivamente, no quiero esto lo que quiero es:


   5   978 6   4   9
+ 65 9    12 66 45
______________
665105294


que este ultimo seria el valo absoluto he tratado todas las formas y no logro nigun resultado de solucion, favor y aporten sus ideas, he intentado almacenar la suma en un vector al igual en una variable no vector, uff de todo !!
#67
Hola a todos !!!  :xD Expongo el thread para algunos que se preguntan si existiria alguna API para el trabajo de BD en C del estandar ANSI.

Comento todo el codigo para una mejor comprension del lector. El compilador utilizado es Dev-c++.

Con la inclusion de la lib windows.h ya pierde portablidad, pero la incluyo porque MySQL.h hace llamadas a sockets o sea winSock.h para poder establecer conexiones externas (ambiente Inet Global) y locales, la ventaja es que MySQL.h tambien esta para sistemas codigo abierto como Linux y Unix, pero en vez de windows.h habria que incluir otras librerias.

Nota: Algunas funciones no las comento, porque casi hacen las mismas llamadas y creo que entenderian el por que, pero si tienen alguna duda no olviden postear y claro cirtiquen el codigo falta optimizacion, aa se me olvido hacer la estrcutura de mi codigo con retornos para mayor optimizacion pero bueno algo es algo xD.

Salvedad: Doy por savido que los que lean este post es porque tienen conocimientos basicos de C y conocen bien los punteros a punteros y han trabajado con MySQL.

Antes de leer el codigo vean esto: (MYSQL_RES  *) es un identificador o variable que puede contener filas de un determinado campo en nuestra BD para poder luego consultar este. (MYSQL_ROW) es tipo puntero a puntero aunque no se haga uso de * pero si vemos como consultamos sus datos nos daremos cuenta, este acepta valores o elementos que se encuentran en "MYSQL_RES *" o sea lo que recojimos con "MYSQL_RES *" esta variable los puede manejar sin problemas. (MYSQL *) este acepta elementos o valores de un retorno a una variable del mismo tipo para luego enviar y recibir datos, o sea es quien nos envia, devuelve, conecta y desconecta del servidor MySQL.



#include <stdio.h>
#include <windows.h>
#include <mysql/mysql.h>

//prototipos de funciones

void mostrar(MYSQL *con, MYSQL_ROW row, MYSQL_RES *resultado, char *consulta);
void insertar(MYSQL *con, char *nombre, int id);
void borrar(MYSQL *con, MYSQL_RES *res, MYSQL_ROW row, int id);
void update(MYSQL *con);
void buscar(MYSQL *con, MYSQL_RES *res, MYSQL_ROW row, int id);

//cuerpo de funciones

void mostrar(MYSQL *con, MYSQL_ROW row, MYSQL_RES *resultado, char *consulta)
{
   //concatena las constantes a la variable consulta
   sprintf(consulta, "select * from amigo;");
   //hacemos consulta y verificamos que se cumple
   if((mysql_query(con, consulta)==0))
   {
                        //guardamos resultado en la variable resultado que es de tipo MYSQL_RES *
                        resultado=mysql_use_result(con);
                       
                        printf("Usuario    ID\n\n");
                        //leemos los datos almacenados en resultadoy lo devolvemos a la variable row que es de tipo MYSQL_ROW
                        while(row=mysql_fetch_row(resultado))
                        {
                                                             printf("%s---%s\n", row[0], row[1]);
                                                             }
                        }
                        //preguntamos si se ha llegado al final de nuestra variable resultado
                        if(!mysql_eof(resultado))
                        {
                                           printf("Error de lectura %s\n", mysql_error(con));
                                           }
                                           //cerramos conexion ya establecida
                                           //mysql_close(con);
                                           
                                           fflush(stdin);
                                           getchar();
                                           
                                           system("cls");
   
    }

void insertar(MYSQL *con, char *nombre, int id)
{
    char consulta[50];
   
    sprintf(consulta, "INSERT INTO amigo VALUES('%s', '%i');", nombre, id);
   
    if((mysql_query(con, consulta)==0))
    {
                         printf("Se agrego la nueva persona a la BD\n");
                         fflush(stdin);
                         getchar();
                         }
                         else
                         {
                             printf("Error no se pudo crear la nueva persona %s \n", mysql_error(con));
                             }
    system("cls");
    }
   
void borrar(MYSQL *con, MYSQL_RES *resultado, MYSQL_ROW row, int id)
{
    char consulta[50];
   
    sprintf(consulta, "DELETE FROM amigo WHERE id='%i';", id);
   
    if(mysql_query(con, consulta)==0)
    {
                       
                     printf("Se elimino persona correctamente de la BD\n");
                     fflush(stdin);
                     getchar();
                     }

    system("cls");
    }

void update(MYSQL *con)
{
    char nombre[10], consulta[50];
    int op, id;
   
    printf("Que deseas modificar\n\n1:Nombre\n2:id\nOpcion: ");
    scanf("%i", &op);
   
    if(op==1)
    {
             printf("Inserta el ID de la persona a eliminar: ");
             scanf("%i", &id);
             printf("Inserte Nuevo Nombre: ");
             fflush(stdin);
             gets(nombre);
             printf("\n");
             sprintf(consulta, "UPDATE amigo SET nombre='%s' WHERE id='%d';", nombre, id);
             }
    else
    {
        printf("Inserte Nombre de la persona a elimininar: ");
        fflush(stdin);
        gets(nombre);
        printf("Inserte nuevo ID ");
        scanf("%i", &id);
        sprintf(consulta, "UPDATE amigo SET id='%i' WHERE nombre='%s';", id, nombre);
        }
       
    if(mysql_query(con, consulta)==0)
    {
                         printf("Se guardaron los datos correctamente");
                         getchar();
                         system("cls");
                         }
    }

void buscar(MYSQL *con, MYSQL_RES *res, MYSQL_ROW row, int id)
{
   
    char consulta[50];
   
    sprintf(consulta, "SELECT nombre, id FROM amigo WHERE id='%i';", id);
   
    if(mysql_query(con, consulta)==0)
    {
                        printf("Los datos se buscaron correctamente\n\n");
                        fflush(stdin);
                       
                        res=mysql_use_result(con);
                       
                        printf("Nombre      ID User\n\n");
                       
                        while(row=mysql_fetch_row(res))
                        {
                                                       printf("%s      %s", row[0], row[1]);
                                                       }
                        }
                       
                        getchar();
                        system("cls");
    }

int main()
{
   MYSQL *con;
   MYSQL_RES *resultado;
   MYSQL_ROW row;
   char consulta[1024], nombre[25];
   int id;
   int op;
   //inicializamos conexion SQL a algun atributo en este caso NULL.
   con = mysql_init(NULL);
   //establecemos conexion SQL y comprobamos que funciona
   if(!mysql_real_connect(con, "localhost", "root", NULL, "prueba", 3306, NULL, 0))
   {
                               printf("Error conectando con BD Prueba %s\n", mysql_error(con));
                               }
   
   printf("Que quieres hacer\n\n1:Leer BD\n2:Insertar Datos\n3:Eliminar Datos\n4:Actualizar Datos\n5:Buscar Datos\n\nEliga Opcion: ");
 
   scanf("%d", &op);
   
   switch(op)
   {
   case 1:
   system("cls");
   mostrar(con, row, resultado, consulta);
   return main();
   //break;
   
   case 2:
        system("cls");
        printf("Introduzca Nombre de persona: ");
        fflush(stdin);
        gets(nombre);
        printf("\n");
        printf("ID de persona: ");
        scanf("%i", &id);
        insertar(con, nombre, id);
        return main();
        //break;
       
  case 3:
       system("cls");
       printf("Inserte el ID de persona: ");
       fflush(stdin);
       scanf("%i", &id);
       borrar(con, resultado, row, id);  
       return main();    
       //break;
   
   case 4:
        system("cls");
        update(con);
        return main();
        //break;
   
   case 5:
        system("cls");
        printf("Inserte ID de persona a Buscar: ");
        scanf("%i", &id);
        system("cls");
        buscar(con, resultado, row, id);  
        return main();
               
   default:
           printf("Error no existe opcion\n\n");
           getchar();
           break;    
   }
   //cerramos conexion SQL
   mysql_close(con);
   getchar();
   }
#68
Hola !! intenta concatenar con strcat lo que tienes que hacer es meter en una variable char [] como origen y otra como destino del mismo tipo, pero tendrias que tomar en cuenta el final de cada cadena me explico.

Código (cpp) [Seleccionar]

/*si te fijas al final de la cadena hay un espacio, esto es para poder meter la cadena al final de la linea + un espacio*/
char cadenaOrigen[]="mkdir C:\\ "
//declaramos variable destino
char datosIngresados[5];
//esperamos datos
fgets(datosIngresados, 5, stdin);
//concatenara datosIngresado en cadenaOrigen y sabiendo que cadena origen tiene el comando mkdir mas un espacio para respetar la sintaxis de windows.
strcat(cadenaOrigen, datosIngresados);
//llamamos a system con la llamada al sistema alojada en cadenaOrigen
system(cadenaOrigen);


Para lo de meter un entero aleatorio a una cadena puedes hacer casteo explicito mira.

Código (cpp) [Seleccionar]

char cadena[]="mkdir ", ingresaDatos[5], val;
int var_rand=0;

srand(time(NULL));
//pedimos datos al usuario
scanf("%i", &val);

for(int i=0; i<val; i++)
{
var_rand = rand() % 25 + 0;
//casteo de entero a char
strcat(cadena, (char*)var_rand);
system(cadena);
}
#69
Claro ! se pueden hacer muchas cosas con SDL, el poder de esta lib esta en el frame-buffer para los subsistemas de videos, audio, teclado, mause, etc.

El objetivo es ver opiniones y cuestiones de los usuarios que llevan tiempo buscando la lib adecuada para trabajar con graficos y poder elaborar sus GUIs ...

Gracias por tu opinion vertexSymphony !!
#70
Si tienes te entiendo correctamente, pero lo que se quiere aprovechar es la carencia de codigo c++, o sea QT, GTK, etc, hacen uso de POO y hay quienes no trabajan con el concepto, y no optan por migrar a QT o GTK, SDL a diferencia de todas esta escrita en C puro y no necesita de POO solo creatividad y ganas, por eso posteo el articulo. Para quienes quieran colaborar entonces ayuden, y su complejidad en verdad esta en el manejo de señales para poder hacer la aplicacion mas eficiente, si te fijas en el codigo del main.c utilizo C basico y llamadas normales, pero luego se complica con algunas llamadas y al no estar comentadas entonces se vuelve inaccesible la lectura del programador.\

Pero explicare lo que no se entiende. Porque es mi estilo de programacion y no un paradigma es facil ya veras. !!