Leliabh Postado Outubro 10, 2012 Denunciar Share Postado Outubro 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: Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Marcelo Utikawa da Fonseca Postado Outubro 11, 2012 Denunciar Share Postado Outubro 11, 2012 (editado) 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 Editado Outubro 11, 2012 por Marcelo Utikawa da Fonseca Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Leliabh Postado Outubro 11, 2012 Autor Denunciar Share Postado Outubro 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: Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Leliabh Postado Outubro 11, 2012 Autor Denunciar Share Postado Outubro 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;} Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Septimus C Postado Outubro 12, 2012 Denunciar Share Postado Outubro 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 ^^ Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Mateus GP Postado Outubro 24, 2012 Denunciar Share Postado Outubro 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! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
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 para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.