Jump to content
Fórum Script Brasil
  • 0

DUVIDA FRASE CRIPTOGRAFADA


Leliabh
 Share

Question

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

  • 0

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 strdup

Abraços,

Marcelo Utikawa da Fonseca

Edited by Marcelo Utikawa da Fonseca
Link to comment
Share on other sites

  • 0

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;

}

Link to comment
Share on other sites

  • 0

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 inteiro

Como você tem uma string, poderia fazer um outro for para imprimir todos os caracteres modificados

Boa sorte ^^

Link to comment
Share on other sites

  • 0

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!

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      151k
    • Total Posts
      649.1k
×
×
  • Create New...