elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / Re: Duda con contador de palabras en C para principiantes en: 24 Octubre 2018, 06:57 am
...un ejercicio que me pide que cuente las palabras de una frase acabada en '.'...

El título del tema nos dice que se trata de un ejercicio para principiantes, por esto, al leer la parte de la pregunta que cité anteriormente, deduje que la entrada del programa siempre sería una frase terminada con un punto (utilizado para señalar el final de la entrada). Lo que es habitual en este tipo de ejercicios, donde se suelen asumir entradas ideales.

Estos son algunos de los casos de prueba que utilicé, y las salidas que obtuve con mi código:

Código
  1. .
  2. 0
  3.  
  4.       .
  5. 0
  6.  
  7. ,;.
  8. 0
  9.  
  10. ,  ;    .
  11. 0
  12.  
  13. Hola.
  14. 1
  15.  
  16. Hola      .
  17. 1
  18.  
  19.        Hola   .
  20. 1
  21.  
  22. En un lugar de la Mancha, de cuyo nombre no quiero acordarme...
  23. 12
  24.  
  25. En    lugar             , de cuyo nombre no quiero          .
  26. 7
  27.  
  28. En un lugar.
  29. 3

Como se puede ver, cuando no existen palabras o cuando hay más de un espacio entre las palabras el cálculo es correcto.

No tomé en cuenta, intencionalmente, el conteo de números dentro de la frase, porque al2000 no lo planteó como parte del problema:

Código
  1. Ahora vienen 7 espacios:       , con estos otros suman 12:     .
  2. 7

En todo caso, no me parece que sea una solución incorrecta para un ejercicio de nivel básico.
2  Programación / Programación C/C++ / Re: ayuda en: 23 Octubre 2018, 13:04 pm
Código
  1. #include <stdio.h>   // fgets()
  2. #include <string.h>  // strcspn(), strcmp()
  3.  
  4. enum { N_PAISES = 10, N_CHARS = 10 };
  5.  
  6. int main(void) {
  7.    const char paises[N_PAISES][N_CHARS] = {
  8.        "Angola", "Egipto", "Lesoto", "Serbia", "Guinea",
  9.        "Grecia", "Brasil", "Ruanda", "Kosovo", "Chipre"
  10.    };
  11.  
  12.    const char capitales[N_PAISES][N_CHARS] = {
  13.        "Luanda", "El Cairo", "Maseru", "Belgrado", "Conakri",
  14.        "Atenas", "Brasilia", "Kigali", "Pristina", "Nicosia"
  15.    };
  16.  
  17.    char respuesta[N_CHARS];
  18.    int aciertos = 0;
  19.    int errores  = 0;
  20.  
  21.    for (int i = 0; i < N_PAISES; ++i) {
  22.        printf("Cual es la capital de %s? ", paises[i]);
  23.        fgets(respuesta, sizeof respuesta, stdin);
  24.        respuesta[strcspn(respuesta, "\r\n")] = '\0';
  25.  
  26.        if (strcmp(respuesta, capitales[i]) == 0) {
  27.            printf("\t* Correcto *\n\n");
  28.            ++aciertos;
  29.        } else {
  30.            printf("\t* Incorrecto *\n\n");
  31.            ++errores;
  32.        }
  33.    }
  34.  
  35.    printf(
  36.        "   MARCADOR    \n"
  37.        "Aciertos --> %i\n"
  38.        "Errores ---> %i\n",
  39.        aciertos, errores
  40.    );
  41.  
  42.    return 0;
  43. }
3  Programación / Programación C/C++ / Re: Duda con contador de palabras en C para principiantes en: 22 Octubre 2018, 22:52 pm
Código
  1. #include <stdio.h>
  2. #include <ctype.h>  // isalpha()
  3.  
  4. int main(void) {
  5.    int nPalabras = 0;
  6.    int existeLetra = 0;
  7.    char caracter = '\0';
  8.  
  9.    while (caracter != '.') {
  10.        scanf("%c", &caracter);
  11.  
  12.        if (!existeLetra) {
  13.            existeLetra = isalpha(caracter);
  14.        }
  15.  
  16.        if (existeLetra) {
  17.            if (caracter == ' ') {
  18.                ++nPalabras;
  19.                existeLetra = 0;
  20.            }
  21.  
  22.            if (caracter == '.') {
  23.                ++nPalabras;
  24.            }
  25.        }
  26.    }
  27.  
  28.    printf("Total palabras: %i\n", nPalabras);
  29.  
  30.    return 0;
  31. }
4  Programación / Programación C/C++ / Re: Ayuda con bucle for en: 22 Octubre 2018, 18:18 pm
Mientras la condición i < n sea verdadera, las repeticiones seguirán ejecutándose. Cuando la condición no se cumpla (cuando i llegue a ser igual a n), las iteraciones de la sentencia for terminarán.

En la condición:
Código
  1. if (j1 > 0 && j1 < 25)

La primera parte (j1 > 0) no es necesaria, siempre será verdadera debido al rango en el que se generan los números aleatorios.
5  Programación / Programación C/C++ / Re: [C++]Numero ilimitado de argumentos en funciones. en: 21 Octubre 2018, 02:17 am
En este caso, el primer número indica la cantidad de elementos de la lista. Compila con el estándar C++ 98 en adelante:

Código
  1. #include <iostream>
  2. #include <cstdarg>
  3.  
  4. int sumar(int, ...);
  5.  
  6. int main()
  7. {
  8.    std::cout << sumar(5, 5, 4, 6, 7, 8) << '\n';
  9.    return 0;
  10. }
  11.  
  12. int sumar(int nNumeros, ...)
  13. {
  14.    va_list numeros;
  15.    va_start(numeros, nNumeros);
  16.  
  17.    int suma = 0;
  18.    for (int i = 0; i < nNumeros; ++i)
  19.    {
  20.        suma += va_arg(numeros, int);
  21.    }
  22.  
  23.    va_end(numeros);
  24.    return suma;
  25. }

Estos compilan con el estándar C++ 11 o superior:

Código
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. int sumar(const std::vector<int> &);
  5.  
  6. int main()
  7. {
  8.    int suma = sumar({ 5, 4, 6, 7, 8 });
  9.    std::cout << suma << '\n';
  10.  
  11.    return 0;
  12. }
  13.  
  14. int sumar(const std::vector<int> &numeros)
  15. {
  16.    int suma = 0;
  17.  
  18.    for (const int &num : numeros)
  19.    {
  20.        suma += num;
  21.    }
  22.    return suma;
  23. }

Código
  1. #include <iostream>
  2.  
  3. template <typename T>
  4. T sumar(T inicio)
  5. {
  6.    return inicio;
  7. }
  8.  
  9. template <typename T, typename... Nums>
  10. T sumar(T inicio, Nums... nums)
  11. {
  12.    return inicio + sumar(nums...);
  13. }
  14.  
  15. int main()
  16. {
  17.    const int suma = sumar(5, 4, 6, 7, 8);
  18.    std::cout << suma << '\n';
  19.    return 0;
  20. }
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines