Código C++

  • Blog
  • Acerca
  • Autor
  • Contacto
  • Como identificar un palíndromo en C++

    Lo primero que tendríamos que hacer sería quitar los espacios de nuestra cadena. Luego ir comparando, el primer caracter con el último, el segundo con el penúltimo, etc. Si todos los caracteres coinciden, es palíndromo, si no, pues no.

    #include<string.h>
    #include<iostream>
    using namespace std;
     
    int main()
    {
      char cadena[50],cadenaf[50]={0},*parte;
      int c,len,pal=0;
      cout<<"Introduce un palíndromo: "; cin.getline(cadena,50,'\n');
     
      parte=strtok(cadena," ");                  //
      strcat(cadenaf,parte);                    // quita los espacios de 'cadena' y
      while((parte=strtok(NULL," ")) != NULL)  // guarda el resultado en 'cadenaf'
        strcat(cadenaf,parte);                //
     
      len=strlen(cadenaf);
      for(c=0;c<=len-1;c++)
      {
        if(cadenaf[len-1-c]==cadenaf[c]) // comparación del primer caracter con el 
          pal++;                        // último, el segundo con el penúltimo, etc
      }
      if(pal==len) // si todos las caracteres coinciden, sí es palíndromo
        cout<<"Sí es palíndromo!";
      else
        cout<<"No es palíndromo";
      cin.get();
    }
    /*Creado por THEbatzuk*/

    Programa que lee un arreglo de 10 números y los ordena con el método de la burbuja de manera ascendente o descendente según se elija. Para esto utiliza una función que recibe el arreglo y la varible ‘ord’ (1=asc, 2=desc), luego utiliza otra función para imprimirlo.

    #include<iostream>
    using namespace std;
     
    int ordenar(int[],int);
    int imprimir(int[]);
     
    int main()
    {
      int c,lista[9],ord;
      for(c=0;c<=9;c++)
      {
        cout<<"Numero "<<c+1<<": "; cin>>lista[c];
      }
      cout<<"\nAscendente 1\nDescendente 2\n--> Opción: "; cin>>ord;
      if(ord==1 || ord==2)
      {
        ordenar(lista,ord);
        imprimir(lista);
      }
    }
     
    int ordenar(int lista[],int ord)
    {
      int c1,c2,aux;
      for(c1=0;c1<=9;c1++)
      {
        for(c2=0;c2<9;c2++)
        {
          if(ord==1)
          {
            if(lista[c2]>lista[c2+1])
            {
              aux=lista[c2];
              lista[c2]=lista[c2+1];
              lista[c2+1]=aux;
            }
          }
          else
          {
            if(lista[c2]<lista[c2+1])
            {
              aux=lista[c2];
              lista[c2]=lista[c2+1];
              lista[c2+1]=aux;
            }
          }
        }
      }
      return 0;
    }
     
    int imprimir(int lista[])
    {
    int c;
      for(c=0;c<=9;c++)
        cout<<lista[c]<<" ";
      cin.get();cin.get();
    }
    /*Creado por THEbatzuk*/

    Número de letras y espacios que tiene una frase

    Este programa lee una frase por medio de cin.getline y con la función strtrok le quita los espacios. Cada vez que corta la cadena, un contador se aumenta. Al final se obtiene la longitud de la cadena sin espacios con la función strlen.

    /*Programa para contabilizar el número de letras y de espacios
    que tiene una frase */
    #include<iostream>
    #include<string.h>
    using namespace std;
     
    int main()
    {
      char frase[100], *parte, frasef[100]={0};
      int lng,spc=0;
      cout<<"Introduce una frase: "; cin.getline(frase, 100, '\n');
      parte=strtok(frase," ");
      strcat(frasef,parte);
      while((parte=strtok(NULL," ")) != NULL)
      {
        strcat(frasef,parte);
        spc++;
      }
      lng=strlen(frasef);
      cout<<"Tu frase tiene "<<lng<<" letras y "<<spc<<" espacios";
      cin.get();cin.get();
      return 0;
    }
    /*Creado por THEbatzuk*/

    Saber si un número es primo o no

    Anteriormente vimos como imprimir los números primos en un rango determinado por el usuario, ahora la idea es pedirle al usuario un número y decirle si es primo o no es primo.

    #include<iostream>
    using namespace std;
     
    int main()
    {
      int num,c,res,nc=0;
      cout<<"Introduce un número: "; cin>>num;
      for(c=1;c<=num;c++)
      {
        res=num%c;
        if(res==0)
          nc++;
        if(nc>2)
          break;
      }
      if(nc==2)
        cout<<"Es primo";
      else
        cout<<"No es primo";
      cin.get();cin.get();
    }

    En sí, es lo mismo que el anterior. Para darle mas presentación podemos hacer que no se salga a la primera, sino hasta que se introduzca, por ejemplo, un cero. Esto se hace con un ciclo do while.

    #include<iostream>
    using namespace std;
     
    int main()
    {
      int num=1,c,res,nc=0,rep=0;
      while(num!=0)
      {
        cout<<"Introduce un número: ";
        if(rep==1)
        {
          cout<<" --> Para salir oprime cero: ";
        }
        rep++;
        cin>>num;
        for(c=1;c<=num;c++)
        {
          res=num%c;
          if(res==0)
            nc++;
        }
        if(nc==2)
          cout<<"Es primo\n\n";
        else
          cout<<"No es primo\n\n";
        nc=0;
      }
    }

    ¿Alguien sabe porqué la variable num empieza en 1 en este caso?

    Números primos en un rango

    La idea es imprimir en pantalla los números primos entre 1 y un dato introducido por el usuario. Creo que es la primera vez que usamos un ciclo dentro de otro ciclo en este blog. Pero en realidad es muy sencillo:

    #include<iostream>
    using namespace std;
     
    int main()
    {
      int n=0,c=0,c2=0,res=0,nc=0;
      cout<<"Introduce el limite de numeros: "; cin>>n;
      for(c=1;c<=n;c++)
      {
        for(c2=1;c2<=c;c2++)
        {
          res=c%c2;
          if(res==0)
          {
            nc=nc+1;
          }
        }
        if(nc==2)
        {
          cout<<" "<<c;
        }
        nc=0;
      }
    }

    El operador % obtiene el residuo de la división de dos números. Por ejemplo:
    10 % 3 = 1
    Porque el 3 cabe 3 veces en el 10 y le sobra 1.

    Explicación:

    1. El primer ciclo lleva la cuenta de los números de 1 a n de uno por uno en la variable c
    2. Luego se inicia un ciclo de 1 a c en la variable c2. Este ciclo se hará n veces porque está dentro de el primer ciclo
    3. En la variable res se guarda el residuo de dividir c / c2
    4. Si el residuo es cero, se incremento al contador nc
    5. Si al terminarse el segundo ciclo el contador nc es igual a 2, significa que el número es primo y lo imprime

    Recuerden que los números primos son los que únicamente se dividen (sin dejar residuo) entre 1 y entre si mismos

    Encontrar el número mayor de un conjunto

    Es en realidad muy simple, se trata de pedir un conjunto de números e ir comparandalos para obtener el mayor. Un problema es que no sabemos la cantidad de números que se van a pedir, por lo que al principio del programa tenemos que pedir este valor.

    #include<iostream>
    using namespace std;
     
    int main()
    {
      int n_num=0,num=0,elmayor=0,c=0;
      cout <<"Introduce el numero de numeros: "; cin >> n_num;
      for(c=1;c<=n_num;c++)
      {
        cout <<"\nIntroduce el numero " << c <<": "; cin >> num;
        if(num>elmayor)
        {
          elmayor=num;
        }
      }
      cout <<"\n\tEl numero mayor fue el " << elmayor;
      cin.get();cin.get();
     
      return 0;
    }

    Una parte importante es la estructura del ciclo:
    for(c=1;c<=n_num;c++)
    Significa que el ciclo va de 1 hasta ‘lo-que-nos-diga-el-usuario’.

    Otra cosa es que usamos iostream y no usamos conio.h.

    Cómo empezar a usar iostream

    Programar es como pensar, cada quien lo hace diferente, y el mismo lenguaje c++ nos facilita diversas formas de hacer las mismas cosas. Por ejemplo, el programa Hola Mundo que hicimos al principio podemos hacerlo utilizando la librería <iostream> en lugar de <stdio.h>:

    #include<iostream>
    using namespace std;  // Esta línea es necesaria cuando
                         // utilizamos la librería iostream
     
    int main()
    {
      cout << "Hola Mundo!";  //cout es el equivalente de printf,
                             //si se fijan la sintáxis es muy parecida.
      cin.get();  // cin.get es el equivalente de getch, detiene la ejecución del programa.
     
      return 0;  // No es necesaria para que el programa funcione,
                // pero es una buena costumbre indicar que nuestro programa terminó
               // sin errores.
    }

    La sintáxis de cout es:
    cout << "mensaje" ;
    Mostrando una variable:
    cout << "El promedio es:" << prom ;
    El siguiente mensaje aparecerá en una línea nueva:
    cout << "mensaje" << endl;

    ¿Y cómo leo datos (scanf)?

    Para sustituir scanf() usamos cin, por ejemplo:
    cin >> edad;
    Lee los caracteres introducidos y los guarda en la variable edad.

    Un programita muy simple:

    #include<iostream>
    using namespace std;
     
    int main()
    {
      int edad;
      cout<<"Cual es tu edad?: "; cin >> edad;
      cout<<"\n\tTu edad es " << edad;
      cin.get();cin.get();
     
      return 0;
    }

    En este caso necesitamos usar dos cin.get para detener el programa. Esto se debe al uso de cin.

    Cómo dejar de usar conio.h

    La librería <conio.h>, es propiedad de Borland y sólo sus compiladores pueden usarla. Por lo tanto significa que conio.h, no es una librería estandar.

    La librería conio se utiliza más que nada por sus comandos: getch(), clrscr(), gotoxy(), textcolor(), y textbackground(), los cuales usamos para darle mejor presentación a nuestros programas. Pero pensandolo bien, ¿en verdad necesitamos que los programas en consola se vean bien? La verdad es que no, lo que importa es que funcionen.

    Aún así, algunas funciones de la librería conio.h se pueden sustituir con funciones estándares, por ejemplo.

    • Para sustituir getch(), solo necesitamos: cin.get(); la cual está en <stdio.h>. Si no funciona entonces tendremos que ponerla dos veces: cin.get();cin.get();, la cuestión es algo complicada de explicar.
    • Para sustituir clrscr(), solo necesitamos escribir system(“cls”); la cual está en <iostream> (es sin .h, se definiría así: #include<iostream>).
    • Gotoxy() es algo vanal, y además se puede sustituir usando \n (espacio hacia abajo) y \t (espacio hacia la derecha) dentro de un printf();
    • Y la verdad es que cualquiera te agradecerá que no le pongas fondo rosa y letras amarillas a tus programas.
    Páginas: Anterior 1 2 3 4 5 6 7 8 9 Siguiente