Foro Oficial De C++

LECHIP dijo:
Muchahos, yo ando empezando.
Tengo lios usando estructuras en programas modulares, es decir, como hago9 para enviarlas por referencia, de tal forma que puede modificarlas en los subprogramas. Gracias.

En el siguiente programa la funcion verNombre, recibe por parametro persona * lo que quiere decir que es un apuntador a un objeto persona. En main() puede ver que para pasar un objeto por refencia se puede hacer de dos formas.

En la primera creo un bjeto persona (p1), y paso su posicion en memoria usando el operador &.
En la segunda uso un apuntador, y ya que la función toma como parametro un apuntador lo paso sin transformarlo.

PHP:
#include <iostream>
#include <string>

struct persona{
        std::string nombre;
        int edad;
};

void verNombre(persona *p){
        std::cout << p->nombre + "\n";
}

int main(){
        // Ver nombre de la persona 1 Pasando por referencia
        persona p1;
        p1.nombre = "juan";
        verNombre(&p1);


        // Ver nombre del a persona 2 Pasando por refencia usando apuntador
         persona *p2 = new persona();
         p2->nombre = "jorge";
         verNombre(p2);
         delete p2;

        return 0;
}

o se puede hacer a la inversa, usando el operador & en la función para referenciar la direccion en memoria de objeto. Así pasamos el primer objeto sin modificacion y el segundo que es un apuntador lo transformamos usando el operador *
PHP:
#include <iostream>
#include <string>

struct persona{
        std::string nombre;
        int edad;
};

void verNombre(persona &p){
        std::cout << p.nombre + "\n";
}

int main(){
        // Ver nombre de la persona 1 Pasando por referencia
        persona p1;
        p1.nombre = "juan";
        verNombre(p1);


        // Ver nombre del a persona 2 Pasando por refencia usando apuntador
         persona *p2 = new persona();
         p2->nombre = "jorge";
         verNombre(*p2);
         delete p2;

        return 0;
}
 
cabecera boxes.h

hola soy nuevo en laneros, me gustaria que me ayuden a conseguir la cabecera boxes ya que tengo un project de la uni y necesito esa cabecera le agradeceria si alguien me la envia a life2live7@hotmail.com, ife2live7@gmail.com
 
cabecera boxes.h

hola soy nuevo en laneros, me gustaria que me ayuden a conseguir la cabecera boxes ya que tengo un project de la uni y necesito esa cabecera le agradeceria si alguien me la envia a life2live7@hotmail.com, ife2live7@gmail.com
 
DON jomunoz se lo agradezco de por vida hermano, me sirvio al pelo.
Ahora tengo otro lio, tengo una estructura en un subprograma (osea que es un apuntador a la estructura), y quiero utilizarla en la función strcmp (obviamente la aprte de la estructura que tiene char), simplemente tengo un error extrañisimo que dice lo siguiente:
"request foer member 'id' in something not a structure or union".
Estoy utilizando una estructura apuntadora que tiene un char id[5], la verdad no entiendo a que se refiere el error.
 
LECHIP dijo:
DON jomunoz se lo agradezco de por vida hermano, me sirvio al pelo.
Ahora tengo otro lio, tengo una estructura en un subprograma (osea que es un apuntador a la estructura), y quiero utilizarla en la función strcmp (obviamente la aprte de la estructura que tiene char), simplemente tengo un error extrañisimo que dice lo siguiente:
"request foer member 'id' in something not a structure or union".
Estoy utilizando una estructura apuntadora que tiene un char id[5], la verdad no entiendo a que se refiere el error.


Ponga la parte del codigo donde hace el llamado a strcmp y la definicion de la estructura que esta usando.
 
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
struct fecha{ //Define la estructura para fechas.
char dd[3]; //Dia.
char mm[3]; //Mes.
char aaaa[5]; //Año.
};

struct jugador { //Define la estructura para un jugador.
char id[5]; //Identificación del jugador.
char nom[15]; //Nombre del jugador.
char ape[15]; //Apellido del jugador.
char nick[10]; //Alias del jugador.
char sexo[2]; //Sexo del jugador.
struct fecha f_na; //Fecha de nacimiento del jugador.
int juegos; //Numero de juegos del jugador
};


void abrir_jugador(struct jugador* jug_act,struct jugador juga[5]){
char val[5]="aaaa"; //ACA ESTA EL LIO.
}
 
Esta parte no tiene sentido, según habia dicho el problema estaba en un strcmp y aqui no hay eso. Lo unico que hace es crear una variable val y llevarle el valor "aaaa".

LECHIP dijo:
void abrir_jugador(struct jugador* jug_act,struct jugador juga[5]){
char val[5]="aaaa"; //ACA ESTA EL LIO.
}
 
Para guardar cadenas de caracateres lo mejor es el objeto string, lo malo es que no esta disponibles para compiladores viejos como el que usted usa.
La segunda mejor forma es usar apuntadores char, si se fija en el codigo, cambie todos los arrays de char por char * estos no tienen limite de espacio.

Otra cosa es que inclui la libreria string.h donde se encuentra la funcion strcmp, tambien quite la comparacion con 0 en el if pues no es necesaria.

La definicion de la funcion abrir_jugador, cambia por:
abrir_jugador( jugador* jug_act, jugador &juga)
Pues no es necesario la palabra struct en los parametros, y el segundo parametro parecia incorrecto.

PHP:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>

struct fecha{ //Define la estructura para fechas.
        char dd[3]; //Dia.
        char mm[3]; //Mes.
        char aaaa[5]; //Año.
};

struct jugador { //Define la estructura para un jugador.
        char *id; //Identificación del jugador.
        char *nom; //Nombre del jugador.
        char *ape; //Apellido del jugador.
        char *nick; //Alias del jugador.
        char *sexo; //Sexo del jugador.
        struct fecha f_na; //Fecha de nacimiento del jugador.
        int juegos; //Numero de juegos del jugador
};


void abrir_jugador( jugador* jug_act, jugador &juga){
        char val[5]="aaaa"; //ACA ESTA EL LIO.
        if ( strcmp(val,juga.id) )
                printf("Crea un jugador.");
}

int main(){
        jugador jorge;
        jorge.id = "jorge";
        jugador *juan = new jugador();

        abrir_jugador(juan, jorge);
        delete juan;
        return 0;
}
 
  • Me gusta
Reacciones: 2 personas
Mil gracias , obviamente no estaba ahciendolo bien ya que no estaba incluyendo la libreria, ad emás el parametro efectivamente estaba incorrecto. ya vovlere con mas errores de n00b, pero pues asi es que se aprende, muchas gracias de nuevo jomunoz.
 
Laneros, necesito dos favores. 1. Que me recomienden un compilador sencillo y liviano para mis codigos. 2. Tips que me ayuden a aprender estructuras y funciones en c++ de manera facil y rapida en una semana. Gracias.....
 
Pipesafa dijo:
2. Tips que me ayuden a aprender estructuras y funciones en c++ de manera facil y rapida en una semana. Gracias.....

Una función es la unidad funcional básica de C++. Los algoritmos se colocan dentro de esta y se compone de las tres partes básicas de todo programa: entrada, proceso y salida. Es decir, ud le da unos datos, la función los procesa y al final le devuelve una información, originada por esos datos.

La función más importante es:
PHP:
int main(int argc, char* argv[]) {
  return 0;
}

y se suele leer partiendo del nombre (como hay unos paréntesis después de este, entonces se sabe que es una función), luego los argumentos y finalmente el tipo de dato que devuelve: "main es una función que recibe dos argumentos, argc de tipo entero y argv un arreglo de char* y que al final retorna un entero."

No es obligatorio que todas las funciones lleven argumentos. Y tampoco es obligatorio que devuelvan un valor específico (con excepción de main, que SIEMPRE debe retornar int. SIEMPRE). Para el primer caso, los paréntesis van vacíos, para el segundo, hay un tipo de dato que indica que no se retornará nada:
PHP:
void funcion() {
  // No hago nada util. Soy un parasito =P
}

int main() {    // Los argumentos son opcionales, pero el int NO!
  return 0;
}


Las estructuras o clases son formas de empaquetar datos y cuando se acompañan con funciones, sirven para formar nuevos tipos de datos. Digamos que quiere crear una hormiga para su último juego, entonces, como piensa realizar operaciones sobre esa hormiga, como caminar, girar y esas cosas, entonces de una piensa "Santas hormigas, Batman, esto es un nuevo tipo de dato para mi programa" y arranca a definir en sus palabras el nuevo tipo de dato "Necesito un nuevo tipo de dato (class) llamado <<Hormiga>>, donde pueda saber el número de las patas que tiene la hormiga, de qué color es y si es trabajadora o reina. Además la hormiga puede caminar ciertos pasos adelante y girar 90 grados a la izquierda o a la derecha". Entonces, luego de leer algunos libros de C++, finalmente se decide:

PHP:
class Hormiga {
  int numero_patas;
  Color color;
  bool es_reina;  // Suponiendo que solo existieran hormigas reinas y hormigas trabajadoras
public:  // revise los conceptos de visibilidad en varios libros para entender esta importante palabra
  void caminar(int pasos);  // Utilice funciones dentro de las clases para simplificarse la vida
  void girar(Direccion direccion);
};

Listo. Estas lineas lo que hicieron fue definir cómo es una hormiga, pero no hicieron ninguna. Para crear hormiguitas, usa, por ejemplo:

PHP:
int main() {
  Hormiga z;
  Hormiga chip;
  Hormiga queen;
  Hormiga muffy;

  return 0;
}

Ahora, algunos le van a decir que utilice la palabra struct, pero en realidad las diferencias son muy pocas. Sin ningún problema pudo haber hecho:

PHP:
struct Hormiga {
private:
  int numero_patas;
  Color color;
  bool es_reina;  // Suponiendo que solo existieran hormigas reinas y hormigas trabajadoras
public:  // revise los conceptos de visibilidad en varios libros para entender esta importante palabra
  void caminar(int pasos);  // Utilice funciones dentro de las clases para simplificarse la vida
  void girar(Direccion direccion);
};

Todo es exáctamente igual, excepto por la palabra private, que en la class viene implícita. Además class tiene como más cachè.

Obviamente hay muchas más cosas que debe saber antes de poder dedicarse a las funciones y las clases. Lea varios libros de C++. Hay unos excelentes en la red:
http://www.ibiblio.org/obp/thinkCS/cpp/english/
http://www.computer-books.us/cpp.php
http://mindview.net/Books/TICPP/ThinkingInCPP2e.html --> Mi preferido
http://www.relisoft.com/book/index.htm
 
SALU2
NECESITO ALGUIEN QUE ME AYUDE O QUE ALGUIEN ME PUEDA CONTACTAR PARA HACER UN PROYECTO EN C++ ES SOBRE UNA MATRIZ ESPIRAL TRABAJO DE MI UNIVERSIDAD, NO IMPORTA EL COSTO SI ALGUIEN SABE POR FAVOR pablorodiguez_n@yahoo.com
3125877849
bogota

gracias**** urgente por favor***
 

Los últimos mensajes

Los últimos temas