Algoritmia - URGENTE

 
Vista:

URGENTE

Publicado por maite (1 intervención) el 17/12/2007 21:19:45
necesito urgente para el miercoles, decir porqué el ejercicio ya hecho, no funciona la seguna vez que se ejecuta. en el ejercicio se introduce un nombre y te dice cuantas as hay en dicho nombre es este, os lo agradeceria mucho: GRACIAS!!

#include<stdio.h>
#include<conio.h>
int main(void)
{
char nom[50];
int i;
int nrodeas;

printf("introduce una palabra: ");
fflush(stdin);
scanf("%d",&nom[i]);

while(nom[i]=="")
{
i=0;
nrodeas=0;
while(nom[i]!="")
{
if((nom[i]=="a") || (nom[i]=="A"))

nom[i]++;
i++;
}

printf("hay %d cantidad de as",nrodeas);
}

getch();
return 0;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Corrección de código en C para contar 'a's en una palabra

Publicado por Alejandro (307 intervenciones) el 11/03/2024 23:00:40
Maité, hay varios problemas en el código que impiden su correcta ejecución. Aquí te detallo algunas de las correcciones necesarias:

1. La entrada de la palabra debería ser capturada mediante `%s` en lugar de `%d`.
2. En el bucle `while`, estás comparando la cadena con `""`, lo cual no es la forma correcta de verificar si la cadena está vacía en C. Deberías utilizar `nom[i] != '\0'` para comprobar si has llegado al final de la cadena.
3. El incremento `nom[i]++` no incrementa el contador `nrodeas`. Deberías incrementar `nrodeas` en lugar de incrementar el contenido de `nom[i]`.
4. La condición del bucle principal `while` también está mal, debería ser `while (nom[0] != '\0')` en lugar de `while (nom[i] != "")`.
5. El bucle `while` interno debería estar dentro de un `for` para iterar sobre cada carácter de la cadena.

Aquí tienes el código corregido:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include<stdio.h>
#include<conio.h>
 
int main(void) {
    char nom[50];
    int i = 0;
    int nrodeas = 0;
 
    printf("Introduce una palabra: ");
    fflush(stdin);
    scanf("%s", nom);
 
    while (nom[0] != '\0') {
        i = 0;
        nrodeas = 0;
 
        for (i = 0; nom[i] != '\0'; i++) {
            if (nom[i] == 'a' || nom[i] == 'A') {
                nrodeas++;
            }
        }
 
        printf("Hay %d cantidad de 'a's\n", nrodeas);
 
        printf("Introduce otra palabra (o presiona Enter para salir): ");
        fflush(stdin);
        scanf("%s", nom);
    }
 
    getch();
    return 0;
}

Estas correcciones deberían permitir que el programa funcione correctamente incluso en ejecuciones sucesivas. Recuerda que en cada iteración del bucle principal, se pide una nueva palabra y se cuentan las letras 'a'.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar