Nueva duda en C

KoKiTO

Pues esto de dejar todo para ultima hora no es bueno.Aquí programando despues de varias horas ai otra cosilla kno me sale salen cosas raras.El rollo es hacer esto:

Crear un programa que calcule todas las letras “k” de cualquier palabra que se le indique.

El codigo k yo tengo es este:

#include<stdio.h>
#include<string.h>
#define MAX_CADENA 100

void main(void)
{
char cadena[MAX_CADENA];
int i,j;
int vocales;
char vocal='k';
printf("Introduce una palabra\n");
gets(cadena);
i=0;
while (cadena!='\0')
{
if(cadena==vocal)
vocales=vocales+1;
}
printf("La palabra tiene %i letras K", vocales);
}


Se k esta bastante mal pero es k es de ir probando mil cosas y ai cosas k son innecersarias pero a las 4 de la mñn no se me pude pedir más.
El problema de ese codigo es k las K aunk haiga 5000millones de ellas las suma 1 vez solo y para colmo la suma la empieza en 868?¿ y nose pk.
Gracias por vuestra ayuda.

ValaV

while (cadena!='\0')
{
if(cadena==vocal)
vocales=vocales+1;
i++;
}


#3 Cierto, no lo habia visto

gF

Ademas de que tienes que inicializar vocales a 0, si no puede que valga 868 o cualquier otro numero

#include<stdio.h>
#define MAX_CADENA 100

void main(void)
{
char cadena[MAX_CADENA];
int i=0;
int vocales=0;
char vocal='k';
printf("Introduce una palabra: ");
gets(cadena);
while (cadena!='\0')
{
if(cadena==vocal) vocales=vocales+1;
i++;
}
printf("La palabra tiene %d letras %c\n", vocales,vocal);

SeiYa

#include <stdio.h>
#include <string.h>
#define MAX_CADENA 100;

void main()
{
&nbsp;&nbsp;&nbsp;char szCad[MAX_CADENA];
&nbsp;&nbsp;&nbsp;int kas=0;
&nbsp;&nbsp;&nbsp;printf("Introduce la cadena: ");
&nbsp;&nbsp;&nbsp;szCad=gets(szCad);
&nbsp;&nbsp;&nbsp;for(int i=0;i<szCad!='\0';i++)
&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(szCad=='k'||szCad=='K')
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kas++;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;printf("Hay %d vocales en la cadena.", kas);
}

EDITED.

gF

#4 Mal

for(int i=0;i<MAX_CADENA;i++) <--- Mal

Si la cadena introducida es de 20 caracteres no hay que buscar en los otros 80.

SeiYa

Vale, un fallo lo tiene cualquiera XD, arreglado.

S

#include<stdio.h>

#define&nbsp;MAX_CADENA&nbsp;100

int&nbsp;main()
{
&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;cadena[MAX_CADENA];
&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i=0;
&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;kas=0;

&nbsp;&nbsp;&nbsp;&nbsp;printf("Introduce&nbsp;una&nbsp;palabra:&nbsp;");
&nbsp;&nbsp;&nbsp;&nbsp;gets(cadena);

&nbsp;&nbsp;&nbsp;&nbsp;while(cadena!='\0')
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(cadena=='k')
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kas++;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i++;
&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;printf("La&nbsp;palabra&nbsp;tiene&nbsp;%i&nbsp;letras&nbsp;K",&nbsp;kas);
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;
}

PD: #4 q haces xa q t kede sangrado?
PD2: #8 thx

cabron

#4:

for(int i=0;i<szCad!='\0';i++)

Eso te daría un error al compilar, C no permite definir una variable en la cabecera de un for, no es como C++.

Otra cosa, el código que te han puesto, no comprueba las k mayúsculas y minúsculas, así que o usas || para comprobar las 2, o conviertes la cadena a todo minúsculas (o mayúsculas) antes de usarla (en caso de que quieras comprobar mayúscuolas y minúsculas claro)

#7:

No puedes usar sangrías, tienes que hacerlo con espacios. Puedes usar esto para hacerlo más fácil: http://www.krazytions.com/espacios2html.php

Ejemplo:

int&nbsp;main&nbsp; ( &nbsp;void&nbsp; )
{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;100;&nbsp;i++)
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/bla&nbsp;bla&nbsp;bla&nbsp;/
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
}

Usuarios habituales

  • cabron
  • Supernionio
  • SeiYa
  • gF
  • ValaV
  • KoKiTO