Você está na página 1de 8

Exercício 1 -

#include <stdio.h>
#include <stdlib.h>

float *VetorSoma (float *vet1, float *vet2, int tam);


float *VetorDiferenca (float *vet1, float *vet2, int tam);
float *VetorProduto (float *vet1, float *vet2, int tam);
void *MaiorMenor (float *vet1, float *vet2, int tam, float
*maior);
void *SomaProduto (float *vet1, float *vet2, int tam, float
*somaelem);

int main()
{ float *v1, *v2, *soma, *produto, *diferenca, *maior, *somaelem;
int tam, i, opcao;

printf("Qual o tamanho dos vetores? ");


scanf("%d", &tam);

v1 = (float*)malloc(tam * sizeof(float));
v2 = (float*)malloc(tam * sizeof(float));

if(v1==NULL || v2==NULL)
{ printf("\nImpossível alocar memória.\n");
return 1;
}

printf("Lendo vetor 1: \n\n");

for(i=0;i<tam;i++)
{ printf("\n\nElemento [%d]: ", i);
scanf("%f", (v1+i));
}

printf("Lendo vetor 2: \n\n");

for(i=0;i<tam;i++)
{ printf("\n\nElemento [%d]: ", i);
scanf("%f", (v2+i));
}

printf("\n\nImprimindo vetor 1:\n ");

for(i=0;i<tam;i++)
{ printf("\t%f", *(v1+i));
}

printf("\n\nImprimindo vetor 2:\n ");


for(i=0;i<tam;i++)
{ printf("\t%f", *(v2+i));
}

do
{
printf("\n\nMENU: \n\n 1- Vetor Soma\n 2- Vetor Diferença\n 3-
Vetor Produto\n 4- Maior elemento de v1 e menor elemento de v2\n
5- Soma entre os elementos de v1 e produto entre os elementos de
v2\n 6- Sair\n");
scanf("%d", &opcao);
switch(opcao)
{ case 1:
soma = VetorSoma(v1,v2,tam);
printf("\n\nVetor Soma: ");
for(i=0; i<tam; i++)
{
printf("\t %.2f", *(soma+i));
}
printf("\n\n\n");
break;

case 2:
printf("\n\nVetor Diferença: ");
for(i=0; i<tam; i++)
{ diferenca = VetorDiferenca(v1,v2,tam);
printf("\t %f", *(diferenca+i));
}
printf("\n\n\n");
break;

case 3:
printf("\n\nVetor Produto: ");
for(i=0; i<tam; i++)
{ produto = VetorProduto(v1,v2,tam);
printf("\t %f", *(produto+i));
}
printf("\n\n\n");
break;

case 4:
maior = MaiorMenor(v1,v2,tam, maior);
printf("\n\nMaior elemento do vetor v1: %f", *maior);
printf("\n\n\n");
break;

case 5:
somaelem = SomaProduto(v1,v2,tam, somaelem);
printf("\n\nSoma dos elementos do vetor v1 = %f",
*somaelem);
printf("\n\n\n");
break;
case 6:
printf("\n\n FIM.\n\n");
break;

default:
printf("\n\nOpção inválida.\n\n");
}
} while(opcao!=6);

return 6;

free (v1);
free (v2);

float *VetorSoma (float *vet1, float *vet2, int tam)


{ float *soma;
int i;

soma = (float*)malloc(tam * sizeof(float));

for(i=0; i<tam; i++)


*(soma+i) = *(vet1+i) + *(vet2+i);

return soma;
}

float *VetorDiferenca (float *vet1, float *vet2, int tam)


{ float *diferenca;
int i;

diferenca = (float*)malloc(tam * sizeof(float));

for(i=0;i<tam;i++)
*(diferenca+i) = *(vet1+i) - *(vet2+i);

return (diferenca);
}

float *VetorProduto (float *vet1, float *vet2, int tam)


{ float *produto;
int i;

produto = (float*)malloc(tam * sizeof(float));

for(i=0;i<tam;i++)
*(produto+i) = *(vet1+i) * *(vet2+i);
return (produto);
}

void *MaiorMenor (float *vet1, float *vet2, int tam, float *maior)
{ float *menor;
int i;

maior = (float*)malloc(tam * sizeof(float));


maior = (vet1+0);

for(i=0; i<tam; i++)


{ if(*(vet1+(tam-i-1)) > *maior)
{ *maior = *(vet1+(tam-i-1));
}
}

menor = (float*)malloc(tam * sizeof(float));


menor = (vet2+0);

for(i=0; i<tam; i++)


{ if(*(vet2+(tam-i-1)) < *menor)
{ *menor = *(vet1+(tam-i-1));
}
}

return (maior);
}

void *SomaProduto (float *vet1, float *vet2, int tam, float


*somaelem)
{ float produtoelem;
int i;

somaelem = (float*)malloc(tam * sizeof(float));


*somaelem=0;

for(i=0; i<tam; i++)


{
*somaelem += *(vet1+i);
}

for(i=0; i<tam; i++)


{ produtoelem = produtoelem * (*(vet2+i));
}

return (somaelem);

}
Exercício 2 -
#include <stdio.h>
#include <stdlib.h>

int *uniao (int *x1, int *x2, int n1, int n2, int *qtd);

int main()
{ int i, x1[]={1,3,5,6,7}, x2[]={1,3,4,6,8}, *x3, tam1, tam2,
tam3, *qtd, resp;

tam1 = 5;
tam2 = 5;
tam3 = tam1+tam2;

// IMPRIMINDO OS VETORES

printf("\n\nVetor 1: ");
for(i=0; i<tam1; i++)
{ printf("\t%d", *(x1+i));
}

printf("\n\n");

printf("\n\nVetor 2: ");
for(i=0; i<tam2; i++)
{ printf("\t%d", *(x2+i));
}

x3 = (int*)malloc(tam3*sizeof(int));

if (x3 == NULL)
{ printf("\n\nImpossível alocar memória.\n\n");
return 0;
}

resp = x3 = *uniao(x1,x2,tam1,tam2,x3);

*qtd = resp;

printf("\n\nVetor união: ");


for(i=0; i<*qtd; i++)
{
printf("\t %d", *(x3+i));
}

printf("\n\n");

int *uniao (int *x1, int *x2, int n1, int n2, int *qtd)
{ int i=0, j=0, *x3, cont1=0, cont2=0, cont3=0, quantidade=0;

x3 = (int*)malloc((n1+n2) * sizeof(int));

if (x3 == NULL)
{ printf("\n\nImpossível alocar memória.\n\n");
return 0;
}

for(i=0; i<(n1); i++)


{ if(*(x1+i)== *(x2+i))
{ *(x3+j) = *(x1+i);
j++;
}
else if(*(x1+i)<*(x2+i))
{ *(x3+j) = *(x1+i);
*(x3+j+1) = *(x2+i);
j=j+2;
}
else if (*(x1+i)>*(x2+i))
{ *(x3+j) = *(x1+i);
*(x3+j+1) = *(x2+i);
j=j+2;
}
}

for(i=0; i<(n1); i++)


{ if(*(x1+i)== *(x2+i))
cont1++;
}

for(i=0; i<(n1); i++)


{ if(*(x1+i)<*(x2+i))
cont2= cont2 +2;
}
for(i=0; i<(n1); i++)
{ if (*(x1+i)>*(x2+i))
cont3 = cont3 +2;
}
quantidade = cont1 + cont2 + cont3;
*qtd= quantidade;

printf("\n\n");

return (qtd);
return (x3);
}
Exercício 3 -
#include <stdio.h>
#include <stdlib.h>

int *interseccao (int *x1, int *x2, int n1, int n2, int *qtd);

int main()
{ int i, x1[]={1,3,5,6,7}, x2[]={1,3,4,6,8}, *x3, tam1, tam2,
tam_max, *qtd, resp;

tam1 = 5;
tam2 = 5;
tam_max = 5;

// IMPRIMINDO OS VETORES

printf("\n\nVetor 1: ");
for(i=0; i<tam1; i++)
{ printf("\t%d", *(x1+i));
}

printf("\n\n");

printf("\n\nVetor 2: ");
for(i=0; i<tam2; i++)
{ printf("\t%d", *(x2+i));
}

x3 = (int*)malloc(tam_max*sizeof(int));
if (x3 == NULL)
{ printf("\n\nImpossível alocar memória.\n\n");
return 0;
}

resp = *x3 = *interseccao(x1,x2,tam1,tam2,x3);


qtd = resp;
printf("%d", resp);
printf("\n\nVetor intersecção: ");
for(i=0; i<qtd; i++)
{ printf("\t%d", *(x3+i));
}

printf("\n\n");

int *interseccao (int *x1, int *x2, int n1, int n2, int *qtd)
{ int i=0, j=0, k=0, *x3, cont=0;

x3 = (int*)malloc((n1+n2) * sizeof(int));
if (x3 == NULL)
{ printf("\n\nImpossível alocar memória.\n\n");
return 0;
}

for (i=0;i<n1;i++)
{ j = 0;
while (j < n2 && *(x1+i) != *(x2+j))
{
j++;
}
if (j < n2)
{
k = 0;
while (k < cont && *(x3+k) != *(x1+i))
{
k++;
}
if (k >= cont)
{ *(x3+cont) = *(x1+i);
cont++;
}
}

qtd = cont;

return (qtd);
return (x3);
}

Você também pode gostar