Forum Pplware

Versão Completa: Podem me ajudar com este programa sff?
Está de momento a ver uma versão reduzida do nosso conteúdo. Ver versão completa com o formato adequado.
Páginas: 1 2
este programa esta quase feito so que falta um promenor qualquer que nao consigo encontar se me podessem ajudar agradecia!

#include <stdio.h>

int main()
{
char frase[100];
int a, e, i, o, u;

scanf("%s", &frase);

int n;
char s;

for(n=0;n<s;n++)
{
a=0;
e=0;
i=0;
o=0;
u=0;
if(a == frase[n])
{
a=a + 1;
}
else if(e == frase[n])
{
e=e + 1;
}
else if(i == frase[n])
{
i=i + 1;
}
else if(o == frase[n])
{
o=o + 1;
}
else if(u == frase[n])
{
u=u + 1;
}
}
return 0;
}
Qual é o objectivo do teu programa?
Convinha que desses uma breve descrição do objectivo desse programa, para te podermos ajudar...

Já agora, coloca o código entre tags [code], para preservar a indentação.
este programa esta quase feito so que falta um promenor qualquer que nao consigo encontar se me podessem ajudar agradecia!

"""para descobrir quantas voguais é que há na frase, que o utilizador escreve....Exemplo: "Ola mundo" --> o programa deve dizer assim,O=2, a=1, u=1""""



#include <stdio.h>

int main()
{
char frase[100];
int a, e, i, o, u;

scanf("%s", &frase);

int n;
char s;

for(n=0;n<s;n++)
{
a=0;
e=0;
i=0;
o=0;
u=0;
if(a == frase[n])
{
a=a + 1;
}
else if(e == frase[n])
{
e=e + 1;
}
else if(i == frase[n])
{
i=i + 1;
}
else if(o == frase[n])
{
o=o + 1;
}
else if(u == frase[n])
{
u=u + 1;
}
}
return 0;
}
Ok, tens aí bastantes erros...

Tenta assim: (edit: o Post abaixo do RaCcOn fez-me reparar que não conto com as vogais maiúsculas)
Código:
#include <stdio.h>

int main()
{
char frase[100];
int a, e, i, o, u, n;

scanf("%s", &frase);

n = 0;
a = 0;
e = 0;
i = 0;
o = 0;
u = 0;

while (frase[n] != "\0") {
    if ('a' == frase[n] || 'A' == frase[n]) {
        a++;
    } else if ('e' == frase[n] || 'E' == frase[n]) {
        e++;
    } else if ('i' == frase[n] || 'I' == frase[n]) {
        i++;
    } else if ('o' == frase[n] || 'O' == frase[n]) {
        o++;
    } else if ('u' == frase[n] || 'U' == frase[n]) {
        u++;
    }
    n++;
}

printf("\nResultados: a = %d, e = %d, i = %d, o = %d, u = %d\n",a,e,i,o,u);
Não será algo deste género que tu queres?

Código:
#include<iostream>
#include<cstring>

using namespace std;

int main(){

int contador=0;
char frase[1001];

cout << "Digite a sua frase com até 1000 caracteres:" << endl;

gets(frase);

for (int i=0; i<strlen(frase) ;i++){

if( isalpha(frase[i]) ) {

if( frase[i]=='a' || frase[i]=='e' || frase[i]=='i' || frase[i]=='o' || frase[i]=='u')
contador++;
else if( frase[i]=='A' || frase[i]=='E' || frase[i]=='I' || frase[i]=='O' || frase[i]=='U' )
contador++;
}
}

cout << "A sua frase tem " << contador << " vogais" << endl;

return 0;
}
acho que existe mesmo uma funcao para testar se e vogal. de qualquer das maneiras nao se deve utilizar ifs/|| para testar varios atributos do mesmo tipo.
usa se um switch.
Não sei se venho tarde mas... Fiz isto assim em cima do joelho... Espero que ajude. Smile

Código:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

unsigned char counter[5] = {0,0,0,0,0};

void is_vogal (char *vogal) {
    unsigned int i;
    for (i=0;i<=strlen(vogal);i++) {           // percorre a string toda
        switch (tolower(vogal[i])) {         // coloca todas as vogais como minusculas
            case 'a' : counter[0] += 1; break; // caso seja 'a' , incrementa um valor na posição 0 do vector.
            case 'e' : counter[1] += 1; break; // caso seja 'e' , incrementa um valor na posição 1 do vector.
            case 'i' : counter[2] += 1; break; // caso seja 'i' , incrementa um valor na posição 2 do vector.
            case 'o' : counter[3] += 1; break; // caso seja 'o' , incrementa um valor na posição 3 do vector.
            case 'u' : counter[4] += 1; break; // caso seja 'u' , incrementa um valor na posição 4 do vector.
            default : continue;
        }
    }
}

int main (int argc, char **argv) {
    if (argc!=2) { printf ("Sintaxe:\n\n%s <string>",argv[0]); exit(0); } // a aplicação tem que ser chamada com 1 argumento
    is_vogal(argv[1]);  // "sobe" para a função "is_vogal" levando como argumento a string colocada quando se chamou o programa
    printf ("a = %d\ne = %d\ni = %d\no = %d\nu = %d\n\n", counter[0], counter[1], counter[2], counter[3], counter[4]);
    return 0;
}

Exemplo:

[tiago@startrek linguagem_c]$ ./is_vogal Hello World
Sintaxe:

./is_vogal <string>
[tiago@startrek linguagem_c]$ ./is_vogal "Hello World"
a = 0
e = 1
i = 0
o = 2
u = 0




Abraço
r_gama Escreveu:
Código:
scanf("%s", &frase);
O uso do scanf é altamente desencorajado pois possui falhas, que podem levar a falhas de segurança.

(25-05-2009 21:34)RaCcOn Escreveu: [ -> ]Não será algo deste género que tu queres?
É sim, mas isso é C++.

(25-05-2009 22:32)Sight Escreveu: [ -> ]acho que existe mesmo uma funcao para testar se e vogal.
Só em C++, salvo erro.
(27-05-2009 15:18)_Planax_ Escreveu: [ -> ]O uso do scanf é altamente desencorajado pois possui falhas, que podem levar a falhas de segurança.

creio que te referes ao scanf para ler strings correcto? se sim entao concordo contigo. ja nao me lembro bem qual era a funcao que utilizava o ano passado, mas acho que era a gets();
Páginas: 1 2
URL's de Referência