Ir para conteúdo

POWERED BY:

Arquivado

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

André Gois

String em C

Recommended Posts

olá, tudo bem!

o terceiro vetor, o vetor de carácter tem que receber um operado, tipo "+,-,*,/", para ser utilizado como operador

só que quando executo o programa da erro!, já tentei de várias formas.

já fiz o mesmo programa utilizando o 3º operador como sendo numero e deu certo, mas fico triste de não ter conseguido com o carácter, se alguém pode me ajuda eu agradeço!

 

#include <stdio.h>
#include <stdlib.h>
/*Faça um algoritmo que receba três vetores: os dois primeiros conterão números
e o terceiro será um vetor  de caracteres preenchido com as quatro operações 
aritméticas básicas. O algoritmo efetuará as operações contidas no terceiro 
vetor com o primeiro vetor como operando1 e o segundo vetor como operando2. 
O resultado deve ser armazenado em um quarto vetor*/
main()
{ 
 float vetR[4],vetA[4],vetB[4];
 char op[1];
 int i;
 for(i=1;i<=4;i++)
 { 
   printf("VetA Na P[%d] ",i);
   scanf("%f",&vetA[i]);                 
 }               
 printf("\n\n");
   for(i=1;i<=4;i++)
 { 
   printf("VetB Na P[%d] ",i);
   scanf("%f",&vetB[i]);                 
 }               
 printf("\n\n");

   printf("Digite A Operação Desejada ");
   scanf("%s",op);                

 if(op=="+")
 { 
      for(i=1;i<=4;i++)
      {
        vetR[i] = (vetA[i] + vetB[i]);
        printf("\n %.2f",vetR[i]);
      }
 }
  else if(op=="-")
 { 
      for(i=1;i<=4;i++)
      {
         vetR[i] = (vetA[i] - vetB[i]);
         printf("\n %.2f",vetR[i]);
      }
 }
   else if(op=="*")
 {  
      for(i=1;i<=4;i++)
      {
         vetR[i] = (vetA[i] * vetB[i]);
         printf("\n %.2f",vetR[i]);
      }
 }
   else if(op=="/")
 {  
     for(i=1;i<=4;i++)
     {
        vetR[i] = (vetA[i] / vetB[i]);
        printf("\n %.2f",vetR[i]);
      }
 }

 printf("\n\n");
 system("pause");  
}


Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo, o terceiro tem que ser o do tipo char e não float você vez outro vetor só com uma posição? ou você que pegar o valor do vetor vetB usando o vetor op?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Os índices dos arrays estão errados. Eles começam do zero e vão até n-1.

 

#include <stdio.h>
#include <stdlib.h>
/*Faça um algoritmo que receba três vetores: os dois primeiros conterão números
e o terceiro será um vetor  de caracteres preenchido com as quatro operações 
aritméticas básicas. O algoritmo efetuará as operações contidas no terceiro 
vetor com o primeiro vetor como operando1 e o segundo vetor como operando2. 
O resultado deve ser armazenado em um quarto vetor*/

float do_op(char operator, float a, float B) {
 float resultado = 0.0F;
 switch(operator) {
case '+':
 	resultado = a + b;
 	break;

case '-':
 	resultado = a - b;
 	break;

case '*':
 	resultado = a * b;
 	break;

case '/':
 	resultado = a / b;
 	break;

default:
 	puts("Operação inválida.");
 }
 return resultado;  
}

main()
{ 
 char operacoes[4] = { '*', '/', '-', '+'};
 float operandos_A[4],operandos_B[4];

 int i;
 for(i = 0; i < 4; i++)
 { 
printf("operandos_A Na P[%d] ",i);
scanf("%f",&operandos_A[i]);         		
 }  

 printf("\n\n");
 for(i = 0; i < 4; i++)
 { 
printf("VetB Na P[%d] ",i);
scanf("%f",&operandos_B[i]);         		
 }       		
 printf("\n\n");

 for (i = 0; i < 4; i++) {
printf("%.2f %c %.2f = %.2f\n", operandos_A[i], operacoes[i], operandos_B[i], do_op(operacoes[i], operandos_A[i], operandos_B[i]));
 }	
 return 0;
}

 

(Compilado com -Wall -Wextra -std=c99. Note que se dividir por zero, o programa imprime "inf".

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.