bruvascao 0 Denunciar post Postado Março 1, 2009 Bom dia galera, estou com um problema num trabalho e gostaria q alguem me desse uma força,por favor. Tenho que fazer um programa em C que usa funçoes,até aí tudo bem,só que algumas dessas funçoes não estão 100%,como por exemplo ler dois vetores de 12 posiçoes cada e fazer uma matriz que receba numa coluna o vetor "A" multiplicado por 2 e na outra coluna o vetor "B" subitraído de 5.A outra função que não está legal é a de contar as consoantes de uma frase.Por favor se alguem puder me dar uma força ficarei muito agradecido. #include <stdio.h> #include <stdlib.h> float media (void); int matriz(void); void mdc(void); void consoantes(void); main(){ char ch,op; do{ system("cls"); printf("\n \t\t ---------------------------------------------"); printf("\n\t\t| *** PROVA FINAL DE LINGUAGEM C *** |"); printf("\n \t\t ---------------------------------------------\n\n"); printf("\n\t\t\t..:: MENU ::..\n\n"); printf("\n\t\t (1)funcao media"); printf("\n\t\t (2)funcao matriz"); printf("\n\t\t (3)funcao mdc"); printf("\n\t\t (4)funcao consoantes"); printf("\n\t\t (5)Sair"); printf("\n\n\n\t\t OP:"); op = getche(); system("cls"); switch(op){ case'1': media(); break; case'2': matriz(); break; case'3': mdc(); break; case'4': consoantes(); break; case'5': break; default: printf("\t< ERRO >: Opcao invalida.");getch(); } }while(op!='5'); } float media() { int i; float n[5]; char ch; do{ system("cls"); for(i=1;i<6;i++){ printf("Informe a nota: "); scanf("%f",&n[i]);} for(i=1;i<6;i++){ if(n[i]<5.0) printf("Nota:%d = Reprovado\n",i,n[i]); else if((n[i]>=5.0)&&(n[i]<6.0)) printf("Nota:%d = Em Conselho\n",i,n[i]); else printf("Nota:%d = aprovado\n",i,n[i]); } printf("\n\n\t\tPara continuar tecle 's'\n"); printf("\n\n\t\tPara Menu pressione qualquer tecla\n"); ch = getch(); }while(ch=='s'); return 0; } int matriz() { int x,y,matriz[3][3]; for(x=0; x<3; x++) { for(y=0; y<3; y++) { printf("Digite um valor\n"); scanf("%d", &matriz[x][y]); system("cls"); } } printf("Veja o vetor montado\n\n"); essa matriz eu coloquei só pra testar o programa rodando. for(x=0; x<3; x++) { for(y=0; y<3; y++) { printf("\t%d", matriz[x][y]); } printf("\n"); } system("pause"); return 0; } void mdc(){ int a, b, aux; char c; do { printf ("Calculo de MDC ? (s/n) "); do c = getche ( ); while (c != 's' && c != 'n'); if (c == 's') { printf ("\nInforme os numeros:"); scanf("\n%d %d",&a,&B); a = abs(a); b = abs(B); while (b>0) { aux = a; a = b; b = aux % b; } printf ("MDC: %d\n\n", a); } } while (c == 's'); getch(); } void consoantes() { char letras[200]; int i,cons,max; printf("\tdigite a frase\n"); i=0; cons=0; max=0; for (i=0;i<5;i++){ scanf("%c",&letras[i]); max=max+1; } //Esse também não está legal. for (i=0;i<max;i++){ printf(" %c ",letras[i]); } for (i=0;i<5;i++){ if (letras[i]!='a' && letras[i]!='e' && letras[i]!='i' && letras[i]!='o' && letras[i]!='u' && letras[i]!='A' && letras[i]!='E' && letras[i]!='I' && letras[i]!='O' && letras[i]!='U') cons=++cons; } printf("\t A frase tem : %d consoante \n",cons); getch(); } Compartilhar este post Link para o post Compartilhar em outros sites
VictorCacciari 42 Denunciar post Postado Março 1, 2009 Cara, a função dos arrays é bem tranquila, olha: int ar1[12], ar2[12]; //nossos arrays!! int result[12][2], i; for (i=0; i<12; i++) { printf("Digite o termo %d do primeiro array: ", i+1); scanf("%d%*c", &ar1[i]); } for (i=0; i<12; i++) { printf("Digite o termo %d do segundo array: ", i+1); scanf("%d%*c", &ar2[i]); } for (i=0; i<12; i++) { result[i][0] = ar1[i] * 2; result[i][1] = ar2[i] - 5; printf("%d -- %d\n", result[i][0], result[i][1]); } a das consoantes, é um pouco mais complexa, use a função gets(char*) para pegar a frase, por exemplo: char frase[200], vogais[]="AEIOUaeiou", vog; int i, j, consoantes=0; printf("Digite a frase: "); gets(frase); for (i=0; i<strlen(frase); i++) { //aqui nós checamos se é vogal, ou não.... vog=0; for (j=0; j<strlen(vogais); j++) { if (frase[i] == vogais[j]) { vog=1; break; } } //se for vogal, vog=1, caso contrário, vog=0 if (vog==0) consoantes++; } printf("A frase %s tem %d vogais e %d consoantes", frase, strlen(frase)-consoantes, consoantes); Compartilhar este post Link para o post Compartilhar em outros sites
bruvascao 0 Denunciar post Postado Março 2, 2009 Grande Victor,valeu mesmo meu brother http://forum.imasters.com.br/public/style_emoticons/default/worshippy.gif Compartilhar este post Link para o post Compartilhar em outros sites
VictorCacciari 42 Denunciar post Postado Março 2, 2009 Que bom que pude ajudar. Mas pra uma próxima, utilize um titulo coerente! Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Março 2, 2009 boa galera.. + qnd a forma de leitura para pegar a frase eu agora to acostumado a usar o fgets por diversos motivos jah discutidos em outros tópicos aki no fórum, + ta beleza ;D! []s Compartilhar este post Link para o post Compartilhar em outros sites
gRoOvE 0 Denunciar post Postado Março 3, 2009 Tem como deixar o fgets() pegar um número indeterminado de caracteres? Compartilhar este post Link para o post Compartilhar em outros sites
VictorCacciari 42 Denunciar post Postado Março 3, 2009 não, para fazer isso eu utilizaria um loop de fgetc, até o caracter ser '\n' (quebra de linha) ex: char ch; do { ch = fgetc(stdin); } while (ch != '\n'); Compartilhar este post Link para o post Compartilhar em outros sites