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

#121
Programación C/C++ / Duda de sintaxis..
11 Abril 2019, 16:58 PM
Hola!

Entiendo que el operador de resolución de ámbito :: conecta un namespace con otro namespace o con una clase o con un método que esté dentro de un namespace específico... sin embargo, estoy viendo esto en Visual C++ y me asaltó la duda:


System::Windows::Forms::Application::Run(gcnew Prototipo::MyForm());


Entiendo que System es un namespace, pero que serían Windows, Forms, Application y Run en este caso?

No estoy seguro pero me da la idea de que desde System hasta Application son namespace y Run es una función...  pero quisiera estar seguro.

Gracias saludos.

#122
Muchas gracias ambos, me ha quedado claro... 

Antes le tenia terror a C++, pero con vosotros he aprendido bastante, y creo que ese miedo que le tenia realmente no tenia sentido, se programar en C#, pero creo que quedare definitivamente con C++, no me importa estar escribiendo mas, se pasa muy bien.

Gracias nuevamente.
#123
Amigo, le dejo aquí su código formateado para que lo ayuden mejor..


#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>

void mostrar_menu() {
     int i;
system("color 02");
system("pause");
system("cls");
system("color 07");
      printf("\n\nMenú:\n=====\n\n");
      printf("Escoge una opción:\n ");
      char a [][60]={"","|***Añadir***|","|****Mostrar****|","|*****Eliminar cliente*****|","|*****Salir*****|"};

  for(i=1;i<5;i++){
  printf("%d-%s\n",i,a);
}
}


struct registro{
int numero;
char   nombre[30];
char   genero[20];
float paga;
};
struct registro emp;

FILE *fd;

void anadir()
{
    char otro;
    fd=fopen("cliente.txt","a");
   if(fd==NULL)
   {
      printf("El archivo no se puede abrir ....\n\t\t\t");
      system("pause");
   }
   else
   {
       do{
            system("cls");;
            printf("\t\t\tREGISTRAR  \n");
            printf("\n\t\tNumero  : ");   scanf("%d",&emp.numero);   fflush(stdin);
            printf("\t\tNombre  : ");   gets(emp.nombre);          fflush(stdin);
            printf("\t\tGenero: ");   gets(emp.genero);          fflush(stdin);
            printf("\t\tPaga  $");    scanf("%f",&emp.paga);   fflush(stdin);
            fprintf(fd,"%d  %s %f \n",emp.numero,emp.nombre,emp.paga);
            printf("\n\t\tDesea registrar otro S/N :");
            scanf("%s",&otro);
       }while ( otro =='S' ||  otro =='s' ) ;
        fclose(fd);
     }
}
void mostrar_lista(){
     system("cls");
    fd=fopen("cliente.txt","r");
    if(fd==NULL)
    {
      printf("\t\tEl archivo no se puede abrir ....\n\t\t\t");
      system("pause");
    }
    else
    {
        printf("\t\t     R E P O R T E    D E    C L I E N T E S  ");
        printf("\n\n\t\tNumero \tNombre \tGenero \t Paga \n");
        printf("\t\t______ \t______ \t _____ \t _____ \n");
        fscanf(fd,"%d",&emp.numero);
        while (! feof(fd))
        {
           fscanf(fd,"%s",&emp.nombre);
           fscanf(fd,"%s",&emp.genero);
           fscanf(fd,"%f",&emp.paga);
           printf("\t\t%d\t%s\t%s\t$%.2f \n",emp.numero, emp.nombre , emp.genero ,emp.paga);
           fscanf(fd,"%d",&emp.numero);
        }
        printf("\n\t\t");
        system("pause");
    }
}

void elimina_lista(){
    int buscar;
    FILE *aux;
    int bandera=0;
       system("cls");
       printf("\t\tELIMINAR CLIENTE\n  ");
       printf("\t\tNumero de cliente : ");
       scanf("%d",&buscar);
       fd=fopen("cliente.txt","r");
       aux=fopen("auxiliar.txt","w");
       if(fd==NULL)
        {
          printf("\n       El archivo no se puede abrir, primero debe crearlo");
          system("pause");
         }
         else
         {
            bandera=0;
             fscanf(fd,"%d",&emp.numero);
            while (!feof(fd) )
            {
                  fscanf(fd,"%s",&emp.nombre);
                  fscanf(fd,"%s",&emp.genero);
                  fscanf(fd,"%f",&emp.paga);
                  if( buscar== emp.numero)
                  {
                    printf("\t\tNombre              %s\n",emp.nombre);
                    printf("\t\tGenero              %s\n",emp.genero);
                    printf("\t\tPaga             $%f\n",emp.paga);
                    printf(" \n\t\tEl cliente sera eliminado y no lo recuperara.....\n\t\t");
                    system("pause");
                    bandera=1;
                  }
                  else
                  {
                    fprintf(aux,"%d %s %s %f\n",emp.numero, emp.nombre, emp.genero, emp.paga);
                  }
                  fscanf(fd,"%d",&emp.numero);

            }
            if (bandera==0){
                    printf("\nEl cliente no existe\n");
            }
            fclose(fd);
            fclose(aux);
            remove("cliente.txt");
            rename("auxiliar.txt","cliente.txt");
         }

}



int main () {
     int opc,  x=0, num, z;
     do {
         mostrar_menu();
         opc = getch();
             switch ( opc ) {
                case '1': anadir();
                       break;
                case '2':  printf("Lista de clientes\n");
                mostrar_lista(emp);
                     fclose(fd);

                        break;
                case '3':printf("Eliminar registro \n");
                  elimina_lista();
                        break;
                case '4': exit( 1 ); break;
                default: printf( "Opcion no valida\n" );
                         break;
             }
     } while (opc!='4');

     return 0;

}
#124

Muy buenas..

Estoy siguiendo unos tutoriales de Unreal Engine y me tope con algo que no habia visto:

Código (cpp) [Seleccionar]

float CurrentScale = OurVisibleComponent->GetComponentScale().X;


Mi duda está precisamente en la sintaxis de GetComponentScale().X;

Es primera vez que veo esa terminación  ().X;

Cual sería el prototipo de esa clase de funcion ?

Gracias de antemano.
#125
Ya veo, entonces es una practica para que el compilador no se confunda (digo no se confunda, en vez de decir que no encuentra ambiguo el código).. asi con la palabra class diferencia qué es un tipo y que es una variable..

gracias por las respuestas..
#126
Buenas ..

Cual es el objetivo de la siguiente sintaxis ?

Código (cpp) [Seleccionar]

#include "ActorY"

class Actor{

public:

     class ActorY _actorY;     //Que pinta class aqui?

};



Saludos y gracias.
#127
Hola, este es tu código usando el tag de código del sitio...

No comprendo mucho de C, pero tu código no da algún error antes de compilar ?



#include <stdio.h>
#include <string.h>

int vidas=6;
int correctas=0;

main (){
     void lineas(int n, char a[]);
     char palabra[100];
     char letra;
     char guiones[100];
     int longitud;
     void buscar_letra(char p[], int n, char l, char g[]);

     printf ("Digite la palabra a adivinar: ");
     scanf ("%s", palabra);
     fflush(stdin);
     system("cls");
     longitud= strlen(palabra);
     lineas(longitud,guiones);
     printf ("\n");
     printf("\n\t||===== ");                 
     printf("\n\t||    | ");
     printf("\n\t||      ");
     printf("\n\t||      ");
     printf("\n\t||      ");
     printf("\n\t||      ");

     while (vidas>0){
          printf ("\nDigite la letra: ");
          scanf("%c",&letra);
          fflush(stdin);

          if (letra>= 'a'&& letra<='z'){
               buscar_letra(palabra,longitud,letra,guiones);
          } else {
               printf ("\nNo es una letra o la letra es mayuscula (digite una letra minuscula)");
          }
     }
}


void buscar_letra(char p[100], int n, char l,char g[]){
     int i;
     
     for(i=0;i<n;i++){
          if(p==l){
          printf ("%c", l);
          correctas++;

     }else {
          printf ("*");
     }

}

if (correctas==n){

      printf ("\n ADIVINASTE LA PALABRA!!!");
      printf ("\n Ganaste...");

}


void lineas(int n, char a[]) {
       int i;

       for (i=0;i<n;i++){
           printf("* ", a);
       }
}

#128
seria como una llamada anidada de archivos.. verdad?

main llama a Clase.h y ésta llama a Clase.hpp ?

Saludos...!"
#129
Ya entendí, me autorespondo por si alguien mas le interesa la razón..

Pasa que las funciones de clases que usen plantilla son siempre inline, es decir se deben declarar y definir dentro de la clase o al menos en el mismo archivo, creo que a este punto la extensión adecuada del archivo sería .hpp


#130
Hola amigos..

Estoy estudiando templates y no comprendo este comportamiento:

A continuacion la forma en que NO funciona (con esta forma obtengo el error que sale en el titulo)

Código (cpp) [Seleccionar]

//Clase.h

template <class TM>
class Clase{

    TM num1, num2;

public:
    Clase(TM n1, TM n2);
    TM ObtenerMultiplicacion() const;

};



Código (cpp) [Seleccionar]

//Clase.cpp

#include "Clase.h"

template <class TM>
Clase<TM>::Clase(TM n1, TM n2){
    this->num1 = n1;
    this->num2 = n2;
}


template <class TM>
TM Clase<TM>::ObtenerMultiplicacion() const{
    return this->num1 * this->num2;
}



Sin embargo, con esta forma SI que funciona:
Código (cpp) [Seleccionar]

//Clase.h

template <class TM>
class Clase{

    TM num1, num2;

public:
    Clase(TM n1, TM n2);
    TM ObtenerMultiplicacion() const;

};

template <class TM>
Clase<TM>::Clase(TM n1, TM n2){
    this->num1 = n1;
    this->num2 = n2;
}


template <class TM>
TM Clase<TM>::ObtenerMultiplicacion() const{
    return this->num1 * this->num2;
}


Como verán, declarar la clase y definir sus miembros dentro del mismo archivo me funciona, pero si lo separo, no va... y me parece extraño, porque en el archivo Clase.cpp estoy incluyendo la cabecera con #include "Clase.h"

Que ha sucedido??


gracias de antemano.