Solucaoestr: mudanças entre as edições

De IFSC
Ir para navegação Ir para pesquisar
imported>Fargoud
imported>Fargoud
 
(Uma revisão intermediária pelo mesmo usuário não está sendo mostrada)
Linha 55: Linha 55:
  float y;
  float y;
  };
  };
  struct tipo_polar {
  struct tipo_polar {
  float mod;
  float mod;
  float ang;
  float ang;
  };
  };
  /*struct tipo_ret somaret(struct tipo_ret);
 
  struct tipo_ret somaret(struct tipo_ret);
  struct tipo_ret somaret(struct tipo_ret, struct tipo_ret);
  struct tipo_polar multpol(struct tipo_polar);
  struct tipo_ret subret(struct tipo_ret, struct tipo_ret);
  struct tipo_polar divpol(struct tipo_polar);*/
  struct tipo_polar multpol(struct tipo_polar, struct tipo_polar);
  struct tipo_polar divpol(struct tipo_polar, struct tipo_polar);


  main()
  main()
Linha 75: Linha 77:
   printf("\n\t2) Operacao de SUBTRACAO com complexos na forma RETANGULAR:");
   printf("\n\t2) Operacao de SUBTRACAO com complexos na forma RETANGULAR:");
   printf("\n\t3) Operacao de MULTIPLICACAO com complexos na forma POLAR:");
   printf("\n\t3) Operacao de MULTIPLICACAO com complexos na forma POLAR:");
   printf("\n\t4) Operacao de MULTIPLICACAO com complexos na forma POLAR:");
   printf("\n\t4) Operacao de DIVISÃO com complexos na forma POLAR:");
   printf("\n>: ");
   printf("\n>: ");
   scanf("%d",&op);
   scanf("%d",&op);
   switch(op)
   switch(op)
   {
   {
       case 1: printf("\n\nEntre com a primeira coordenada x:");
       case 1: printf("\n\nEntre com a primeira coordenada x:");
               scanf("%f",&numret1.x);
               scanf("%f",&numret1.x);
               printf("\nEntre com a primeira coordenada y:");
               printf("\nEntre com a primeira coordenada y:");
Linha 88: Linha 90:
               printf("\nEntre com a segunda coordenada y:");
               printf("\nEntre com a segunda coordenada y:");
               scanf("%f",&numret2.y);
               scanf("%f",&numret2.y);
               numret3.x = numret1.x + numret2.x;
               numret3 = somaret(numret1, numret2);
              numret3.y = numret1.y + numret2.y;
              printf("\n\nResultado: coordenada x = %.2f e coordenada y = %.2f", numret3.x, numret3.y);
               break;
               break;
       case 2: printf("\n\nEntre com a primeira coordenada x:");
       case 2: printf("\n\nEntre com a primeira coordenada x:");
Linha 100: Linha 100:
               printf("\nEntre com a segunda coordenada y:");
               printf("\nEntre com a segunda coordenada y:");
               scanf("%f",&numret2.y);
               scanf("%f",&numret2.y);
               numret3.x = numret1.x - numret2.x;
               numret3 = subret(numret1, numret2);
              numret3.y = numret1.y - numret2.y;
              printf("\n\nResultado: coordenada x = %.2f e coordenada y = %.2f", numret3.x, numret3.y);
               break;
               break;
       case 3:printf("\n\nEntre com a primeira coordenada de modulo:");
       case 3:printf("\n\nEntre com a primeira coordenada de modulo:");
Linha 112: Linha 110:
               printf("\nEntre com a segunda coordenada de angulo:");
               printf("\nEntre com a segunda coordenada de angulo:");
               scanf("%f",&numpol2.ang);
               scanf("%f",&numpol2.ang);
               numpol3.mod = numpol1.mod * numpol2.mod;
               numpol3=multpol(numpol1, numpol2);
              numpol3.ang = numpol1.ang + numpol2.ang;
              printf("\n\nResultado: modulo = %.2f e angulo = %.2f", numpol3.mod, numpol3.ang);
               break;
               break;
       case 4:printf("\n\nEntre com a primeira coordenada de modulo:");
       case 4:printf("\n\nEntre com a primeira coordenada de modulo:");
Linha 124: Linha 120:
               printf("\nEntre com a segunda coordenada de angulo:");
               printf("\nEntre com a segunda coordenada de angulo:");
               scanf("%f",&numpol2.ang);
               scanf("%f",&numpol2.ang);
              numpol3.mod = numpol1.mod / numpol2.mod;
              numpol3 = divpol(numpol1, numpol2);
              numpol3.ang = numpol1.ang - numpol2.ang;
              printf("\n\nResultado: modulo = %.2f e angulo = %.2f", numpol3.mod, numpol3.ang);
               break;
               break;
       default: printf("\n\nOperacao inexistente.");
       default: printf("\n\nOperacao inexistente.");
   }
   }
  }
  }
struct tipo_ret somaret(struct tipo_ret num1, struct tipo_ret num2)
{ struct tipo_ret num3;
              num3.x = num1.x + num2.x;
              num3.y = num1.y + num2.y;
              printf("\n\nResultado: coordenada x = %.2f e coordenada y = %.2f", num3.x, num3.y);
  return num3;
};
struct tipo_ret subret(struct tipo_ret num1, struct tipo_ret num2)
{  struct tipo_ret num3;
              num3.x = num1.x - num2.x;
              num3.y = num1.y - num2.y;
              printf("\n\nResultado: coordenada x = %.2f e coordenada y = %.2f", num3.x, num3.y);
  return num3;
};
struct tipo_polar multpol(struct tipo_polar num1, struct tipo_polar num2)
{ struct tipo_polar num3;
    num3.mod = num1.mod * num2.mod;
    num3.ang = num1.ang + num2.ang;
    printf("\n\nResultado: modulo = %.2f e angulo = %.2f", num3.mod, num3.ang);
    return num3;
};
struct tipo_polar divpol(struct tipo_polar num1, struct tipo_polar num2)
{ struct tipo_polar num3;
    num3.mod = num1.mod / num2.mod;
    num3.ang = num1.ang - num2.ang;
    printf("\n\nResultado: modulo = %.2f e angulo = %.2f", num3.mod, num3.ang);
    return num3;
};

Edição atual tal como às 10h06min de 21 de setembro de 2016

Exercício 1:

Programa para ler nomes e 3 notas de alunos, e imprimir medias

#include <stdio.h>
#include <stdlib.h>
#define NNOTAS 3 //numero de notas no bimestre
#define NALUNOS 4 //numero de alunos na turma
struct Aluno {
   char Nome[20];
   int ID;
   float Notas[NNOTAS];
} Turma[NALUNOS];
int main()
{ int i, j;
 float media=0;
 printf("\nLendo as notas dos alunos: \n");
 for(i=0;i<NALUNOS;i++)
 {
     printf("\nEntre com o nome do %do. aluno: ", i+1);
     scanf("%s",Turma[i].Nome);
     for(j=0;j<NNOTAS;j++)
     {
       printf("Entre com a %da. nota do aluno %s: \n", j+1,Turma[i].Nome);
       scanf("%f",&Turma[i].Notas[j]);
     }
 }
 printf("\n\nCalculando as medias: ");
 for(i=0;i<NALUNOS;i++)
 {
     printf("\nMEDIA do aluno: %s = ", Turma[i].Nome);
     media = 0;
     for(j=0;j<NNOTAS;j++)
        media += Turma[i].Notas[j];
     printf(" %.2f \n",media/NNOTAS)  ;
 }
   return 0;
}

Exercício 2:

Programa que realiza operações aritméticas sobre números complexos

#include <stdio.h>
#include <math.h>
struct tipo_ret {
	float x;
	float y;
};
struct tipo_polar {
	float mod;
	float ang;
};
struct tipo_ret somaret(struct tipo_ret, struct tipo_ret);
struct tipo_ret subret(struct tipo_ret, struct tipo_ret);
struct tipo_polar multpol(struct tipo_polar, struct tipo_polar);
struct tipo_polar divpol(struct tipo_polar, struct tipo_polar);
main()
{
 struct tipo_ret numret1, numret2, numret3;
 struct tipo_polar numpol1, numpol2, numpol3;
 int op;
 printf("\nPROGRAMA DE ARITMETICA COM COMPLEXOS: \n\n");
 printf("Escolha a operacao: ");
 printf("\n\t1) Operacao de SOMA com complexos na forma RETANGULAR:");
 printf("\n\t2) Operacao de SUBTRACAO com complexos na forma RETANGULAR:");
 printf("\n\t3) Operacao de MULTIPLICACAO com complexos na forma POLAR:");
 printf("\n\t4) Operacao de DIVISÃO com complexos na forma POLAR:");
 printf("\n>: ");
 scanf("%d",&op);
 switch(op)
 {
      case 1:  printf("\n\nEntre com a primeira coordenada x:");
              scanf("%f",&numret1.x);
              printf("\nEntre com a primeira coordenada y:");
              scanf("%f",&numret1.y);
              printf("\n\nEntre com a segunda coordenada x:");
              scanf("%f",&numret2.x);
              printf("\nEntre com a segunda coordenada y:");
              scanf("%f",&numret2.y);
              numret3 = somaret(numret1, numret2);
              break;
      case 2: printf("\n\nEntre com a primeira coordenada x:");
              scanf("%f",&numret1.x);
              printf("\nEntre com a primeira coordenada y:");
              scanf("%f",&numret1.y);
              printf("\n\nEntre com a segunda coordenada x:");
              scanf("%f",&numret2.x);
              printf("\nEntre com a segunda coordenada y:");
              scanf("%f",&numret2.y);
              numret3 = subret(numret1, numret2);
              break;
      case 3:printf("\n\nEntre com a primeira coordenada de modulo:");
              scanf("%f",&numpol1.mod);
              printf("\nEntre com a primeira coordenada de angulo:");
              scanf("%f",&numpol1.ang);
              printf("\n\nEntre com a segunda coordenada de modulo:");
              scanf("%f",&numpol2.mod);
              printf("\nEntre com a segunda coordenada de angulo:");
              scanf("%f",&numpol2.ang);
              numpol3=multpol(numpol1, numpol2);
              break;
      case 4:printf("\n\nEntre com a primeira coordenada de modulo:");
              scanf("%f",&numpol1.mod);
              printf("\nEntre com a primeira coordenada de angulo:");
              scanf("%f",&numpol1.ang);
              printf("\n\nEntre com a segunda coordenada de modulo:");
              scanf("%f",&numpol2.mod);
              printf("\nEntre com a segunda coordenada de angulo:");
              scanf("%f",&numpol2.ang);
             numpol3 = divpol(numpol1, numpol2);
              break;
     default: printf("\n\nOperacao inexistente.");
 }
}
struct tipo_ret somaret(struct tipo_ret num1, struct tipo_ret num2)
{ struct tipo_ret num3;
              num3.x = num1.x + num2.x;
              num3.y = num1.y + num2.y;
              printf("\n\nResultado: coordenada x = %.2f e coordenada y = %.2f", num3.x, num3.y);
 return num3;
};
struct tipo_ret subret(struct tipo_ret num1, struct tipo_ret num2)
{   struct tipo_ret num3;
              num3.x = num1.x - num2.x;
              num3.y = num1.y - num2.y;
             printf("\n\nResultado: coordenada x = %.2f e coordenada y = %.2f", num3.x, num3.y);
  return num3;
};
struct tipo_polar multpol(struct tipo_polar num1, struct tipo_polar num2)
{ struct tipo_polar num3;
   num3.mod = num1.mod * num2.mod;
   num3.ang = num1.ang + num2.ang;
   printf("\n\nResultado: modulo = %.2f e angulo = %.2f", num3.mod, num3.ang);
   return num3;
};
struct tipo_polar divpol(struct tipo_polar num1, struct tipo_polar num2)
{ struct tipo_polar num3;
   num3.mod = num1.mod / num2.mod;
   num3.ang = num1.ang - num2.ang;
   printf("\n\nResultado: modulo = %.2f e angulo = %.2f", num3.mod, num3.ang);
   return num3;
};