Baixe o app para aproveitar ainda mais
Prévia do material em texto
Universidade Federal do Ceará – IUFC Centro de Ciências – CC Departamento de Computação - DC Fundamentos de Programação Exercício: Vetores Objetivos: Introduzir o conceito de vetores. Data da Entrega: 23/07/2020 – 06/08/2020 NOME: _________________________________________________MATRÍCULA: _________ QUESTÃO 1 Para cada um dos problemas a seguir, elabore um algoritmo utilizando Português Estruturado (Portugol) e, em seguida, implemente o algoritmo concebido utilizando a Linguagem C. 1.1. Escreva um programa que armazene em um vetor todos os números inteiros de 200 a 100 (em ordem decrescente). Após isso, o programa deve imprimir todos os valores armazenados. 1.2. Escreva um programa que armazene em um vetor todos os números múltiplos de 5, no intervalo fechado de 1 a 500. Após isso, o programa deve imprimir todos os valores armazenados. 1.3. Escreva um programa que armazene em um vetor o quadrado dos números ímpares no intervalo fechado de 1 a 20. Após isso, o programa deve imprimir todos os valores armazenados. 1.4. Escreva um programa que receba a altura de 10 atletas. Esse programa deve imprimir a altura daqueles atletas que tem altura maior que a média. 1.5. A série de Fibonacci é formada pela seqüência: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ... Escreva um programa que armazene em um vetor os 50 primeiros termos da série de FIBONACCI. Após isso, o programa deve imprimir todos os valores armazenados. 1.6. Implementar um programa para calcular o sen(X). O valor de X deverá ser digitado em graus. O valor do seno de X será calculado pela soma dos 15 primeiros termos da série a seguir: Os termos da série devem ser armazenados em um vetor. 1.7. Em uma cidade do interior, sabe-se que, de janeiro a abril de 1976 (121 dias), não ocorreu temperatura inferior a 15ºC nem superior a 40ºC. As temperaturas verificadas em cada dia estão disponíveis em uma unidade de entrada de dados. Fazer um programa que calcule e imprima: - A menor temperatura ocorrida; - A maior temperatura ocorrida; - A temperatura média; - O número de dias nos quais a temperatura foi inferior à temperatura média. 1.8. Fazer um programa que: a) Leia o valor inteiro de n (n <= 1000) e os n valores de uma variável composta A de valores numéricos, ordenados de forma crescente; b) Determine e imprima, para cada número que se repete no conjunto, a quantidade de vezes em que ele aparece repetido; c) Elimine os elementos repetidos, formando um novo conjunto; d) Imprima o conjunto obtido no item c. 1.9. Dado um conjunto de 100 valores numéricos disponíveis num meio de entrada qualquer, fazer um algoritmo em PORTUGOL para armazená-los numa variável composta B, e calcular e imprimir o valor do somatório dado a seguir: 1.10. Um armazém trabalha com 100 mercadorias diferentes identificadas pelos números inteiros de 1 a 100. O dono do armazém anota a quantidade de cada mercadoria vendida durante o mês. Ele tem uma tabela que indica, para cada mercadoria, o preço de venda. Escreva um programa para calcular o faturamento mensal do armazém. A tabela de preços é fornecida seguida pelos números das mercadorias e as quantidades vendidas. Quando uma mercadoria não tiver nenhuma venda, é informado o valor zero no lugar da quantidade. 1.11. Seja: Escrever um programa que: a) Leia o valor de n, sendo n <= 20; b) Leia os coeficientes ai, onde i = 0, 1, 2 , ..., n; c) Calcule o valor de P para 10 valores lidos para x; d) Imprima o valor de x e o valor de P correspondente. 1.12. Faça um programa que leia um valor N (N <= 20) e os N valores de uma variável composta. Ordene os valores recebidos em forma crescente e imprima a variável composta ordenada. Além disso, o programa deve imprimir, para cada número que se repete no conjunto, a quantidade de vezes em que ele aparece repetido. O programa também deve ler um número k e imprimir, antes e depois da ordenação, o k-ésimo elemento da variável composta. 1.13. Elabore um programa para automatizar as eleições do Centro Acadêmico do curso de Ciência da Computação. Inicialmente, o programa deverá ler os nomes dos N candidatos nas eleições. O programa deve contabilizar os votos da seguinte forma: o usuário deverá digitar o nome do candidato. A eleição deve ser finalizada e o vencedor indicado quando o usuário digitar a palavra “fim”. 1.14. Escreva um programa que leia um conjunto de 50 fichas, cada uma contendo, a altura e o código do sexo de uma pessoa (código = 1 se for masculino e 2 se for feminino). Esses dados devem ser armazenados em vetores. Em seguida, o programa deve inserir o nome das pessoas ordenadas pela altura (em ordem crescente). 1.15. Escreva um programa que leia um conjunto de N valores inteiros, onde N é um número fornecido pelo usuário. Em seguida, o programa deve calcular e imprimir a média, a variância e o desvio padrão dos valores lidos (amostra). 1.16. Deseja-se publicar o número de acertos de cada aluno em uma prova em forma de testes. A prova consta de 30 questões, cada uma com cinco alternativas identificadas por A, B, C, D e E. Para isso são dados: a) o cartão gabarito; b) o número de alunos da turma; c) o cartão de respostas para cada aluno, contendo o seu número e suas respostas. 1.17. Dados dois vetores x e y, ambos com n elementos, determinar o produto escalar desses vetores. 1.18. Faça um programa para resolver o seguinte problema: São dadas as coordenadas reais x e y de um ponto, um número natural n, e as coordenadas reais de n pontos (1 < n < 100). Deseja-se calcular e imprimir sem repetição os raios das circunferências centradas no ponto (x,y) que passam por pelo menos um dos n pontos dados. Exemplo : (x,y) = (1.0, 1.0) ; n = 5 Pontos : (-1.0, 1.2) , (1.5, 2.0) , (0.0, -2.0) , (0.0, 0.5) , (4.0, 2.0) Nesse caso há três circunferências de raios: 1.12, 2.01 e 3.162. Observações: Distância entre os pontos (a,b) e (c,d) é Dois pontos estão na mesma circunferência se estão à mesma distância do centro. 1.19. Dada uma seqüência x1, x2, ..., xk de números inteiros, verifique se existem dois segmentos consecutivos iguais nesta seqüência, isto é, se existem i e m tais que: xi, xi+1,..., xi+m-1 = xi+m, xi+m+1,..., xi+2m-1 Imprima, caso existam, os valores de i e m. Exemplo: Na seqüência 7, 9, 5, 4, 5, 4, 8, 6 existem i=3 e m=2. 1.20. Dada uma seqüência de n números inteiros, determinar um segmento de soma máxima. Exemplo: Na seqüência 5, 2, -2, -7, 3, 14, 10, -3, 9, -6, 4, 1 , a soma do segmento é 33. 1.21. Em uma classe há n alunos, cada um dos quais realizou k provas com pesos distintos. Dados n , k, os pesos das k provas e as notas de cada aluno, calcular a média ponderada das provas para cada aluno e a média aritmética da classe em cada uma das provas. Questões erradas: 11 19 21 = coloquei o peso como inteiro. 1) Escreva um programa que armazene em um vetor todos os números inteiros de 200 a 100 (em ordem decrescente). Após isso, o programa deve imprimir todos os valores armazenados. #include<stdio.h> int main(void) { int vetor [101]; int i ,j = 0; for(i=200;i>=100;i--) { vetor[j]= i; j++; } for(j=0; j<=100; j++) { printf(" %d,", vetor[j] ); } return 0; } 2) Escreva um programa que armazene em um vetor todos os números múltiplos de 5, no intervalo fechado de 1 a 500. Após isso, o programa deve imprimir todos os valores armazenados. #include<stdio.h> int main(void) { int vetor[500]; int i, j=0; for(i=1;i<=500;i++) { if(i%5==0) { vetor[j]=i; j++; } } for(i=0;i<j;i++) { printf("\nMultiplo de 5: %d ", vetor[i]); } return 0; } 3) Escreva um programa que armazene em um vetor o quadrado dos números ímpares no intervalo fechado de 1 a 20. Após isso, o programa deve imprimir todos os valores armazenados. #include<stdio.h> int main(void) { int vetor[20]; int i, j=0; for(i=1;i<=20;i++) { if(i%2!=0) { vetor[j]=i*i; j++;} } for(i=0;i<j;i++) { printf("\nImpares ao quadrado: %d", vetor[i]); } return 0; } 4) Escreva um programa que receba a altura de 10 atletas. Esse programa deve imprimir a altura daqueles atletas que tem altura maior que a média. #include<stdio.h> int main (void) { float vetor[10]; int i; float soma=0,media; for(i=0;i<10;i++) { printf("Digite a altura do atleta:"); scanf("%f",&vetor[i]); soma=soma+vetor[i]; } media=soma/10; printf("Valor da media das alturas: %f",media); for(i=0;i<10;i++) { if(vetor[i]>media) { printf("\nAltura maior do que a media: %f", vetor[i] ); } } return 0; } 5) A série de Fibonacci é formada pela seqüência: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ... Escreva um programa que armazene em um vetor os 50 primeiros termos da série de FIBONACCI. Após isso, o programa deve imprimir todos os valores armazenados. #include<stdio.h> int main (void) { int j=0,soma,a=1,b=1,i; double vetor[50]; soma=a+b; for(i=1;i<=50;i++) { if(i==1) { vetor[j]=a; j++; } if(i==2) { vetor[j]=b; j++; } if(i>2) { vetor[j]=soma; a=b; b=soma; soma=a+b; j++; } } for(j=0;j<=49;j++) { printf("\n%lf",vetor[j]); } return 0; } 6) Implementar um programa para calcular o sen(X). O valor de X deverá ser digitado em graus. O valor do seno de X será calculado pela soma dos 15 primeiros termos da série a seguir: sen(x)= x - x^3/3! + ... Os termos da série devem ser armazenados em um vetor. #include<stdio.h> #include<stdlib.h> #include<math.h> int main(void) { int i; double p, z, soma=0, m, fat=1, x=0, n, y=2, s[15]; printf("Digite o valor de X em graus: "); scanf("%lf", &n); n=(n*3.14)/180; for(i=0;i<15;i++) { for(x;x<y;x++) { if(x==1) { fat=1; } else fat=fat*x; } z=x-1; p=pow(n,z); m=p/fat; y=x+2; if(i%2==0) { soma=soma+m; } else { soma=soma-m; m=m*-1; } s[i]=m; printf("\n%lf", s[i]); } printf("\nO valor do sen e igual a %lf", soma); } 7) Em uma cidade do interior, sabe-se que, de janeiro a abril de 1976 (121 dias), não ocorreu temperatura inferior a 15ºC nem superior a 40ºC. As temperaturas verificadas em cada dia estão disponíveis em uma unidade de entrada de dados. Fazer um programa que calcule e imprima: - A menor temperatura ocorrida; - A maior temperatura ocorrida; - A temperatura média; - O número de dias nos quais a temperatura foi inferior à temperatura média. #include<stdio.h> int main (void) { int dias=0,i; float maior=0,menor=9999,media,soma=0; float vetor[121]; printf("Digite uma temperatura Minima:15 Maxima:40\n"); for(i=0;i<121;i++) { printf("Digite a temperatura:"); scanf("%f",&vetor[i]); if(vetor[i]<15 || vetor[i]>40) { printf("Temperatura invalida."); } else { soma=soma+vetor[i]; if(vetor[i]<menor) { menor=vetor[i]; } if(vetor[i]>maior) { maior=vetor[i]; } } } media=soma/121; printf("\nMedia da temperatura no periodo:%.2f",media); printf("\nMenor temperatura do periodo:%.2f",menor); printf("\nMaior temperatura do periodo:%.2f",maior); for(i=0;i<121;i++) { if(vetor[i]<media) { dias++; } } printf("\nTotal de dias com temp. abaixo da media:%d",dias); return 0; } 8) Fazer um programa que: a) Leia o valor inteiro de n (n <= 1000) e os n valores de uma variável composta A de valores numéricos, ordenados de forma crescente; b) Determine e imprima, para cada número que se repete no conjunto, a quantidade de vezes em que ele aparece repetido; c) Elimine os elementos repetidos, formando um novo conjunto; d) Imprima o conjunto obtido no item c. #include<stdio.h> #include<math.h> #include<stdlib.h> int main (void) { int n; printf("Digite o numero de termos do vetor: "); scanf("%d", &n); if(n>1000 || n<0) { printf("\nNumero de termos invalido"); } else { int vetor[n],i,j,aux; int repetidos[n]; int vezes[n]; int U[n]; int qtde, cont, cont_r=0,cont_u=0; for(i=0;i<n;i++) { printf("Digite o numero:"); scanf("%d",&vetor[i]); } for(i=0;i<n;i++) { for(j=0;j<n-1;j++) { if(vetor[j]>vetor[j+1]) { aux = vetor[j]; vetor[j]=vetor[j+1]; vetor[j+1]=aux; } } } printf("Vetor em ordem crescente:"); for(i=0;i<n;i++) { printf("%d ",vetor[i]); } for (i=0; i<n; i++) { qtde = 1; for (j=0; j<i; j++) { if (i!=j) { if (vetor[i] == vetor[j]) qtde = qtde + 1; } } if (qtde > 1) { cont = 0; while (cont < cont_r && vetor[i]!=repetidos[cont]) { cont = cont + 1; } if (cont == cont_r) { repetidos[cont_r] = vetor[i]; vezes[cont_r] = qtde; cont_r = cont_r + 1; } else vezes[cont] = vezes[cont]+1; } } printf("\nRepetidos: "); for (i=0; i<cont_r; i++) { printf("O numero %d apareceu %d",repetidos[i],vezes[i]); } for(i=0;i<n;i++) { j=0; while(j<cont_u && vetor[i]!=U[j]) { j++; } if(j>=cont_u) { U[cont_u]=vetor[i]; cont_u=cont_u+1; } } printf("\nConjunto sem repeticao: "); for(i=0;i<cont_u;i++) { printf("%d ",U[i]); } return 0; } } 9) Dado um conjunto de 100 valores numéricos disponíveis num meio de entrada qualquer, fazer um algoritmo em PORTUGOL para armazená-los numa variável composta B, e calcular e imprimir o valor do somatório dado a seguir: s= (b1-b100)3 + (b2-b99)3 + … #include<stdio.h> int main(void) { float vetor[100],soma=0,n; int i,a=0,b=99,j; for(i=0;i<99;i++) { printf("Digite o termo:"); scanf("%f",&vetor[i]); } for(j=0;j<50;j++) { n=vetor[a]-vetor[b]; n=n*n*n; soma=soma+n; a++; b--; } printf("Valor da soma:%f",soma); return 0; } 10) Um armazém trabalha com 100 mercadorias diferentes identificadas pelos números inteiros de 1 a 100. O dono do armazém anota a quantidade de cada mercadoria vendida durante o mês. Ele tem uma tabela que indica, para cada mercadoria, o preço de venda. Escreva um programa para calcular o faturamento mensal do armazém. A tabela de preços é fornecida seguida pelos números das mercadorias e as quantidades vendidas. Quando uma mercadoria não tiver nenhuma venda, é informado o valor zero no lugar da quantidade. #include<stdio.h> int main (void) { int i; float quantidade[100],soma=0,preco[100],n; for(i=0;i<100;i++) { printf("Escreva o preco da mercadoria:"); scanf("%f",&preco[i]); printf("Escreva a quantidade do produto vendida:"); scanf("%f",&quantidade[i]); } for(i=0;i<100;i++) { n=preco[i]*quantidade[i]; soma=soma+n; } printf("Total vendidio de todos os produtos:%f",soma); return 0;} 11) Seja: P = An X^n + An-1 X^n-1 + ... Escrever um programa que: a) Leia o valor de n, sendo n <= 20; b) Leia os coeficientes ai, onde i = 0, 1, 2 , ..., n; c) Calcule o valor de P para 10 valores lidos para x; d) Imprima o valor de x e o valor de P correspondente. #include<stdio.h> #include<math.h> #include<stdlib.h> int main (void) { int n; printf("Digite n: "); scanf("%d", &n); if (n>20) { printf("\nN invalido"); } else { int a[n], i; for(i=0;i<n;i++) { printf("\nDigite o %d-esimo termo: ", i+1); scanf("%d", &a[i]); } int k[n], x, z, P, j; for(j=0;j<10;j++) { P=0; printf("\nDigite o valor %d-esimo valor de x: ", j+1); scanf("%d",&x); for(i=0;i<n;i++) { z=pow(x,i); k[i]=z; P=P+a[i]*k[i]; } printf("\nPara x igual a %d, temos P igual a %d", x, P); } } } 12) Faça um programa que leia um valor N (N <= 20) e os N valores de uma variável composta. Ordene os valores recebidos em forma crescente e imprima a variável composta ordenada. Além disso, o programa deve imprimir, para cada número que se repete no conjunto, a quantidade de vezes em que ele aparece repetido. O programa também deve ler um número k e imprimir, antes e depois da ordenação, o k-ésimo elemento da variável composta. #include<stdio.h> #include<math.h> #include<stdlib.h> int main (void) { int n; printf("Digite o numero de termos do vetor: "); scanf("%d", &n); if(n>1000 || n<0) { printf("\nNumero de termos invalido"); } else { int vetor[n],i,j,aux; int repetidos[n]; int vezes[n]; int U[n]; int qtde, cont, cont_r=0,cont_u=0, k; printf("Digite o valor de k para o k-esimo termo apresentado: "); scanf("%d", &k); for(i=0;i<n;i++) { printf("Digite o numero:"); scanf("%d",&vetor[i]); } printf("\nO %d-esimo termo antes da ordenacao: %d", k, vetor[k-1]); for(i=0;i<n;i++) { for(j=0;j<n-1;j++) { if(vetor[j]>vetor[j+1]) { aux= vetor[j]; vetor[j]=vetor[j+1]; vetor[j+1]=aux; } } } printf("\nVetor em ordem crescente:"); for(i=0;i<n;i++) { printf("%d ",vetor[i]); } printf("\nO %d-esimo termo depois da ordenacao: %d", k, vetor[k-1]); for (i=0; i<n; i++) { qtde = 1; for (j=0; j<i; j++) { if (i!=j) { if (vetor[i] == vetor[j]) qtde = qtde + 1; } } if (qtde > 1) { cont = 0; while (cont < cont_r && vetor[i]!=repetidos[cont]) { cont = cont + 1; } if (cont == cont_r) { repetidos[cont_r] = vetor[i]; vezes[cont_r] = qtde; cont_r = cont_r + 1; } else vezes[cont] = vezes[cont]+1; } } printf("\nRepetidos: "); for (i=0; i<cont_r; i++) { printf("O numero %d apareceu %d",repetidos[i],vezes[i]); } for(i=0;i<n;i++) { j=0; while(j<cont_u && vetor[i]!=U[j]) { j++; } if(j>=cont_u) { U[cont_u]=vetor[i]; cont_u=cont_u+1; } } printf("\nConjunto sem repeticao: "); for(i=0;i<cont_u;i++) { printf("%d ",U[i]); } return 0; } } 13) Elabore um programa para automatizar as eleições do Centro Acadêmico do curso de Ciência da Computação. Inicialmente, o programa deverá ler os nomes dos N candidatos nas eleições. O programa deve contabilizar os votos da seguinte forma: o usuário deverá digitar o nome do candidato. A eleição deve ser finalizada e o vencedor indicado quando o usuário digitar a palavra “fim”. #include<stdio.h> #include<string.h> int main(void) { char candidato[5][10], voto[10]; int i, j, cont[5], v=0; for(i=0;i<5;i++) { printf("Digite o nome do %d candidato: ", i+1); scanf("%s", &candidato[i]); cont[i]=0; } while(1) { printf("\nDigite o nome do candidato em que voce vai votar: "); scanf("%s", &voto); if(strcmp(voto,"fim")==0) { break; } else { for(i=0;i<5;i++) { if(strcmp(voto, candidato[i])==0) { cont[i]=cont[i]+1; } } } for(i=0;i<5;i++) { for(j=0;j<5;j++) { if(cont[j]>cont[i]) { v=j; } } } } printf("\nO vencedor e o candidato %s", candidato[v]); return 0; } 14) Escreva um programa que leia um conjunto de 50 fichas, cada uma contendo, a altura e o código do sexo de uma pessoa (código = 1 se for masculino e 2 se for feminino). Esses dados devem ser armazenados em vetores. Em seguida, o programa deve inserir o nome das pessoas ordenadas pela altura (em ordem crescente). #include<stdio.h> #include<string.h> int main (void) { char nome [50][20],auxiliarnome[20]; float vet[50],auxiliar=0; int sexo[50],auxiliarsexo,i; int j; for(i=0;i<50;i++) { printf("Digite o nome da pessoa %d pessoa:",i+1); scanf("%s",nome[i]); printf("Digite a altura da pessoa %d pessoa:",i+1); scanf("%f",&vet[i]); printf("Digite o sexo da pessoa, 1.Homem 2.Mulher.\n"); scanf("%d",&sexo[i]); } for(i=0;i<50;i++) { for(j=i+1;j<50;j++) { if(vet[i]>vet[j]) { auxiliar=vet[i]; vet[i]=vet[j]; vet[j]=auxiliar; strcpy(auxiliarnome,nome[i]); strcpy(nome[i],nome[j]); strcpy(nome[j],auxiliarnome); auxiliarsexo=sexo[i]; sexo[i]=sexo[j]; sexo[j]=auxiliarsexo; } } } for(i=0;i<50;i++) { printf("%s",nome[i]); printf("\naltura: %f,",vet[i]); if(sexo[i]==1) { printf("masculino.\n"); } if(sexo[i]==2) { printf("feminino.\n"); } } return 0; } 15) Escreva um programa que leia um conjunto de N valores inteiros, onde N é um número fornecido pelo usuário. Em seguida, o programa deve calcular e imprimir a média, a variância e o desvio padrão dos valores lidos (amostra). #include<stdio.h> #include<math.h> int main(void) { float vetor[99999],soma=0,media,soma2=0,a,variancia,desvio,n; int i; printf("Digite a quantidade de termos:"); scanf("%f",&n); for(i=0;i<n;i++) { printf("Digite o valor:"); scanf("%f",&vetor[i]); soma=soma+vetor[i]; } media=soma/n; printf("Media dos valores:%f",media); for(i=0;i<n;i++) { a=(vetor[i] - media); a=a*a; soma2=soma2+a; } variancia=soma2/(n-1); printf("\nValor da variancia dos termos:%f",variancia); desvio=sqrt(variancia); printf("\nValor do desvio padrao dos termos:%f",desvio); return 0; } 16) Deseja-se publicar o número de acertos de cada aluno em uma prova em forma de testes. A prova consta de 30 questões, cada uma com cinco alternativas identificadas por A, B, C, D e E. Para isso são dados: a) o cartão gabarito; b) o número de alunos da turma; c) o cartão de respostas para cada aluno, contendo o seu número e suas respostas. #include <stdio.h> #include <conio.h> int main() { int q,j,alu,acertos; char gab[30],resp[30]; printf("Digite a quantidade de alunos que realizou a prova: "); scanf("%d",&q); printf("Digite o gabarito da prova em sequencia: "); for (j =0;j<30;j++) scanf("%c",&gab[j]); for (alu=1;alu<=q;alu++) { acertos=0; printf("Digite as respostas do aluno em sequencia %d: ", alu); for (j=0;j<30;j++) { scanf(" %c", &resp[j]); if (resp[j]==gab[j]) acertos=acertos+1; } printf("O aluno %d fez %d acertos\n", alu, acertos); } getch(); } 17) Dados dois vetores x e y, ambos com n elementos, determinar o produto escalar desses vetores. #include <stdio.h> #include <conio.h> #define MAX 10 int main() { int j,n,i; float prod,x[MAX],y[MAX]; printf("Digite o tamanho dos vetores:"); scanf("%d",&n); printf("Digite os componentes do vetor x:\n"); for (j=0;j<n;j++) scanf("%f",&x[j]); printf("Digite os componentes do vetor y:\n"); for (j=0;j<n;j++) scanf("%f",&y[j]); prod=0; for (j=0;j<n;j++) prod=prod+x[j]*y[j]; printf("Produto escalar desses vetores: %f\n", prod); getch(); } 18) Faça um programa para resolver o seguinte problema: São dadas as coordenadas reais x e y de um ponto, um número natural n, e as coordenadas reais de n pontos (1 < n < 100). Deseja-se calcular e imprimir sem repetição os raios das circunferências centradas no ponto (x,y) que passam por pelo menos um dos n pontos dados. Exemplo : (x,y) = (1.0, 1.0) ; n = 5 Pontos : (-1.0, 1.2) , (1.5, 2.0) , (0.0, -2.0) , (0.0, 0.5) , (4.0, 2.0) Nesse caso há três circunferências de raios: 1.12, 2.01 e 3.162. Dois pontos estão na mesma circunferência se estão à mesma distância do centro. #include<stdio.h> #include<math.h> int main(void) { float xp,yp; printf("Coordenada x:"); scanf("%f",&xp); printf("Coordenada y:"); scanf("%f",&yp); int n; printf("Valor de n:"); scanf("%d",&n); if(n<1 || n>100) { printf("n deve ser menor do que 100 e maior do que 1."); } float x[n],y[n]; int i; for(i=0;i<n;++i) { printf("Valor de x%d:",i+1); scanf("%f",&x[i]); printf("Valor de y%d:",i+1); scanf("%f",&y[i]); } float raio[n]; for(i=0;i<n;++i) { float dx=pow(xp-x[i],2); float dy=pow(yp-y[i],2); float R=sqrt(dx+dy); raio[i]=R; int j, repetido=0; for(j=0;j<i;++j) { if(R==raio[j]) { repetido=1; } } if(repetido==0) { printf("%f\n",R); } } return 0; } 19) Dada uma seqüência x1, x2, ..., xk de números inteiros, verifique se existem dois segmentos consecutivos iguais nesta seqüência, isto é, se existem i e m tais que: xi, xi+1,..., xi+m-1 = xi+m, xi+m+1,..., xi+2m-1 Imprima, caso existam, os valores de i e m. Exemplo: Na seqüência 7, 9, 5, 4, 5, 4, 8, 6 existem i=3 e m=2. #include<stdio.h> #include<stdlib.h> #include<math.h> int main (void) { int k,i,m,j; printf("Digite o valor de K:"); scanf("%d",&k); int x[k]; printf("Digite a sequencia de k numeros:\n"); for(j=0;j<k;++j) { printf("x%d:",j+1); scanf("%d",&x[j]); } int resposta; for(i=0;i<k;++i) { for(m=1;i+m<k;++m) { resposta=0; for(j=0;i+j<i+m;++j) { if(x[i+j]==x[i+j+m]) { ++resposta; } else {break;} } if(resposta>1) { printf("i:%d\nm:%d\n",i+1,m); } } } return 0; } 20) Dada uma seqüência de n números inteiros, determinar um segmento de soma máxima. Exemplo: Na seqüência 5, 2, -2, -7, 3, 14, 10, -3, 9, -6, 4, 1 , a soma do segmento é 33. #include<stdio.h> int main (void) { int n; printf("Digite o valor de n:"); scanf("%d",&n); int seq[n]; printf("Digite a sequencial de n numeros:\n"); int j; for(j=0;j<n;++j) { printf("%d O numero:",j+1); scanf("%d",&seq[j]); } int tam; int inicio; int soma; int tam_ssm=0; int inicio_ssm=0; int soma_ssm=0; for(tam=1;tam<n;++tam) { for(inicio=0;inicio<n;++inicio) { soma=0; for(j=0;j<tam;++j) { if(inicio+j>n-1) {break;} soma=soma+ seq[inicio+j]; } if(soma>soma_ssm) { soma_ssm=soma; inicio_ssm=inicio;tam_ssm=tam; } } } for(j=0;j<tam_ssm;++j) { printf("%d,",seq[inicio_ssm+j]); } printf("\nSoma do segmento de soma maxima: %d", soma_ssm); return 0; } 21) Em uma classe há n alunos, cada um dos quais realizou k provas com pesos distintos. Dados n , k, os pesos das k provas e as notas de cada aluno, calcular a média ponderada das provas para cada aluno e a média aritmética da classe em cada uma das provas. #include<stdio.h> #include<stdlib.h> int main (void) { int n,k; printf("Digite a quantidade de alunos:"); scanf("%d",&n); printf("Digite a quantidade de provas:"); scanf("%d",&k); int peso[k]; int i; for(i=0;i<k;++i) { printf("Digite o peso da prova %d:",i+1); scanf("%d",&peso[i]); } float notas[n][k]; int j; for(i=0;i<n;++i) { printf("Aluno %d:\n",i+1); for(j=0;j<k;++j) { printf("Digite:"); scanf("%f",¬as[i][j]); } } int soma_pesos=0; for(i=0;i<k;++i) { soma_pesos=soma_pesos + peso[i]; } for(i=0;i<n;++i) { printf("Media ponderada do aluno %d:",i+1); float media_ponderada=0; float soma_ponderada=0; for(j=0;j<k;++j) { soma_ponderada=soma_ponderada+ (notas[i][j]*peso[j]); media_ponderada=soma_ponderada/soma_pesos; } printf("%f\n",media_ponderada); } for(i=0;i<k;++i) { printf("Media da prova %d",i+1); float media_prova=0; float soma_notas=0; for(j=0;j<n;++j) { soma_notas=soma_notas+notas[j][i]; media_prova=soma_notas/n; } printf("%f\n",media_prova); } return 0; }
Compartilhar