Leliabh Posted October 10, 2012 Report Share Posted October 10, 2012 Bom dia amigos, tenho que fazer um programa para criptografar uma frase digitada , substituindo as vogais por *Comecei a fazer só que esta dando erro , e já quebrei a cabeça e não acho a solução .. segue script#include<iostream>#include<conio.h>#include<stdio.h>#include<string.h>#include<ctype.h>using namespace std;int main(){char *frase, letra;int tam,i;frase=strdup("");cout<<"\nEscreva uma frase\n";gets(frase);tam=strlen(frase);}for(i=0;i<tam,i++){ letra=frase;letra=toupper(letra);if ((letra == "A") ||(letra == "E") ||(letra == "I") ||(letra == "O") ||(letra == "U")){frase='*';}}}cout<<frase;getch();} :wacko: Quote Link to comment Share on other sites More sharing options...
0 Marcelo Utikawa da Fonseca Posted October 11, 2012 Report Share Posted October 11, 2012 (edited) Olá!Existem algumas coisas no seu programa que são o motivo de não funcionar:1- Ao invés de declarar frase como ponteiro e usar o strdup, declare frase como vetor.char frase[100], letra; 2- para comparar um char, use aspas simples. Aspas dupla indicam uma sequência de caracteres. if(letra == 'A')Edit: Remova a linha com o strdupAbraços,Marcelo Utikawa da Fonseca Edited October 11, 2012 by Marcelo Utikawa da Fonseca Quote Link to comment Share on other sites More sharing options...
0 Leliabh Posted October 11, 2012 Author Report Share Posted October 11, 2012 Fiz a modificação , porem o codigo esta dando erro no for Antes estava for(i=0;i<tam,i++)como não tenho mais o TAM coloquei for(i=0;i<frase,i++)e o programa não roda.Estou com duvidas. :blink: Quote Link to comment Share on other sites More sharing options...
0 Leliabh Posted October 11, 2012 Author Report Share Posted October 11, 2012 Efetuei as operações porem ele só esta lendo o inicio da frase, quando dá espaço ele não lê e não consigo achar o erro. #include <stdio.h>#include <stdlib.h>#include <string.h>#include <iostream>using namespace std;int main(char){char frase[100];int i=0,vogal;printf("Digite uma frase :\n\n");scanf("%s[^\n]",frase);vogal=frase;vogal=toupper(vogal);for(i=0;i<strlen(frase);i++){if(vogal=='a' || vogal=='e' || vogal=='i' || vogal=='o' || vogal=='u' || vogal=='A'|| vogal=='E' || vogal=='O' || vogal=='U') { frase='*';} }printf(frase);system("PAUSE>null");return 0;} Quote Link to comment Share on other sites More sharing options...
0 Septimus C Posted October 12, 2012 Report Share Posted October 12, 2012 o seu primeiro scanf() para pegar o conteúdo da frase está usando dois operadores: %s e %[^\n], ambos são diferentes, retire o %s para poder pegar a frase inteira inclusive com espaços.vogal=frase[i]; //vai atribuir apenas a primeira posição do vetor frase vogal=toupper(vogal);// converte apenas uma letra você poderia dispensar essa variavel vogal e usar diretamente frase para verificar quais são vogais o Seu último printf() está faltando colocar qual o tipo da variável, lembre da sintaxe do printf: printf("%d",inteiro); // quero imprimir um variavel do tipo inteiroComo você tem uma string, poderia fazer um outro for para imprimir todos os caracteres modificadosBoa sorte ^^ Quote Link to comment Share on other sites More sharing options...
0 Mateus GP Posted October 24, 2012 Report Share Posted October 24, 2012 Analise este codigo:#include <stdio.h> #include <string.h> int isvogal(int c) { if((c >= 'A')&&(c <= 'Z')) c = 'a' + (c - 'A'); switch(c) { case 'a': case 'e': case 'i': case 'o': case 'u': return 1; } return 0; } int main(int argc, char* argv[]) { char frase[256]; int i = 0; printf("Insira uma frase:\n"); fgets(frase, 256, stdin); while(frase[i] != 0) { if(isvogal(frase[i])) frase[i] = '*'; i++; } printf("Frase: %s\n", frase); return 0; }Espero ter ajudado. Boa Sorte! Quote Link to comment Share on other sites More sharing options...
Question
Leliabh
Bom dia amigos, tenho que fazer um programa para criptografar uma frase digitada , substituindo as vogais por *
Comecei a fazer só que esta dando erro , e já quebrei a cabeça e não acho a solução ..
segue script
#include<iostream>
#include<conio.h>
#include<stdio.h>
#include<string.h>
#include<ctype.h>
using namespace std;
int main()
{
char *frase, letra;
int tam,i;
frase=strdup("");
cout<<"\nEscreva uma frase\n";
gets(frase);
tam=strlen(frase);
}
for(i=0;i<tam,i++)
{
letra=frase;
letra=toupper(letra);
if ((letra == "A") ||(letra == "E") ||(letra == "I") ||(letra == "O") ||
(letra == "U"))
{
frase='*';
}
}
}
cout<<frase;
getch();
}
:wacko:
Link to comment
Share on other sites
5 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.