Ir para conteúdo

POWERED BY:

Arquivado

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

Romulo Costa

Qual é o erro do programa ?

Recommended Posts

Galera....Sou novo em Linguagem C, mas estou bem interessado em aprender. Tava um dia em casa sem fazer nada, e acabei criando esse programinha simples pra poder pesquisar tal caracteres em uma frase e depois substituir esse caracter pesquisado por outro, apenas usando comando FOR e IF.Consegui fazer com que o usuario pesquisasse tal caracter na frase e o programa imprimisse o resultado de quantos caracter tem na frase, mas na hora de modificar ele nao modifica, parece que o programa pula a linha do comando de leitura.esse é o codigo:

#include <stdio.h>int main(){int j, contador, contador2, jj;char frase[100], buscar, altera;printf("Digite uma frase: ");gets(frase);contador=0;printf("\n\nA frase original eh: %s\n\n", frase);printf("Qual letra voce deseja buscar na frase :");scanf("%c",&buscar);/*Aqui ele pesquisa na frase a letra pesquisada pelo usuario*/for(j=0;frase[j] != '\';j++) {	if(frase[j]== buscar)	{	contador=contador+1;	} }printf("\n\nNa frase original existe %d letras %c", contador, buscar);    /*O programa imprime até aqui certinho*/printf("\n\nPor qual letra voce deseja alterar a letra %c pesquisada", buscar);scanf("%c",&altera);       /*aqui parece que o programa pula essa parte e nem dá o comando de leitura pro usuario digitar*/for(jj=0;frase[jj] != '\';jj++) {	if(frase[jj]== buscar)	{	frase[jj] = altera;	} }printf("\n\nVoce fez alteracao(oes) de %c para %c", buscar, altera);printf("\n\n\nO numero de letras modificados eh de %d ", contador);printf("\n\nA frase modificada ficou:\n%s", frase);return 0;}

Por que será que ta acontecendo isso galera ?estou usando o Turbo C++ pra compilar, faz alguma diferença?vlw...Espero que possam me ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

E aew cara, peguei esse seu codigo e aqui tb ele pulava os comandos sem explicação. Acu q o problema eh usar o '\' (barra zero), mas soh acho isso, até porque sou novato em c++ tb. Eu reescrevi o programa, ficou parecido com o seu e no Dev-C++ ele rodou sem problemas. ( Pra finaliza soh falta uma rotina q trate maiusculas e minusculas iguais, q eu nao sei e tb ainda nao procurei).

#include <cstdlib>#include <iostream>#include <conio.h>#include <stdio.h>using namespace std;int main(int argc, char *argv[]){	char frase[100],letra, alter;	int cont=0;		cout << "Digite uma frase: ";	cin.getline(frase,100,'\n');		cout << "\nQue letra deseja pesquisar? ( atencao! CASE SENSITIVE ) \n";	letra = getch();		for( int i = 0; i < strlen(frase);i++)	{		 if (frase[i] == letra)		 {			cont++;		 }	}		if ( cont > 0 )	{	   cout <<"\nNa Frase: "<< frase << "\nExistem "<< cont << " letras "<< letra;		   cout << "\nPor qual letra deseja alterar a letra "<<letra << " ";	   alter = getch();		   for ( int i = 0; i < strlen(frase);i++)	   {		  if (frase[i] == letra)		  {			 frase[i] = alter;		  }	   }		cout <<"\nTodas as letras "<< letra<< " foram alteradas por "<< alter;	cout <<"\nForam realizadas "<< cont << " alteralções"; 	cout <<"\nNova Frase ficou: "<< frase << endl; 		}	else	{	   cout << "\nNao existe nenhuma letra "<< letra << " na frase ";	   cout << frase << "\n";	} 				system("PAUSE");	return EXIT_SUCCESS;}

abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Myho,Ficou legal cara....ainda nao testei o seu codigo em C++ mas vou testa-lo brevemente.Entao, o Eclesiastes me ajudou em outro forum e aqui tbm.Era só colocar na variavel o seguinte codigo:

altera = getchar();

Pronto..resolvia o problema.Nao sei explicar direito mas vamos lá, isso nos ajudava pq o getchar limpa o buffer, ou seja, a sujeirinha que fica no teclado conforme voce vai usando o comando de leitura muitas vezes.Se quiser uma explicação mais a funda use o link que o Eclesiastes disponibilizou, lá explica direitinho.Valeu pela ajuda Myho.Até mais

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.