Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

bruvascao

[Resolvido] Trabalhando com funções

Recommended Posts

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

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

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

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

Tem como deixar o fgets() pegar um número indeterminado de caracteres?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.