Ir ao conteúdo

Programa que lê uma string e conta quantos dos caracteres desta são iguais a letra C


Plástico Bolha

Posts recomendados

Postado

#include <stdio.h> /* Programa que lê uma string e conta quantos dos caracteres desta são iguais a letra C */

int main ()

{

char string[100];

int i, cont;

printf("\n\nDigite uma frase: ")

gets(string); /* eu sei que não estou em um Unix e nem especifiquei o estúdio para usar gets, mas esse não é o caso */

printf("\n\nFrase digitada: \n%s", string);

cont = 0; /* essa parte não entendi */

for (i=0; string != '\0'; i=i+1) /* essa parte não entendi */

{

if (string == 'c') /* essa parte não entendi */

cont = cont +1; /* essa parte não entendi */

}

printf("\nNumero de caracteres c = %d", cont); /

return (0);

}

for (i=0; string != '\0'; i=i+1) não entendi esse esquema de condições para "FOR" "i" e "string " são a mesma coisa ?

if (string == 'c') string é uma variavel ou uma letra? se for uma variavel, porque afinal de existir o cont = 0.

cont = 0; porque da existência dessa variavel, o que mudaria se ela não existisse.

porque tem for, if, cont, se somente é um programa que conta as strings e armazena todas as letras "C". A letra "C" é armazenada em "i" ou "string " ?

FAÇA A VIDA DE UM NOVATO FELIZ

:D

Postado
#include <stdio.h> /* Programa que lê uma string e conta quantos dos caracteres desta são iguais a letra C */

int main ()

{

char string[100];

int i, cont;

printf("\n\nDigite uma frase: ")

gets(string); /* eu sei que não estou em um Unix e nem especifiquei o estúdio para usar gets, mas esse não é o caso */

printf("\n\nFrase digitada: \n%s", string);

cont = 0; /* essa parte não entendi */

for (i=0; string != '\0'; i=i+1) /* essa parte não entendi */

{

if (string == 'c') /* essa parte não entendi */

cont = cont +1; /* essa parte não entendi */

}

printf("\nNumero de caracteres c = %d", cont); /

return (0);

}

for (i=0; string != '\0'; i=i+1) não entendi esse esquema de condições para "FOR" "i" e "string " são a mesma coisa ?

if (string == 'c') string é uma variavel ou uma letra? se for uma variavel, porque afinal de existir o cont = 0.

cont = 0; porque da existência dessa variavel, o que mudaria se ela não existisse.

porque tem for, if, cont, se somente é um programa que conta as strings e armazena todas as letras "C". A letra "C" é armazenada em "i" ou "string " ?

FAÇA A VIDA DE UM NOVATO FELIZ

:D

e amigo beleza

é o seguinte você declarou a variavel string do tipo char de no maximo 100 caracteres certo então seu vetor como vimos no codigo ira terminar quando for teclado enter onde vai ser o final da string \0 no sue caso você deveria fazer um while para ele digitar ate no maximo 100 carcteres pois o seu programa ira aceitar mais q 100 caracteres e pode ocorrer erro e a variavel string ocupar espaço que nao seja dela continuando

e você declarou i que sera seu contador

for (i=0; string [i] != '\0'; i=i+1)

Nesta parte ele vai fazer o seguinte seu contador i vai receber 0 e enquanto no final da sua string for diferente de \0 ele vai ficar no loop e sempre quando terminar um loop adiciona mais 1 na variavel i

então ele vai fazer isso

string na posição i(i=0) é diferente de \0? se sim ele executa o que ta dentro do for e depois adiciona +1 na vaiavel i e ficaria assim i=1; string[1]!='\0'; i=i+1 e assim por diante

entendeu?

agora seu if funciona da seguinte forma:

se string na posiçao i como explicado acima for igual ao caracetere c cont+=1

ou seja se cont é o contador de latras c que tem na frase então quando a string na posiçao i for igual a c seu cont vai ser somado a +1 entendeu se ela nao existisse nao teria como contar quantas letra c teria

e ao final é impresso quantas letras c tem que esta armazenado na variavel cont

entendeu mais ou menos ou te alguma duvida ainda?

espero que eu tenha sido um pouco calro na explicaçao

abraço

t+

Postado

O meu "i" é uma variavel contadora do "c". "i" e "c" são praticamente a mesma coisa de certo modo. Quando a string for iniciada "i" começara com 0, então o meu for sera ativado por causa do meu if, e fara o lopping e por consequência adcionara +1 a "i" cada vez que o meu "i" se encontrar na posição "C" da string, porque toda vez que isso acontecer minha variavel tera o valor 0, que é diferente de \0 que é o objetivo de "i" e tambem o final da string. Por consequencia desses fatos "for" ficara retornando à essas funções até que chegue em \0. e quando isso acontecer será contado ao mesmo tempo quantas ACSII continha na minha string e o número de vezes que aparece "C" que ela continha. Olha pelo que eu entendi foi isso que ocorreu pela sua explicação é isso mesmo ?

só mais uma dúvida isso >>>"i" e isso string são a mesma coisa ?

Postado

nao o seu i uma variavel auxiliar contadora do for a sua variavel cont vai ser sua contadora da letra c entendeu

então vai ficar no loop ate que string na posiçao i for igual a \0 quando for igual a a \0 sai do for e quando ele detectar a letra c na string ele soma mais 1 na variavel cont como ela ta recebendo zero vai ser cont+=1 entendeu?

quase i no caso vai ser sua variavel auxiliar contadora e string e string na posiçao i ou seja se i é igual a 1 string[1] string na posiçao 1

entendeu?

qualquer duvida pergunte ok

abraço t+

Postado

if (string == 'c'): se "i" for = a "c" será adcionado +1 a cont como visto nessa parte cont = cont +1. "Mas" se "i" não estiver na posição "c" da string é acionado o "for" (i=0; string != '\0'; i=i+1)

que diz se "i" for 0, ou se "i" for diferente de \0, então será adcionado +1 a "i" ou seja uma casa afrente, e ele fará esse looping até chegar a um "c" e quando finalmente a string acabar e ele tiver feito isso por toda a string "i" vai chegar a \0, ai a string acaba e será imprimido na tela quantos "c" x/string possuia.

resumindo. Quem desencadeia a corrida de "i" é gets(string); e quem a armazena o "c", é o contador "cont". É isso ? :D

Postado
if (string == 'c'): se "i" for = a "c" será adcionado +1 a cont como visto nessa parte cont = cont +1. "Mas" se "i" não estiver na posição "c" da string é acionado o "for" (i=0; string != '\0'; i=i+1)

que diz se "i" for 0, ou se "i" for diferente de \0, então será adcionado +1 a "i" ou seja uma casa afrente, e ele fará esse looping até chegar a um "c" e quando finalmente a string acabar e ele tiver feito isso por toda a string "i" vai chegar a \0, ai a string acaba e será imprimido na tela quantos "c" x/string possuia.

resumindo. Quem desencadeia a corrida de "i" é gets(string); e quem a armazena o "c", é o contador "cont". É isso ? :D

nao... deixa eu ver um jeito de você entender melhor...

você declarou string sendo do tipo chr e com ate 100 caracteres certo?

então você vai digitar algo e armazenar na variavel certo?

e o programa quer que você imprima qntas letras c tem nessa string certo? então vamos la...

você nao sbae o que o usuario ira digitar então você vai ter que percorrer todas as posiçoes da variavel string onde esta armazenado a frase digitada certo?

sabemos que a variavel string tem 100 posiçoes e que ela começa do 0 então ela vai de 0 a 99 certo?

e sabemos que uma string tem seu final \0 informando que ela termina ali ou quando você tecla enter e termina de digitar a frase o programa coloca na ultima posiçao da string o \0 certo?

como então você vai ler todas as posiçoes da string ja sabendo que ela sempre termina com \0

como ja sabemos que ela tem um limite é melhor usar o for certo?

então como usaemos o for?

declaramos a variavel auxiliar que vai ser "i" que é do tipo int

ficaria assim for(i=0; string!='\0'; i++) ou seja o "i" inicialmente vai receber 0 certor?

sua você nao declarou sua string como string[100]?

então este "i" sera para percorrer todas as posiçoes da string e enquanto string for diferente de '\0' ele vai ficar neste loop pois quando chegar ao '\0' sabemos que é o final da string certo?

e a cada posiçao que ele percorrer ele vai incrementar +1 a variavel "i" ate que se encontre a posiçao onde esteja o '\0' certo?

continuando....

agora teremos que ver em cada posiçao da string se há a letra c certo?

então utilizamos o if que ficaria assim

if(string=='c') ou seja este if ficara dentro do for pois lembrando o "i" a cada loop muda de valor ou seja a cada loop vai ler cada posiçao da string e verificar se ela é igual a 'c' certo?

agora temos que ter uam variavel para contar toda vez que string na posiçao "i" for igual a c, então criamos a va riavel do tipo int cont e ele inicialmente recebe zero então ficaria assim:

if(string=='c')

cont+=1;

ou seja se string na posição "i" for igual a c cont= cont +1 como cont é igual a 0 ficaria assim se na primeira posiçao do vetor tiver uma letra c

cont= 0+1 -> cont = 1 e se na segunda posiçao tiver outra letra c ficaria assim cont= cont + 1 -> cont = 1+1-> cont = 2 e assim por diante certo?

ou seja cont a cada letra c que estiver na string ela adiciona 1 em si proprio

e quando o for encontrar o '\0' ele sai do loop e executa o que esta fora dele entendeu?

acho que expliquei ao maximo que pude

espero que entenda

pegue umas apostilas leia a respeito e faça uns programinhas basicos que você entende

abraço

t+

Postado

Entendi agora :D.

Eu to lendo umas apostilas por conta prórpia de c/c++ básico pra aprender apenas conceitos dos comandos, sem me importar tanto com os exercícios, porque eu sei que só vou conseguir aprender na prática. Só é ruim que não tem professor, mas eu me viro, e valeu por tirar minha dúvida. :)

Postado
Entendi agora :D.

Eu to lendo umas apostilas por conta prórpia de c/c++ básico pra aprender apenas conceitos dos comandos, sem me importar tanto com os exercícios, porque eu sei que só vou conseguir aprender na prática. Só é ruim que não tem professor, mas eu me viro, e valeu por tirar minha dúvida. :)

ok mas qualquer duvida pergunte brother, ou coloca o programa ai que o pessoal te encaminha entendeu??

abraço

t+

:D

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!