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 - Dark Invader

#61
Buenas a todos,estoy intentando emular la cadena strtok para que pida un caracter de la frase y lo elimine de esa cadena,quedando la cadena final sin ese caracter,lamentablemente me sale este error:

In function 'void cortarcadena(char*, char*)':
incompatible types in assignment of 'char' to 'char [30]'


He ido cambiando cosas pero no se donde está el fallo,tiene que ver con asignar una cadena a un caracter,pero lo que asigno es un caracter a un caracter,pego el codigo:

#include <stdio.h>

void cortarcadena(char *frase,char *caracter){
   char *p = frase;
   char *q = caracter;
char c_temp;
char c_ori[30];
   while(*p!='\0'){
                      if(*q==*p){
                                 c_temp= *p;
                                 *p++;
                                 
                                 }else{
                                       c_ori=*p;
                                       *p++;
                                       
                                       }
                                       }
                                      puts(c_ori);
                                       }
                                       int main (void){
                                           char frase [30];
                                           char caracter;
                                           printf("vamos a quitar un caraacter a la frase");
                                           printf("escriba la primera frase:  ");
                                           gets(frase);
                                           printf("escriba el caracter a eliminar: ");
                                           scanf("%c",&caracter);
                                           cortarcadena(frase,&caracter);
                                           getchar();
                                           return 0;
                                           }
                                       


Gracias al que pueda ayudarme.

Salu2
#62
Pues eso parece,las variables booleanas están definidas en el estandarte C++,por lo que un compilador que sea solo de C no la leerá,por eso hay que hacer una conversión de datos como te dijo el compañero vertex@Symphony.

Una última cosa,si quieres que tu código se lea bien,pon esto antes del return 0:

getchar();

Esta linea espera a que se pulse intro para finalizar,y podrás leer el programa entero.

Salu2
#63
Gets es seguro,por lo menos siempre que lo he usado pero hay uno más seguro todavía que es el fgets, te dejo información:

http://c.conclase.net/librerias/?ansifun=fgets

En cuanto al código que puse me funciona bien,pero claro no había caído en tu compilador.

Salu2
#64
Buenas,

Sería algo así:

#include <stdio.h>
#include <string.h>
#define max 100
   
bool my_strstr (char*, char*);

int main()
{
   char s1[max],s2[max];
   bool conf;
   printf ("ingrese la cadena principal: ");
   gets(s1);
   printf ("ingrese la cadena a buscar: ");
   gets(s2);
   conf = my_strstr (s1,s2);
   if (conf == true)
       printf ("la primer cadena contiene a la segunda");
   else
       printf ("la primer cadena no contiene a la segunda");
       getchar();
   return 0;
}


bool my_strstr (char *big, char *sub)
{
   bool baby;
   if (strstr(big, sub) != NULL)
   {
       baby = true;
   }
   else
   {
       baby = false;
   }
   return baby;
}


Este ha sido un poco modificado,pero me funciona perfecto.Por cierto,si tienes que desarrollar una funcion como la de strtr¿te permiten utilizar el strstr en la funcion?¿No deberias crear una funcion sin recurrir a la funcion strstrt?

Porque entonces no le veo mucha utilidad al ejercicio  :huh:

Salu2
#66
Programación C/C++ / Re: Ayuda!
1 Julio 2011, 23:08 PM
Revisa las clases:

invalid use of qualified-name 'persona::ingresar'
invalid use of qualified-name 'persona::visualizar'

Ahi esta el fallo  :silbar:

Salu2
#67
Programación C/C++ / Re: Ayuda!
1 Julio 2011, 22:05 PM
Te falta la libreria cstdlib para llamar al sistema,además la variable opc es de tipo char,y en el switch la estas metiendo en los case como numeros,no obstante creo que el fallo es de las clases,aunque no lo encuentro:

#include<iostream>
#include<conio.h>
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#include<cstdlib>

using namespace std;

class persona {
   
        int grad;
        char nombre;
        char fecha;

     public:
       persona(void);
         persona(char n=0, char fn=0, int g=0): nombre(n), fecha(fn), grad(g){};
             
          void ingresar(char n, char fn, int grad);
          ~persona();
          void visualizar();
             
} ;

//******************************************************************************
void persona::ingresar(char n, char fn, int g){

      cout<<"Ingresar los datos de la persona: "<<endl;
      cout<<"Ingresar nombre: "<<endl;
      cin>>n;
      nombre=n;
      cout<<"Ingresar fecha de nacimiento: "<<endl;
      cin>>fn;
      fecha=fn;
      cout<<"Ingresar año de graduación: "<<endl;
      cin>>g;
      grad=g;

}

//****************************************************************************
void persona::visualizar(){

          cout<<"Datos de la persona: "<<endl;
          cout<<"Nombre: "<<nombre<<endl;
          cout<<"Fecha de nacimiento: "<<fecha<<endl;
          cout<<"Año de graduación: "<<grad<<endl;


}

//****************************************************************************
int main(){  // declaracion del cuerpo principal del programa
class persona *ptrpersona;
char opc; // declaracion de variable

do{
// condicion para el menu se repita hasta que se ingrese la opcion salir
                system("CLS"); //Limpia la pantalla
            cout<<"                MENU  "<<endl;
                cout<<"a.- Ingresar una persona."<<endl;
            cout<<" b.- Visualizar la persona."<<endl;
                cout<<" c.- Salir."<<endl;
            cin>>opc;  // lee la variable
               
           
      switch(opc){
         case'a':system("CLS");
                void persona::ingresar(char n, char fn, int g);
            break;
         case'b':system("CLS");    //se muestra la funcion en pantalla segun la opcion ingresada
            void persona::visualizar();
           
            break;
         case'c':system("CLS");
           
            exit(1);
         default: cout<<"opcion no valida"<<endl;
            system("pause");
            break;
            }
}while(opc!='3');  // condicion para el menu se repita hasta que se ingrese la opcion salir

}

#68
Cita de: Acermax en  1 Julio 2011, 19:09 PM
Pues a mi me parece más fácil C++, será para gustos xD

Y que lo digas  :xD Dije desde mi propia experiencia,cada uno tienes sus propios gustos en cuanto  C/C++ se refiere.

Salu2
#69
Te recomendaria aprender las operaciones con los archios en C,son mucho mas intuitivos y faciles,por lo menos hablo desde mi experiencia  ::)

Salu2
#70
Programación C/C++ / Re: ayuda funciones!
1 Julio 2011, 18:59 PM
Tambien podrias emular a la funcion strcmp con punteros,asi te valdria tanto para windows como para linux creo  :xD Si quieres avisame y te paso el code que he hecho para ver si te sirve.

Salu2