Sei sulla pagina 1di 61

UNIVERSIDADE FEDERAL DO OESTE DA BAHIA INSTITUTO DE CINCIAS AMBIENTAIS E DESENVOLVIMENTO SUSTENTVEL ENGENHARIA CIVIL

ITAYLANE MALTA SANTOS

LISTA DE EXERCCIOS 02

BARREIRAS-BA JANEIRO DE 2014

ITAYLANE MALTA SANTOS

LISTA DE EXERCCIOS 02
Trabalho realizado como avaliao parcial da disciplina Metodologia de Programao, ministrado pelo Professor Doutor Kennedy Fernandes.

BARREIRAS-BA JANEIRO DE 2014

EXERCCIOS RESOLVIDOS

Questo 1 - Leia um vetor de 12 posies e em seguida ler tambm dois valores X e Y quaisquer correspondentes a duas posies no vetor. Ao final seu programa dever escrever a soma dos valores encontrados nas respectivas posies X e Y.

Explanao da questo: Neste exerccio dever ser criado um programa que leia um vetor de 12 posies. Depois o programa dever ler dois valores (X e Y) entre 1 e 12 (correspondentes ao ndice do vetor digitado). Logo aps, dever ser impresso a soma dos valores correspondentes aos ndices X e Y digitados pelo usurio. Para ler o vetor necessrio um lao de repetio. Lembrando que em linguagem C a posio do vetor comea do nmero zero, ou seja, o primeiro valor de um vetor corresponde posio zero, o segundo valor de um vetor posio 1 e assim sucessivamente. Consequentemente um vetor V[11] possui 12 posies, ou seja, as posies: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11. Neste programa foi includo tambm um lao de repetio condicional para que o programa corrija o usurio caso ele digite valores menores que 0 e maiores que 12 para a posio do vetor, pois caso contrrio o programa no seria executado corretamente j que o vetor possui um nmero limitado de posies. Observaes vlidas para todas as questes: Para fins estticos o usurio no deve perceber que os valores do vetor so guardados inicialmente na posio zero e sim na posio 1, pois ficaria estranho ler um programa que se pede para digitar o valor da posio zero, ento impresso na tela "Digite o valor da posio i+1", por exemplo (sendo i o ndice do vetor). No algoritmo as variveis esto em negrito para facilitar a visualizao das mesmas. E o smbolo (seta contrria) significa que a varivel recebe algo, isto , o que vem aps a mesma.

Algoritmo: Incio Questo1 Real V[11] Inteiro i, X, Y Imprima Digite um vetor de 12 posies Faa i0 at 11, ii+1 Imprima 'Digite o valor da posio', i+1

Leia V[i] Fim faa Imprima 'Digite 2 ndices do vetor digitado, ou seja, dois valores entre 1 e 12' Leia X, Y Faa enquanto (X>12 0u X<0 ou Y>12 ou Y<0) Imprima 'Dado Invlido. Digite novamente' Leia X, Y Fim faa Imprima 'A soma dos valores encontrados nos ndices', X, 'e', Y, '=', V[X-1]+V[Y-1] Fim

Cdigo Linguagem C: #include<stdio.h>/* Biblioteca de entrada e saida de dados*/ #include<stdlib.h>/* Biblioteca de alocao de memria e converses*/

main(){ /*Funo Principal, ou seja, a que executada primeiro*/ float V[11]; /*Declarao de um vetor tipo inteiro*/ /*v[11] um vetor de 12 posies, so elas: 0,1,2,3,4,5,6,7,8,9,10,11*/ int i, X,Y; /*Declarao de variveis tipo real*/ printf("Digite um vetor de 12 posicoes\n\n"); /* 'printf' - Funo padro para exibir mensagens */ for(i=0;i<=11; i++){ /*Estrutura de repetio para a leitura de um vetor de 12 posies*/ printf("Digite o valor da posicao %d ", i+1); scanf("%f",&V[i]); /*'scanf' - Funo padro para entrada de dados, tipo: '%f' - Real */ } printf("Digite 2 ndices do vetor digitado, ou seja, 2 valores entre 1 e 12 "); scanf("%d%d", &X, &Y); /*'scanf'' - Funo padro para entrada de dados, tipo: '%d' - Inteiro */ while(X>12|| X<0 || Y>12 || Y<0){ /*Estrutura de repetio para corrigir o usurio caso digite um ndice que no exista no vetor*/ printf("Dado Invalido. Digite novamente "); scanf("%d%d", &X,&Y);

} printf("\nA soma dos valores encontrados nos indices %d e %d = %f\n\n", X,Y,V[X-1]+V[Y-1]); system("pause"); /*comando utilizado para pausar a tela*/ }

Resultados: Como esperado, o programa l um vetor de 12 posies e imprime o valor da soma dos valores correspondentes aos ndices X e Y digitados pelo usurio. Questo 2 - Declare um vetor de 10 posies e o preencha com os 10 primeiros nmeros impares e o escreva.

Explanao da questo: para resolver essa questo primeiramente foi declarado um vetor de 10 posies. A estratgia utilizada para o vetor receber os nmeros 10 primeiros nmeros mpares foi a utilizao de um nmero auxiliar j( de valor inicial igual a 1), que est dentro de um lao de repetio de 0 9 com incremente de 1 cada repetio. Dentro desse lao o vetor V[i] recebe j que cada repetio recebe um incremento de 2. Visto que, da matemtica: a soma de um nmero mpar com um nmero par um nmero mpar. O acrscimo de 2 justamente para obter os 10 primeiros nmeros mpares ordenadamente.

Algoritmo: Incio Questo2 Inteiro i, j, V[10] j=1 Faa i0 at 9, ii+1 V[i]j jj+2 Fim faa Imprima 'Vetor dos 10 primeiros nmeros impares' Faa i1 at 9, ii+1 Imprima V[,i,]=,V[i] Fim faa Fim

Cdigo Linguagem C: #include<stdio.h>/* Biblioteca de entrada e saida de dados*/ #include<stdlib.h>/* Biblioteca de alocao de memria e converses*/

main(){ /*Funo Principal, ou seja, a que executada primeiro*/ int i, j=1, V[10]; /*Declarao de variveis, tipo inteiro*/ for(i=0;i<=9;i++){ V[i]=j; j=j+2; } printf("Vetor dos 10 primeiros numeros impares\n\n");/* 'printf' - Funo padro para exibir mensagens */ for(i=0; i<=9; i++){ /*Estrutura de repetio utilizada para imprimir o vetor*/ printf("V[%d]=%d\n", i+1, V[i]); } system("pause");/*comando utilizado para pausar a tela*/ }

Resultados: O programa imprime os 10 primeiros nmeros mpares.

Questo 3 - Leia um vetor de 16 posies e troque os 8 primeiros valores pelos 8 ltimos e vice-e-versa. Escreva ao final o vetor obtido.

Explanao da questo: Nessa questo dever ser lido um vetor de 16 posies e depois dever ser feito uma troca dos oito ltimos valores pelos oito primeiros e viceversa. A lgica utilizada nessa questo a utilizao de um vetor auxiliar para armazenar os oito primeiros valores e fazer as oito primeiras posies do vetor principal receber os oito ltimos valores, por ltimo deve-se passar os oito primeiros valores do vetor principal que est armazenado no vetor auxiliar para as oito ltimas posies.

Algoritmo: Incio Questo3 Inteiro v[16], k, aux[16], i Imprima Preencha o vetor

Faa k0 at 15, kk+1 Imprima Digite v[,i+1,] Leia v[k] Fim faa i8 Faa k0 at 7, kk+1++ aux[k] v[k] v[k] v[i] v[i] aux[k] ii+1

Fim faa Imprima Vetor resultante Faa k0 at 15, kk+1 Imprima v[, k+1,]=, v[k] Fim faa Fim

Cdigo Linguagem C: #include<stdio.h>/* Biblioteca de entrada e sada de dados*/ #include<stdlib.h>/* Biblioteca de alocao de memria e converses*/

int main(){ /*Funo principal, tipo: Inteiro, ou seja, retorna um valor inteiro*/ int v[16], k, aux[16], i; /*Declarao de variveis, tipo inteiro*/ printf("Preencha o vetor\n\n"); for(k=0;k<=15;k++){ /*Estrutura de repetio para a leitura de um vetor de 16 posies*/ printf("Digite v[%d] mensagens */ scanf("%d",&v[k]);/*'scanf' - Funo padro para entrada de dados, tipo: '%d' - Inteiro */ } i=8; ", k+1);/* 'printf' - Funo padro para exibir

for(k=0;k<=7;k++){

aux[k]=v[k]; v[k]=v[i]; v[i]=aux[k]; i++; /*Incremento*/

} printf("Vetor resultante\n\n"); for(k=0;k<=15;k++){ /*lao de repetio usado para a impresso do vetor*/ printf("v[%d]=%d\n", k+1, v[k]); } system("pause");/*comando utilizado para pausar a tela*/ return(0);/*retorno da funo principal*/ }

Resultados: O programa trocar os oito primeiros valores do vetor digitado pelos oito ltimos e vice-versa.

Questo4 - Leia um vetor de 20 posies e em seguida um valor X qualquer. Seu programa dever fazer uma busca do valor de X no vetor lido e informar a posio em que foi encontrado ou se no foi encontrado.

Explanao da questo: Nessa questo dever ser lido um vetor de 20 posies e um valor X. Logo aps o programa dever fazer uma busca do valor X no vetor. Para isso foi utilizado um lao de repetio que vai de 0 19 e dentro do lao uma estrutura condicional que ao percorrer todo o vetor ir testar se o valor X digitado igual a algum valor dentro do vetor, se for verdade o programa dever imprimir a posio do vetor, seno o programa ir exibir uma mensagem de que o valor X no foi encontrado.

Algoritmo: Inteiro i, p p 0

Real A[20], x Imprima Preencha o vetor Faa i0 at 19, ii+1 Imprima Digite o vetor A[, i+1, ] Leia A[i] Fim faa Imprima Digite o valor X Leia x Faa i0 at 19, ii+1 Se (x=A[i]) Imprima O valor x pertence ao vetor e sua posio =, i+1 pp+1 Fim se

Fim faa Se(p=0) Imprima O valor x no pertence ao vetor, p

Fim se

Fim

Cdigo Linguagem C: #include<stdio.h>/* Biblioteca de entrada e sada de dados*/ #include<stdlib.h>/* Biblioteca de alocao de memria e converses*/

int main(){ /*Funo principal, tipo: Inteiro, ou seja, retorna um valor inteiro*/ int i, p=0; /*Declarao de variveis, tipo inteiro*/ float A[20], x; /*Declarao de variveis, tipo real*/ printf("Preencha o vetor\n\n"); for(i=0;i<=19;i++){ /*Estrutura de repetio para a leitura de um vetor de 20 posies*/

printf("Digite o vetor A[%d] ", i+1); /* 'printf' - Funo padro para exibir mensagens */ scanf("%f", &A[i]); /*'scanf'-Funo padro para entrada de dados, tipo: '%f' - Real */ } printf("\n\nDigite o valor X\n"); scanf("%f", &x);

for(i=0;i<=19;i++){ if(x==A[i]){ printf("O valor x pertence ao vetor e sua posicao e= %d\n", i+1); p=p+1; }

} if(p==0){ printf("\n\nO valor x nao pertence ao vetor\n", p);

} system("pause");/*comando utilizado para pausar a tela*/ return(0);/*retorno da funo principal*/

} Resultados: Aps o usurio digitar o vetor e o valor X, o programa ir percorrer todo o vetor e testar se o valor X existe no vetor. Caso exista, o programa ir imprimir em qual posio se encontra esse valor, seno ir imprimir a mensagem de que aquele valor no foi encontrado.

Questo 5 - Leia um vetor de 40 posies. Contar e escrever quantos valores pares ele possui. Explanao da questo: Nessa questo dever ser lido um vetor de 40 posies e quantificar quantos valores desse vetor so pares. Para isso utiliza-se um conceito da matemtica que diz que: se o resto da diviso de um inteiro por dois for igual a zero esse nmero par. Ento dever ser feito um lao de repetio e dentro desse lao utiliza-se

uma estrutura condicional para testar se os valores so pares. Caso o valor seja par deve ser adicionado um incremento de uma unidade varivel q (de valor inicial igual a zero) que corresponde quantidade de nmeros pares.

Algoritmo: Incio Questo5 Inteiro i, q, v[40] q0 Imprima Preencha o vetor Faa i0 at 39, ii+1 Imprima Digite o valor de v[,i+1, ] Leia v[i] Fim faa Faa i0 at 39, ii+1

Se(mod(v[i],2)=0) qq+1 Fim se Fim faa Imprima O vetor possui, q, valores pares

Fim

Cdigo Linguagem C: #include<stdio.h>/* Biblioteca de entrada e saida de dados*/ #include<stdlib.h>/* Biblioteca de alocao de memria e converses*/

main(){/*Funo Principal, ou seja, a que executada primeiro*/ int i, q=0, v[40]; /*Declarao de variveis, tipo inteiro*/ printf("Preencha o vetor\n\n"); for(i=0; i<=39;i++){ /*Estrutura de repetio para a leitura de um vetor de 40 posies*/ printf("Digite o valor de v[%d] ", i+1); /* 'printf' - Funo padro para exibir mensagens */

scanf("%d",&v[i]); tipo: '%d' - Inteiro */ } for(i=0;i<=39;i++){

/*'scanf' - Funo padro para entrada de dados,

if((v[i])%2==0){ q++;/*Incremento*/ } } printf("O vetor possui %d valores pares\n\n", q); system("pause");/*comando utilizado para pausar a tela*/

} Resultados: O programa ir ler um vetor e imprimir a quantidade de nmeros pares encontradas nesse vetor.

Questo 6 - Leia um vetor de 40 posies e atribua valor 0 para todos os elementos que possurem valores negativos.

Explanao da questo: Nessa questo dever ser lido um vetor de 40 posies. Depois dever ser feita uma busca de valores negativos nesse vetor. Para isso dever ser usado um lao de repetio e uma estrutura condicional para percorrer todo o vetor e testar se os valores so ou no negativos. Se o valor for negativo dever ser atribudo o valor zero essa posio do vetor.

Algoritmo: Incio Questo6

Real v[40] Inteiro i Imprima Preencha o vetor Faa i0 at 39, ii+1 Imprima Digite o valor de v[, i+1, ] Leia v[i]

Fim faa Faa i0 at 39, ii+1 Se (v[i]<0) v[i] 0 Fim se Fim faa Imprima Vetor Resultante Faa i0 at 39, ii+1 Imprima v[, i+1, ]=,v[i] Fim faa Fim

Cdigo Linguagem C: #include<stdio.h>/* Biblioteca de entrada e saida de dados*/ #include<stdlib.h>/* Biblioteca de alocao de memria e converses*/

main(){ /*Funo Principal, ou seja, a que executada primeiro*/ float v[40]; /*Declarao de variveis, tipo real*/ int i; /*Declarao de variveis, tipo inteiro*/ printf("Preencha o vetor\n\n"); for(i=0;i<=39;i++){ /*Estrutura de repetio para a leitura de um vetor de 40 posies*/ printf("Digite o valor de v[%d] ", i+1); /* 'printf' - Funo padro para exibir mensagens */ scanf("%f", &v[i]); /*'scanf'-Funo padro para entrada de dados, tipo: '%f' - Real */ } for(i=0;i<=39;i++){ if(v[i]<0){ v[i]=0; } } printf("Vetor Resultante\n\n"); for(i=0;i<=39;i++){ /*lao de repetio usado para a impresso do vetor*/

printf("v[%d]=%f\n",i+1,v[i]); } printf("\n\n"); system("pause");/*comando utilizado para pausar a tela*/ }

Resultados: Aps digitar o vetor de 40 posies, o programa ir substituir os valores negativos desse vetor por zero e imprimir o vetor resultante.

Questo7 - Leia dois vetores de 20 posies e calcule um outro vetor contendo, nas posies pares os valores do primeiro e nas posies impares os valores do segundo.

Explanao da questo: Nessa questo devero ser lidos dois vetores de vinte posies e dever ser criado outro vetor partir desses. Fazendo as posies pares do novo vetor receber os valores correspondentes das posies pares do primeiro vetor e as posies mpares do novo vetor os valores correspondentes as posies mpares do segundo vetor.

Algoritmo: Incio Questo7 Real a[20], b[20], c[20] Inteiro i, j Imprima Preencha o vetor Faa i0 at 1, ii+1 Imprima Digite o valor de a[,i+1, ] Leia a[i] Fim faa Imprima Preencha o vetor b Faa i0 at 19, ii+1 Imprima Digite o valor de b[, i+1, ] Leia b[i] Fim faa j0

Faa i1 at 10, ii+1 c[j] b[j] c[i*2-1] a[i*2-1] jj+2

Fim faa Imprima Vetor Resultante Faa i0 at 19, ii+1 Imprima c[, i+1, ]=, c[i] Fim faa Fim

Cdigo Linguagem C: #include<stdio.h>/* Biblioteca de entrada e sada de dados*/ #include<stdlib.h>/* Biblioteca de alocao de memria e converses*/

main(){ /*Funo Principal, ou seja, a que executada primeiro*/ float a[20], b[20], c[20]; /*Declarao de variveis, tipo real*/ int i, j; /*Declarao de variveis, tipo inteiro*/ printf("Preencha o vetor a\n\n"); for(i=0; i<=19;i++){ /*Estrutura de repetio para a leitura de um vetor de 20 posies*/ printf("Digite o valor de a[%d] ", i+1); /* 'printf' - Funo padro para exibir mensagens */ scanf("%f",&a[i]); /*'scanf' - Funo padro para entrada de dados, tipo: '%f' - Real */ } printf("\n\n"); printf("Preencha o vetor b\n\n"); for(i=0;i<=19;i++){ printf("Digite o valor de b[%d] ", i+1); scanf("%f", &b[i]);

} j=0; for(i=1;i<=10;i++){

c[j]=b[j]; c[i*2-1]=a[i*2-1]; j=j+2;

} printf("\n\n"); printf("Vetor Resultante=\n\n"); for(i=0;i<=19;i++){ /*lao de repetio usado para a impresso do vetor*/ printf("c[%d]=%.1f\n", i+1, c[i]); } system("pause"); /*comando utilizado para pausar a tela*/ }

Resultados: O programa dever imprimir o vetor resultante que contm nas posies pares os valores correspondentes s posies pares do primeiro vetor e nas posies mpares os valores correspondentes s posies mpares do segundo vetor.

Questo 8 - Leia um vetor de 40 posies e acumule os valores do primeiro elemento no segundo, deste no terceiro e assim por diante. Ao final, escreva o vetor obtido.

Explanao da questo: Nessa questo dever ser lido um vetor de 40 posies e depois fazer com que os valores do primeiro elemento do vetor se acumule no segundo e assim sucessivamente. Para isso, dever ser usado um lao de repetio para percorrer todo o vetor fazendo com que o segundo elemento receba o primeiro, o terceiro receba o segundo (que j contem seu valor mais o primeiro) e etc.

Algoritmo: Incio Questo8 Inteiro m Real v[40]

Faa m0 at 39, mm+1 Imprima Digite o valor de v[, m+1, ] Leia v[m] Fim faa Faa m1 at 39, mm+1 v[m] v[m]+v[m-1]

Fim faa Imprima Vetor Resultante Faa m0 at 39, mm+1 Imprima v[, m+1, ]=, v[m] Fim faa Fim

Cdigo Linguagem C: #include<stdio.h>/* Biblioteca de entrada e saida de dados*/ #include<stdlib.h>/* Biblioteca de alocao de memria e converses*/

main(){ /*Funo Principal, ou seja, a que executada primeiro*/ int m; /*Declarao de variveis, tipo inteiro*/ float v[40]; /*Declarao de variveis, tipo real*/ for(m=0;m<=39;m++){ /*Estrutura de repetio para a leitura de um vetor de 40 posies*/ printf("Digite o valor de v[%d] ", m+1); /* 'printf' - Funo padro para exibir mensagens */ scanf("%f", &v[m]); /*'scanf' - Funo padro para entrada de dados, tipo: '%f' - Real */ } for(m=1;m<=39;m++){ v[m]=v[m]+v[m-1];

printf("\n\n"); printf("Vetor Resultante\n"); for(m=0;m<=39;m++){ /*lao de repetio usado para a impresso do vetor*/ printf("v[%d]=%.1f\n",m+1, v[m] ); } printf("\n\n"); system("pause"); /*comando utilizado para pausar a tela*/ }

Resultados: O programa dever imprimir o vetor resultante.

Questo 9 - Leia um vetor contendo letras de uma frase inclusive os espaos em branco. Retirar os espaos em branco do vetor e depois escrev-los.

Explanao da questo: Nessa questo o usurio dever digitar uma string e o programa dever imprimir essa string sem os espaos em branco. Para isso dever ser usado um vetor auxiliar que ir receber os caracteres da string sem os espaos em branco. Essa string sem espaos em branco ser obtida atravs de um lao de repetio e uma estrutura condicional. A estrutura condicional ir testar cada caractere da string. Se o caractere for diferente de espao vazio, o vetor auxiliar ir receber esse caractere.

Algoritmo: Incio Questo9 Caractere str [120] Caractere novo [120] Inteiro aux, i i 0 Imprima Digite uma string Leia str Faa aux 0 at o tamanho da string(str), auxaux+1 Se(str[aux] # ' ') novo[i] str[aux] ii+1 Fim se

Fim faa novo[i] '\0'; Imprima novo Fim

Cdigo Linguagem C: #include <stdio.h>/* Biblioteca de entrada e saida de dados*/ #include<stdlib.h>/* Biblioteca de alocao de memria e converses*/ #include <string.h>/* Biblioteca de manipulao de strings*/

int main() { /*Funo Principal, ou seja, a que executada primeiro*/ char str[120]; /*Declarao de variveis, tipo caractere*/ char novo[120]; /*Declarao de variveis, tipo caractere*/ int aux; /*Declarao de variveis, tipo inteiro*/ int i = 0; /*Declarao de variveis, tipo inteiro*/ printf("Digite uma string\n"); /* 'printf' - Funo padro para exibir mensagens */ gets(str); /*'gets(string)' - comando utilizado para a leitura de strings*/ for(aux = 0; aux < strlen(str); aux++) { /*strlen(string) - funo que retorna o tamanho da string*/ if(str[aux] != ' ') { novo[i] = str[aux]; i++; } } novo[i] = '\0'; printf("%s\n", novo); return 0; system("pause"); /*comando utilizado para pausar a tela*/ }

Resultados: O programa ir imprimir a string sem os espaos em branco.

Questo 12 - Leia 3 vetores de 9 posies e crie outro com o 1 tero do primeiro, o 2 tero do segundo e o ultimo tero do terceiro. Escrever o vetor resultante ao final.

Explanao da questo: Nessa questo devero ser lidos 3 vetores de 9 posies e criado um outro vetor de 9 posies que ser obtido atravs do 1 tero do primeiro vetor, do 2 tero do segundo vetor e do 3 tero do terceiro vetor.

Algoritmo: Incio Questo12 Real a[9], b[9], c[9], d[9] Inteiro i Imprima Preencha o vetor A Faa i0 at 8, ii+1 Imprima Digite o valor de A[, i+1, ] Leia a[i] Fim faa Imprima Preencha o vetor B Faa i0 at 8, ii+1 Imprima Digite o valor de B[, i+1, ] Leia b[i] Fim faa Imprima Preencha o vetor C Faa i 0 at 8, ii+1 Imprima Digite o valor de C[, i+1, ] Leia c[i] Fim faa Faa i 0 at 2, ii+1 d[i] a[i] d[i+3] b[i+3] d[i+6] c[i+6] Fim faa Imprima Vetor Resultante Faa i0 at 8, ii+1 Imprima D[, i+1, ]=, d[i] Fim faa Fim

Cdigo Linguagem C: #include<stdio.h>/* Biblioteca de entrada e sada de dados*/ #include<stdlib.h> /* Biblioteca de alocao de memria e converses*/

main(){ /*Funo Principal, ou seja, a que executada primeiro*/ float a[9], b[9], c[9], d[9]; /*Declarao de variveis, tipo real*/ int i; /*Declarao de variveis, tipo inteiro*/ printf("Preencha o vetor A\n\n"); for(i=0;i<=8;i++){ /*Estrutura de repetio para a leitura de um vetor de 9 posies*/ printf("Digite o valor de A[%d] ", i+1); scanf("%f",&a[i]); } printf("\n\nPreencha o vetor B\n\n"); for(i=0;i<=8;i++){ /*Estrutura de repetio para a leitura de um vetor de 9 posies*/ printf("Digite o valor de B[%d] ", i+1); /* 'printf' - Funo padro para exibir mensagens */ scanf("%f",&b[i]); /*'scanf' - Funo padro para entrada de dados, tipo: '%f' - Real */ } printf("\n\nPreencha o vetor C\n\n"); for(i=0;i<=8;i++){ /*Estrutura de repetio para a leitura de um vetor de 9 posies*/ printf("Digite o valor de C[%d] ", i+1); scanf("%f",&c[i]); } for(i=0;i<=2;i++){ d[i]=a[i]; d[i+3]=b[i+3]; d[i+6]=c[i+6]; } printf("\n\nVetor Resultante\n"); for(i=0;i<=8;i++){ /*lao de repetio usado para a impresso do vetor*/

printf("D[%d]=%.1f\n", i+1,d[i]); } system("pause"); /*comando utilizado para pausar a tela*/ }

Resultados: O programa dever imprimir o vetor resultante.

Questo 13 - Leia um vetor de 10 posies e verifique se existem valores iguais e os escreva.

Explanao da questo: O programa ir ler um vetor de 10 posies e ir fazer uma busca no vetor se existe valores repetidos. Para isso ser usado 2 laos de repetio.

Algoritmo: Incio Questo13 Real v[10] Inteiro i, j Imprima Preencha o vetor Faa i0 at 9, ii+1 Imprima Digite o valor de v[, i+1, ] Leia v[i] Fim faa Faa i0 at 9, ii+1 Faa ji+1 at 9, jj+1 Se(v[i]=v[j]) Imprima v[i], um numero repetido Fim se Fim faa

Fim faa Fim

Cdigo Linguagem C:

#include<stdio.h>/* Biblioteca de entrada e saida de dados*/ #include<stdlib.h>/* Biblioteca de alocao de memria e converses*/

main(){ /*Funo Principal, ou seja, a que executada primeiro*/ float v[10]; /*Declarao de variveis, tipo real*/ int i,j; /*Declarao de variveis, tipo inteiro*/ printf("Preencha o vetor\n\n"); for(i=0;i<=9;i++){ /*Estrutura de repetio para a leitura de um vetor de 10 posies*/ printf("Digite o valor de v[%d] ", i+1); /* 'printf' - Funo padro para exibir mensagens */ scanf("%f",&v[i] ); /*'scanf' - Funo padro para entrada de dados, tipo: '%f' - Real */ } for(i=0;i<=9;i++){ for(j=i+1;j<=9;j++){ if(v[i]==v[j]){ printf("%.1f um numero repetido\n", v[i]); } }

} system("pause");/*comando utilizado para pausar a tela*/ }

Resultados: O programa ir ler um vetor e verificar se existem valores repetidos no mesmo. Se existir ele imprimir qual nmero repetido.

Questo 14 - Leia um vetor de 50 posies e o compacte, ou seja, elimine as posies com valor zero avanando uma posio, com os valores subsequentes do vetor. Dessa forma todos zeros devem ficar para as posies finais do vetor.

Explanao da questo: Para compactar um vetor foi utilizado um vetor auxiliar. A estratgia utilizada foi fazer o vetor auxiliar receber todos os valores que forem

diferentes de zero do vetor principal. Para isso utilizado um lao de repetio e uma estrutura condicional. Depois os elementos do vetor auxiliar dever ser repassado para o vetor principal e o resto das posies devero ser preenchidas com zero.

Algoritmo: Incio Questo14 Inteiro v[50], aux[50], i, k k0 Imprima Preencha o vetor Faa i0 at 49, ii+1 Imprima Digite o valor de v[, i+1, ] Leia v[i] Fim faa Faa i0 at 49, ii+1 Se(v[i]#0) aux[k] v[i] kk+1 Fim se Fim faa Faa i0 at i<k, ii+1 v[i] aux[i] Fim faa Faa ik at 49, ii+1 v[i] 0 Fim faa Imprima Vetor Resultante Faa i 0 at i<=49, ii+1 Imprima v[, i+1, ]=, v[i] Fim faa Fim

Cdigo Linguagem C: #include<stdio.h>/* Biblioteca de entrada e saida de dados*/

#include<stdlib.h> /* Biblioteca de alocao de memria e converses*/

main(){ /*Funo Principal, ou seja, a que executada primeiro*/ int v[50], aux[50], i, k=0; /*Declarao de variveis, tipo inteiro*/ printf("Preencha o vetor\n\n"); for(i=0;i<=49;i++){ /*Estrutura de repetio para a leitura de um vetor de 50 posies*/ printf("Digite o valor de v[%d] ", i+1); /* 'printf' - Funo padro para exibir mensagens */ scanf("%d",&v[i]); /*'scanf' - Funo padro para entrada de dados, tipo: '%d' - Inteiro */ } for(i=0;i<=49;i++){ if(v[i]!=0){ aux[k]=v[i]; k++; } } for(i=0;i<k;i++){ v[i]=aux[i]; } for(i=k; i<=49;i++){ v[i]=0; } printf("Vetor Resultante\n\n"); for(i=0;i<=49;i++){ /*lao de repetio usado para a impresso do vetor*/ printf("v[%d]=%d\n", i+1, v[i]); } system("pause"); /*comando utilizado para pausar a tela*/ }

Resultados: O programa imprimir o vetor compactado.

Questo 15 - Considere um vetor de trajetrias de 9 elementos, onde cada elemento possui o valor do prximo elemento do vetor a ser lido. NDICE 1 VALOR 5 2 7 3 6 4 9 5 2 6 8 7 4 8 0 9 3

Assim, a sequncia da leitura seria 1, 5, 2, 7, 4, 9, 3, 6, 8, 0. Faa um algoritmo que seja capaz de ler esse vetor e seguir a trajetria.

Explanao da questo:

Algoritmo: Incio Questo15 Inteiro a[9], i, x, c[10] Imprima Preencha o vetor Faa i0 at 8, ii+1 Imprima Digite o valor de a[, i+1, ] Leia a[i] Fim faa x1 Faa i0 at 9, ii+1 c[i] x xa[x-1] Fim faa Imprima Vetor Resultante Faa i0 at 9, ii+1 Imprima C[, i+1, ]=, c[i] Fim faa Fim

Cdigo Linguagem C: #include<stdio.h>/* Biblioteca de entrada e saida de dados*/ #include<stdlib.h> /* Biblioteca de alocao de memria e converses*/

main(){ /*Funo Principal, ou seja, a que executada primeiro*/

int a[9],i,x,c[10]; /*Declarao de variveis, tipo inteiro*/ printf("Preencha o vetor\n\n"); for(i=0;i<=8;i++){ /*Estrutura de repetio para a leitura de um vetor de 9 posies*/ printf("Digite o valor de a[%d] ",i+1); /* 'printf' - Funo padro para exibir mensagens */ scanf("%d",&a[i]); /* 'scanf' - Funo padro para entrada de dados, tipo: '%d' - Inteiro */ } x=1; for(i=0;i<=9;i++){ c[i]=x; x=a[x-1]; } printf("Vetor Resultante\n\n"); for(i=0;i<=9;i++){ /*lao de repetio usado para a impresso do vetor*/ printf("C[%d]=%d\n", i+1, c[i]); } system("pause"); /*comando utilizado para pausar a tela*/ }

Questo 16 - Leia uma matriz 10 x 10 e escreva a localizao (linha e a coluna) do maior valor.

Explanao da questo: O programa dever ler uma matriz e escrever a localizao do maior valor da mesma. A estratgia utilizada nessa questo foi atribuir varivel maior o primeiro elemento da matriz, ou seja, a matriz de linha zero e coluna zero. Depois utilizado 2 estruturas de repetio e uma estrutura condicional para percorrer toda a matriz e verificar se existe algum valor na matriz que seja maior que o valor da primeira posio. Caso exista, a linha e a coluna desse elemento ser armazenado nas variveis l e c respectivamente.

Algoritmo:

Incio Questo16 Real m[10][10], maior Inteiro i, j, l, c Imprima Preencha a matriz M Faa i0 at 9, ii+1 Faa j0 at 9, jj+1 Imprima Digite o valor de M[, i+1, ] [, j+1, ] Leia m[i][j] Fim faa Fim faa maiorm[0][0] l0 c0 Faa i0 at 9, ii+1 Faa j0 at 9, jj+1 Se (m[i][j]>maior) maiorm[i][j] li cj; Fim se Fim faa Fim faa Imprima O maior valor da matriz =,m[l][c], e esta localizado na linha, l+1, e coluna, c+1 Fim

Cdigo Linguagem C: #include<stdio.h>/* Biblioteca de entrada e sada de dados*/ #include<stdlib.h> /* Biblioteca de alocao de memria e converses*/

main(){ /*Funo Principal, ou seja, a que executada primeiro*/ float m[10][10], maior; /*Declarao de variveis, tipo real*/

int i, j, l, c; /*Declarao de variveis, tipo inteiro*/ printf("Preencha a matriz M\n\n"); for(i=0;i<=9;i++){ /*Estrutura de repetio para a leitura de uma matriz de 10 linhas*/ for(j=0;j<=9;j++){ /*Estrutura de repetio para a leitura de uma matriz de 10 colunas*/ printf("Digite o valor de M[%d][%d] Funo padro para exibir mensagens */ scanf("%f", &m[i][j]); /*'scanf' - Funo padro para entrada de dados, tipo: '%f' - Real */ } } ",i+1,j+1); /* 'printf' -

maior=m[0][0]; l=0; c=0;

for(i=0;i<=9;i++){ for(j=0;j<=9;j++){ if(m[i][j]>maior){ maior=m[i][j]; l=i; c=j; } } } printf("\n\nO maior valor da matriz e=%f e esta localizado na linha %d e coluna %d\n", m[l][c], l+1, c+1); system("pause"); /*comando utilizado para pausar a tela*/

Resultados: O programa imprimir a localizao (linha e coluna) do maior valor da matriz.

Questo 17 - Declare uma matriz 5 x 5. Preencha com 1 a diagonal principal e com 0 os demais elementos. Escreva ao final a matriz obtida.

Explanao da questo: Da matemtica sabe-se que os ndices dos elementos da diagonal principal de uma matriz so iguais. Essa foi a lgica utilizada na questo. Foi feito um lao de repetio de 0 4 com incremento de 1 cada repetio e uma estrutura condicional para verificar se os ndices so iguais. Caso forem iguais a posio i j da matriz ir receber o valor 1. Caso contrrio essa posio receber o valor zero.

Algoritmo: Incio Questo17 inteiro m[5][5], i, j Faa i0 at 4, ii+1 Faa j0 at 4, jj+1 Se(i=j) m[i][j] 1 Seno m[i][j] 0 Fim se Fim faa Fim faa Imprima Matriz Resultante Faa i0 at 4, ii+1 Faa j0 at 4, jj+1 Imprima m[i][j] Fim faa Fim faa Fim

Cdigo Linguagem C: #include<stdio.h>/* Biblioteca de entrada e saida de dados*/ #include<stdlib.h>/* Biblioteca de alocao de memria e converses*/

main(){ /*Funo Principal, ou seja, a que executada primeiro*/ int m[5][5], i, j; /*Declarao de variveis, tipo inteiro*/ for(i=0;i<=4;i++){ for(j=0;j<=4;j++){ if(i==j){ m[i][j]=1; } else{ m[i][j]=0; } } } printf("Matriz Resultante\n\n"); /* 'printf' - Funo padro para exibir mensagens */ for(i=-0;i<=4;i++){ /*lao de repetio usado para a impresso das linhas da matriz*/ for(j=0;j<=4;j++){ /*lao de repetio usado para a impresso das colunas da matriz*/ printf("%d ", m[i][j]); } printf("\n"); /* '\n' - utilizado para saltar uma linha para manter a organizao e o formato da matriz*/ } system("pause"); /*comando utilizado para pausar a tela*/ }

Resultados: O programa ir imprimir a matriz identidade.

Questo 18 - Leia duas matrizes 4 x 4 e escreva uma terceira com os maiores elementos entre as primeiras.

Explanao da questo: O programa dever ler duas matrizes e compar-las, verificando qual possui o maior elemento em cada posio e fazer uma terceira matriz

obter os maiores elementos entre as duas. Para isso ser necessrio utilizar 2 estruturas de repetio e uma estrutura condicional composta, ou seja, se o maior valor de uma posio se encontra na primeira matriz, a nova matriz ir receber esse valor, seno ela ir receber o valor da segunda matriz.

Algoritmo: Incio Questo18 Real a[4][4],b[4][4], c[4][4] Inteiro i, j Imprima Preencha a matriz A Faa i0 at 3, ii+1 Faa j0 at 3, jj+1 Imprima Digite o valor de A[, i+1, ] [, j+1, ] Leia a[i][j] Fim faa Fim faa Imprima Preencha a matriz B Faa i0 at 3, ii+1 Faa j0 at 3, jj+1 Imprima Digite o valor de B[, i+1, ] [, j+1, ] Leia b[i][j] Fim faa Fim faa Faa i0 at 3, ii+1 Faa j 0 at 3, jj+1 Se (a[i][j]>b[i][j]) c[i][j] a[i][j] Seno c[i][j] b[i][j] Fim se Fim faa Fim faa Imprima Matriz Resultante Faa i0 at 3, ii+1

Faa j0 at 3, jj+1 Imprima c[i][j] Fim faa Fim faa Fim

Cdigo Linguagem C: #include<stdio.h>/* Biblioteca de entrada e sada de dados*/ #include<stdlib.h>/* Biblioteca de alocao de memria e converses*/

main(){ /*Funo Principal, ou seja, a que executada primeiro*/ float a[4][4],b[4][4], c[4][4]; /*Declarao de variveis, tipo real*/ int i, j; /*Declarao de variveis, tipo inteiro*/ printf("Preencha a matriz A\n\n"); /* 'printf' - Funo padro para exibir mensagens */ for(i=0;i<=3;i++){ /*Estrutura de repetio para a leitura de uma matriz de 4 linhas*/ for(j=0;j<=3;j++){ /*Estrutura de repetio para a leitura de uma matriz de 4 colunas */ printf("Digite o valor de A[%d][%d] ", i+1, j+1); scanf("%f", &a[i][j]); /*'scanf' -Funo padro para entrada de dados, tipo: '%f' - Real */ } } printf("\n\nPreencha a matriz B\n\n"); for(i=0;i<=3;i++){ /*Estrutura de repetio para a leitura de uma matriz de 4 linhas*/ for(j=0;j<=3;j++){ /*Estrutura de repetio para a leitura de uma matriz de 4 linhas*/ printf("Digite o valor de B[%d][%d]", i+1, j+1); scanf("%f", &b[i][j]); } }

for(i=0;i<=3;i++){ for(j=0;j<=3;j++){ if(a[i][j]>b[i][j]){ c[i][j]=a[i][j]; } else{ c[i][j]=b[i][j]; } } } printf("\n\nMatriz Resultante\n\n"); for(i=0;i<=3;i++){ /*lao de repetio usado para a impresso das linhas da matriz*/ for(j=0;j<=3;j++){ /*lao de repetio usado para a impresso das colunas da matriz*/ printf("%.0f ", c[i][j]); } printf("\n");/* '\n' - utilizado para saltar uma linha para manter a organizao e o formato da matriz*/ } system("pause"); /*comando utilizado para pausar a tela*/

Resultados: O programa dever imprimir a matriz resultante, ou seja, a matriz que contm os maiores valores entre as duas matrizes.

Questo 19 - Leia uma matriz 6 x 6, conte e escreva quantos valores maiores que 10 ela possui.

Explanao da questo: nessa questo, o programa dever ler uma matriz e quantificar quantos valores maiores que 10 ela possui. Para isso ser utilizado 2 laos de repetio para percorrer a matriz e uma estrutura condicional para testar cada elemento da mesma.

Se for maior que 10 a varivel q (de valor inicial igual a 0) ir receber um acrscimo de 1.

Algoritmo: Incio Questo19 Inteiro m[6][6], i, j, q q 0 Imprima Preencha a matriz M Faa i0 at 5, ii+1 Faa j0 at 5, jj+1 Imprima Digite o valor de m[, i+1, ] [, j+1, ] Leia m[i][j] Fim faa Fim faa Faa i0 at 5, ii+1 Faa j0 at 5, jj+1 Se(m[i][j]>10) qq+1 Fim se Fim faa Fim faa Imprima A matriz M possui, q, valores maior que 10 Fim

Cdigo Linguagem C: #include<stdio.h>/* Biblioteca de entrada e saida de dados*/ #include<stdlib.h>/* Biblioteca de alocao de memria e converses*/

main(){ /*Funo Principal, ou seja, a que executada primeiro*/ int m[6][6], i, j, q=0; /*Declarao de variveis, tipo inteiro*/ printf("Preencha a matriz M\n\n"); for(i=0;i<=5;i++){ /*Estrutura de repetio para a leitura de uma matriz de 6 linhas*/

for(j=0;j<=5;j++){ /*Estrutura de repetio para a leitura de uma matriz de 6 colunas*/ printf("Digite o valor de m[%d][%d] ", i+1, j+1); /* 'printf' Funo padro para exibir mensagens */ scanf("%d", &m[i][j]); /*'scanf'-Funo padro para entrada de dados, tipo: '%d' - Inteiro */ } } for(i=0;i<=5;i++){ for(j=0;j<=5;j++){ if(m[i][j]>10){ q++; } } } printf("\n\nA matriz M possui %d valores maior que 10\n", q); system("pause"); /*comando utilizado para pausar a tela*/ }

Resultados: o programa ir imprimir a quantidade de elementos da matriz que possui valor maior que 10.

Questo 20 - Leia uma matriz 20 x 20. Leia tambm um valor X. O programa dever fazer uma busca desse valor na matriz e, ao final escrever a localizao (linha e coluna) ou uma mensagem de no encontrado.

Explanao da questo: Para localizar o valor X na matriz dever ser usado 2 laos de repetio para percorrer cada elemento da matriz e uma estrutura condicional para testar se algum elemento da matriz igual a X. Se algum elemento da matriz for igual a X ento ser impresso a sua localizao, ou seja, o nmero da linha e o nmero da coluna. Se nenhum valor da matriz for igual a X dever ser impresso na tela uma mensagem de no encontrado.

Algoritmo:

Incio Questo20 Real m[20][20], x int i, j, p p0 Imprima Preencha a matriz M Faa i0 at 19, ii+1 Faa j0 at 19, jj+1 Imprima Digite o valor de M[, i+1, ] [, j+1, ] Leia m[i][j] Fim faa Fim faa Imprima Digite X Leia x Faa i0 at 19, ii+1) Faa j0 at 19, jj+1 Se(x=m[i][j]) Imprima x, foi encontrado na posio M[, i+1, ][, j+1, ] pp+1 Fim se Fim faa Fim faa Se(p=0) Imprima x, no foi encontrado na matriz M Fim se Fim

Cdigo Linguagem C: #include<stdio.h>/* Biblioteca de entrada e sada de dados*/ #include<stdlib.h>/* Biblioteca de alocao de memria e converses*/

main(){ /*Funo Principal, ou seja, a que executada primeiro*/ float m[20][20],x; /*Declarao de variveis, tipo real*/ int i, j, p=0; /*Declarao de variveis, tipo inteiro*/ printf("Preencha a matriz M\n\n");

for(i=0;i<=19;i++){ /*Estrutura de repetio para a leitura de uma matriz de 20 linhas*/ for(j=0;j<=19;j++){ /*Estrutura de repetio para a leitura de uma matriz de 20 colunas*/ printf("Digite o valor de M[%d][%d] 'printf' - Funo padro para exibir mensagens */ scanf("%f",&m[i][j]); entrada de dados, tipo: '%f' - Real */ } } printf("\nDigite X "); scanf("%f", &x); for(i=0;i<=19;i++){ for(j=0;j<=19;j++){ if(x==m[i][j]){ printf("%.0f foi encontrado na posicao M[%d][%d]\n", x,i+1,j+1); p++; } } } if(p==0){ printf("\n%.0f nao foi encontrado na matriz M\n\n", x); } system("pause"); /*comando utilizado para pausar a tela*/ } /*'scanf'-Funo padro para ", i+1, j+1); /*

Resultados: O programa ir pesquisar se existe algum valor na matriz igual a X, se existir ele imprimir a sua localizao. Se nenhum elemento for igual a X, o programa ir exibir uma mensagem de no encontrado.

Questo 21 - Leia uma matriz 4 x 4 e troque os valores da 1.linha pelos da 4.coluna, vice-versa. Escrever ao final a matriz obtida.

Explanao da questo: O programa ir ler uma matriz 4 por 4 e trocar os valores da 1 linha pelos da 4 coluna. Para isso ser usado um vetor auxiliar para trocar esses valores sem que nenhum se perca.

Algoritmo: Incio Questo21 Inteiro i, j, m[4][4], aux[4][4] Imprima Preencha a matriz Faa i0 at 3, ii+1 Faa j0 at 3, jj+1 Imprima Digite o valor de M[, i+1, ] [, j+1, ] Leia m[i][j] Fim faa Fim faa Faa j0 at 3, jj+1 aux[0][j] m[0][j] m[0][j] m[j][3] m[j][3] aux[0][j] Fim faa Imprima Matriz Resultante Faa i0 at 3, ii+1 Faa j0 at 3, jj+1 Imprima m[i][j] Fim faa

Fim faa Fim

Cdigo Linguagem C: #include<stdio.h>/* Biblioteca de entrada e saida de dados*/

#include<stdlib.h>/* Biblioteca de alocao de memria e converses*/

main(){ /*Funo Principal, ou seja, a que executada primeiro*/ int i, j, m[4][4], aux[4][4]; /*Declarao de variveis, tipo inteiro*/ printf("Preencha a matriz\n\n");

for(i=0;i<=3;i++){ /*Estrutura de repetio para a leitura de uma matriz de 4 linhas*/ for(j=0;j<=3;j++){ /*Estrutura de repetio para a leitura de uma matriz de 4 colunas*/ printf("Digite o valor de M[%d][%d] ", i+1, j+1); /* 'printf' Funo padro para exibir mensagens */ scanf("%d",&m[i][j]); /*'scanf'-Funo padro para entrada de dados, tipo: '%d' - Inteiro */ } }

for(j=0;j<=3;j++){ aux[0][j]=m[0][j]; m[0][j]=m[j][3]; m[j][3]=aux[0][j]; }

printf("Matriz Resultante:\n\n"); for(i=0;i<=3;i++){ /*lao de repetio usado para a impresso das linhas da matriz*/ for(j=0;j<=3;j++){ /*lao de repetio usado para a impresso das colunas da matriz*/ printf("%d ", m[i][j]); } printf("\n"); /* '\n' - utilizado para saltar uma linha para manter a organizao e o formato da matriz*/ } system("pause"); /*comando utilizado para pausar a tela*/

Resultados: O programa imprimir a matriz resultante.

Questo 22 - Leia uma matriz 8 x 8 e a transforme numa matriz triangular inferior, atribuindo zero a todos os elementos acima da diagonal principal, escrevendo-a ao final.

Explanao da questo: Para transformar uma matriz em uma matriz triangular inferior bastar atribuir valor zero aos elementos acima da diagonal principal. Da matemtica sabe-se que os elementos acima da diagonal principal possuem o ndice de colunas maior que o ndice de linhas. Dessa forma, utilizam-se dois laos de repetio para percorrer a matriz e uma estrutura condicional para atribuir valor zero aos elementos que possurem o ndice de colunas maior que o de linhas.

Algoritmo: Incio Questo 22 Inteiro m[8][8], i, j Imprima Preencha a matriz Faa i0 at 7, ii+1 Faa j0 at 7, jj+1 Imprima Digite o valor de M[, i+1, ] [. j+1, ] Leia m[i][j] Fim faa Fim faa Faa i0 at 7, ii+1 Faa j0 at 7, jj+1 Se(j>i) m[i][j] 0 Fim se Fim faa Fim faa Imprima Matriz Triangular Inferior Faa i0 at 7, ii+1 Faa j0 at 7, jj+1

Imprima m[i][j] Fim faa Fim faa Fim

Cdigo Linguagem C: #include<stdio.h>/* Biblioteca de entrada e sada de dados*/ #include<stdlib.h>/* Biblioteca de alocao de memria e converses*/

main(){ /*Funo Principal, ou seja, a que executada primeiro*/ int m[8][8], i, j; /*Declarao de variveis, tipo inteiro*/ printf("Preencha a matriz\n\n"); for(i=0;i<=7;i++){ /*Estrutura de repetio para a leitura de uma matriz de 8 linhas*/ for(j=0;j<=7;j++){ /*Estrutura de repetio para a leitura de uma matriz de 8 colunas*/ printf("Digite o valor de M[%d][%d] ", i+1,j+1); /* 'printf' Funo padro para exibir mensagens */ scanf("%d", &m[i][j]); /*'scanf'-Funo padro para entrada de dados, tipo: '%d' - Inteiro */ } } for(i=0;i<=7;i++){ for(j=0;j<=7;j++){ if(j>i){ m[i][j]=0; } } } printf("\n\nMatriz Triangular Inferior\n\n"); for(i=0;i<=7;i++){ /*lao de repetio usado para a impresso das linhas da matriz*/

for(j=0;j<=7;j++){ /*lao de repetio usado para a impresso das colunas da matriz*/ printf("%d ", m[i][j]); } printf("\n"); /* '\n' - utilizado para saltar uma linha para manter a organizao e o formato da matriz*/ } system("pause"); /*comando utilizado para pausar a tela*/

} Resultados: O programa imprimir a matriz resultante.

Questo 23 - Leia uma matriz 5 x 5 e faa uma troca entre as diagonais superior e inferior. Escreva-a ao final.

Explanao da questo: Para trocar a diagonal superior pela inferior utilizado uma matriz auxiliar.

Algoritmo: Incio Questo23 Inteiro a[5][5], aux[5][5], i, j Imprima Preencha a matriz Faa i0 at 4, ii+1 Faa j0 at 4, jj+1 Imprima Digite o valor de A[,i+1, ] [, j+1, ] Leia a[i][j] Fim faa Fim faa Faa i0 at 4, ii+1 Faa j0 at 4, jj+1 Se(j>i) aux[i][j] a[i][j] a[i][j] a[j][i] a[j][i] aux[i][j]

Fim se Fim faa Fim faa Imprima Matriz Resultante Faa i0 at , ii+1 Faa j0 at 4, jj+1 Imprima a[i][j] Fim faa Fim faa Fim

Cdigo Linguagem C: #include<stdio.h>/* Biblioteca de entrada e saida de dados*/ #include<stdlib.h>/* Biblioteca de alocao de memria e converses*/

main(){ /*Funo Principal, ou seja, a que executada primeiro*/ int a[5][5], aux[5][5], i, j; /*Declarao de variveis, tipo inteiro*/ printf("Preencha a matriz\n\n"); for(i=0;i<=4;i++){ /*Estrutura de repetio para a leitura de uma matriz de 5 linhas*/ for(j=0;j<=4;j++){ /*Estrutura de repetio para a leitura de uma matriz de 5 colunas*/ printf("Digite o valor de A[%d][%d] Funo padro para exibir mensagens */ scanf("%d", &a[i][j]); /*'scanf'-Funo padro para entrada de dados, tipo: '%d' - Inteiro */ } } for(i=0;i<=4;i++){ for(j=0;j<=4;j++){ if(j>i){ aux[i][j]=a[i][j]; a[i][j]=a[j][i]; ", i+1,j+1); /* 'printf' -

a[j][i]=aux[i][j]; } } } printf("\n\nMatriz Resultante\n\n"); for(i=0;i<=4;i++){ /*lao de repetio usado para a impresso das linhas da matriz*/ for(j=0;j<=4;j++){ /*lao de repetio usado para a impresso das colunas da matriz*/ printf("%d ", a[i][j]); } printf("\n"); /* '\n' - utilizado para saltar uma linha para manter a organizao e o formato da matriz*/ } system("pause"); /*comando utilizado para pausar a tela*/ }

Resultados: O programa imprimir a matriz resultante.

Questo 24 - Leia duas matrizes 10 x 10 e faa uma substituio entre a diagonal inferior da primeira com a diagonal superior da segunda.

Explanao da questo: O programa dever ler duas matrizes e substituir a diagonal inferior da primeira com a diagonal superior da segunda. Os elementos da diagonal inferior de uma matriz possuem o ndice da linha maior que o da coluna e os elementos da diagonal superior de uma matriz possuem ndice da coluna maior que o da linha. Sabendo-se disse, utiliza-se uma estrutura condicional dentro de 2 laos de repetio para percorrer toda a matriz e realizar a substituio.

Algoritmo: Incio Questo24 Inteiro a[10][10],b[10][10], i, j Imprima Preencha a matriz A Faa i0 at 9, ii+1

Faa j0 at 9, jj+1 Imprima Digite o valor de A[, i+1, ] [, j+1, ] Leia a[i][j] Fim faa Fim faa Imprima Preencha a matriz B Faa i0 at 9, ii+1 Faa j0 at 9, jj+1 Imprima Digite o valor de B[,i+1, ] [, j+1, ] Leia b[i][j] Fim faa Fim faa Faa i0 at 9, ii+1 Faa j0 at 9, jj+1 Se(i>j) a[i][j] b[j][i] Fim se Fim faa Fim faa Imprima Matriz Resultante Faa i0 at 9, ii+1 Faa j0 at 9, jj+1 Imprima a[i][j] Fim faa Fim faa Fim

Cdigo Linguagem C: #include<stdio.h>/* Biblioteca de entrada e saida de dados*/ #include<stdlib.h>/* Biblioteca de alocao de memria e converses*/

main(){ /*Funo Principal, ou seja, a que executada primeiro*/ int a[10][10],b[10][10], i, j; /*Declarao de variveis, tipo inteiro*/

printf("Preencha a matriz A\n\n"); /* 'printf' - Funo padro para exibir mensagens */ for(i=0;i<=9;i++){ /*Estrutura de repetio para a leitura de uma matriz de 10 linhas*/ for(j=0;j<=9;j++){ /*Estrutura de repetio para a leitura de uma matriz de 10 colunas*/ printf("Digite o valor de A[%d][%d] ", i+1,j+1); scanf("%d", &a[i][j]);/*'scanf'-Funo padro para entrada de dados, tipo: '%d' - Inteiro */ } } printf("\n\nPreencha a matriz B\n\n"); for(i=0;i<=9;i++){ /*Estrutura de repetio para a leitura de uma matriz de 10 linhas*/ for(j=0;j<=9;j++){ /*Estrutura de repetio para a leitura de uma matriz de 10 colunas*/ printf("Digite o valor de B[%d][%d] ", i+1,j+1); scanf("%d", &b[i][j]); } } for(i=0;i<=9;i++){ for(j=0;j<=9;j++){ if(i>j){ a[i][j]=b[j][i]; } } } printf("\n\nMatriz Resultante\n\n"); for(i=0;i<=9;i++){ /*lao de repetio usado para a impresso das linhas da matriz*/ for(j=0;j<=9;j++){ /*lao de repetio usado para a impresso das colunas da matriz*/ printf("%d ",a[i][j]); }

printf("\n"); /* '\n' - utilizado para saltar uma linha para manter a organizao e o formato da matriz*/ } system("pause");/*comando utilizado para pausar a tela*/

} Resultados: O programa imprimir a matriz resultante.

Questo 25 - Leia uma matriz 8x 8 e escreva o maior elemento da diagonal principal e a soma dos elementos da diagonal secundaria.

Explanao da questo: Para saber qual o maior valor da diagonal principal utiliza-se como estratgia atribuir varivel maior o primeiro valor da matriz (que pertence a diagonal principal), dentro de 2 laos de repetio utiliza-se 2 condies: se i for igual a j e se maior for > que o elemento pertencente a posio ij. Se sim, atribui-se varivel maior o valor do elemento comparado. Para calcular a soma dos elementos da diagonal secundria utiliza-se o artifcio de que todos os elementos da diagonal secundria da matriz em questo possui a soma de seus 2 ndices igual a 7, ou seja, se a soma dos ndices for igual a 7, ento a soma recebe o acrscimo do valor do elemento na varivel soma.

Algoritmo: Incio Questo25 Inteiro m[8][8], i, j, maior, soma soma0 Imprima Preencha a matriz M Faa i0 at 7, ii+1 Faa j0 at 7, jj+1 Imprima Digite o valor de M[,i+1, ] [,j+1, ] Leia m[i][j] Fim faa Fim faa maiorm[0][0] Faa i0 at 7, ii+1

Faa j0 at 7, jj+1 Se(i=j) Se(m[i][j]>maior) maiorm[i][j] Fim se Fim se Se(i+j=7) soma soma+ m[i][j] Fim se Fim faa Fim faa Imprima O maior valor da diagonal principal da matriz =, maior, E a soma dos valores da diagonal secundaria =, soma Fim

Cdigo Linguagem C: #include<stdio.h>/* Biblioteca de entrada e saida de dados*/ #include<stdlib.h>/* Biblioteca de alocao de memria e converses*/

main(){ /*Funo Principal, ou seja, a que executada primeiro*/ int m[8][8], i, j, maior, soma=0; /*Declarao de variveis, tipo inteiro*/ printf("Preencha a matriz M\n\n"); /* 'printf' - Funo padro para exibir mensagens */ for(i=0;i<=7;i++){ /*Estrutura de repetio para a leitura de uma matriz de 8 linhas*/ for(j=0;j<=7;j++){ /*Estrutura de repetio para a leitura de uma matriz de 8 colunas*/ printf("Digite o valor de M[%d][%d] ", i+1,j+1); scanf("%d", &m[i][j]); /*'scanf'-Funo padro para entrada de dados, tipo: '%d' - Inteiro */ } }

maior=m[0][0]; for(i=0;i<=7;i++){ for(j=0;j<=7;j++){ if(i==j){ if(m[i][j]>maior){ maior=m[i][j]; } } if(i+j==7){ soma= soma+ m[i][j]; } } } printf("\n\nO maior valor da diagonal principal da matriz = %d . E a soma dos valores da diagonal secundaria = %d\n\n", maior, soma); system("pause"); /*comando utilizado para pausar a tela*/

} Resultados: O programa imprimir o maior valor da diagonal principal e a soma dos elementos da diagonal principal.

Questo 26 - Leia uma matriz 6 x 6 e atribuir o valor 0 para os valores negativos encontrados fora das diagonais principal e secundaria.

Explanao da questo: Nessa questo o programa dever atribuir valor zero todos os valores negativos fora das diagonais principal e secundria. Ou seja, todos os valores

Algoritmo: Incio Questo26 Inteiro m[6][6], i, j Imprima Preencha a matriz M Faa i0 at 5, ii+1 Faa j0 at 5, jj+1 Imprima Digite o valor de M[,i+1, ] [, j+1, ]

Leia m[i][j] Fim faa Fim faa Imprima Preencha a matriz M Faa i0 at 5, ii+1 Faa j0 at 5, jj+1 Se(i#j e i+j#5) Se(m[i][j]<0) m[i][j] 0 Fim se Fim se Fim faa Fim faa Imprima Matriz Resultante Faa i0 at 5, ii+1 Faa j0 at 5, jj+1 Imprima m[i][j] Fim faa Fim faa Fim

Cdigo Linguagem C: #include<stdio.h>/* Biblioteca de entrada e saida de dados*/ #include<stdlib.h>/* Biblioteca de alocao de memria e converses*/

main(){ /*Funo Principal, ou seja, a que executada primeiro*/ int m[6][6], i, j; /*Declarao de variveis, tipo inteiro*/ printf("Preencha a matriz M\n\n"); for(i=0;i<=5;i++){ /*Estrutura de repetio para a leitura de uma matriz de 6 linhas*/ for(j=0;j<=5;j++){ /*Estrutura de repetio para a leitura de uma matriz de 6 colunas*/ printf("Digite o valor de M[%d][%d] ", i+1,j+1); /* 'printf' Funo padro para exibir mensagens */

scanf("%d", &m[i][j]); /*'scanf'-Funo padro para entrada de dados, tipo: '%d' - Inteiro */ } } printf("Preencha a matriz M\n\n"); for(i=0;i<=5;i++){ /*Estrutura de repetio para a leitura de uma matriz de 6 linhas*/ for(j=0;j<=5;j++){ /*Estrutura de repetio para a leitura de uma matriz de 6 colunas*/ if(i!=j&&i+j!=5){ if(m[i][j]<0){ m[i][j]=0; } } } } printf("\n\nMatriz Resultante\n\n"); for(i=0;i<=5;i++){ /*lao de repetio usado para a impresso das linhas da matriz*/ for(j=0;j<=5;j++){ /*lao de repetio usado para a impresso das colunas da matriz*/ printf("%d ",m[i][j]); } printf("\n"); /* '\n' - utilizado para saltar uma linha para manter a organizao e o formato da matriz*/ } system("pause"); /*comando utilizado para pausar a tela*/ }

Questo 27 - Leia uma matriz 50 x 2, onde cada coluna corresponde a um lado de um tringulo retngulo. Declare um vetor que contenha a rea dos respectivos tringulos e o escreva. Algoritmo:

Incio Questo 27 Inteiro a[50][2], i, j, v[50] Imprima Preencha a matriz Faa i0 at 49, ii+1 Faa j0 at 1, jj+1 Imprima Digite o valor de A[, i+1, ] [, j+1, ] Leia a[i][j] Fim faa Fim faa Faa i0 at 49, ii+1 v[i] a[i][0]*a[i][1] Fim faa Imprima Vetor que corresponde as reas dos tringulo Faa i0 at 49, ii+1 Imprima V[, i+1, ]=, v[i] Fim faa Fim

Cdigo Linguagem C: #include<stdio.h>/* Biblioteca de entrada e saida de dados*/ #include<stdlib.h>/* Biblioteca de alocao de memria e converses*/

main(){ /*Funo Principal, ou seja, a que executada primeiro*/ int a[50][2], i, j, v[50]; /*Declarao de variveis, tipo inteiro*/ printf("Preencha a matriz\n\n"); for(i=0;i<=49;i++){ /*Estrutura de repetio para a leitura de uma matriz de 50 linhas*/ for(j=0;j<=1;j++){ /*Estrutura de repetio para a leitura de uma matriz de 2 colunas*/ printf("Digite o valor de A[%d][%d] Funo padro para exibir mensagens */ scanf("%d", &a[i][j]); /*'scanf'-Funo padro para entrada de dados, tipo: '%d' - Inteiro */ } ", i+1,j+1); /* 'printf' -

} for(i=0;i<=49;i++){ v[i]=a[i][0]*a[i][1]; } printf("\n\nVetor que corresponde as areas do triangulo:\n\n"); for(i=0;i<=49;i++){ /*Estrutura de repetio para a impresso de um vetor de 50 posies*/ printf("V[%d]=%d\n", i+1, v[i]); } system("pause"); /*comando utilizado para pausar a tela*/ }

Questo 28 - Leia duas matrizes 20 x 20 e escreva os valores da primeira que ocorrem em qualquer posio da segunda. Algoritmo: Incio Questo28 Inteiro a[20][20],b[20][20], i, j, k, l Imprima Preencha a matriz A Faa i0 at 19, ii+1 Faa j0 at 19, jj+1 Imprima Digite o valor de A[,i+1, ] [, j+1, ] Leia a[i][j] Fim faa Fim faa Imprima Preencha a matriz B Faa i0 at 19, ii+1 Faa j0 at 19, jj+1 Imprima Digite o valor de B[,i+1, ] [, j+1, ] Leia b[i][j] Fim faa Fim faa Faa i0 at 19, ii+1 Faa j0 at 19, jj+1 Faa k0 at 19, kk+1

Faa l0 at 19, ll+1 Se (a[i][j]=b[k][l]) Imprima O valor, a[i][j], se repete na matriz B Fim se Fim faa Fim faa Fim faa Fim faa Fim

Cdigo Linguagem C: #include<stdio.h>/* Biblioteca de entrada e saida de dados*/ #include<stdlib.h>/* Biblioteca de alocao de memria e converses*/

main(){ /*Funo Principal, ou seja, a que executada primeiro*/ int a[20][20],b[20][20], i, j, k, l; /*Declarao de variveis, tipo inteiro*/ printf("Preencha a matriz A\n\n"); for(i=0;i<=19;i++){ /*Estrutura de repetio para a leitura de uma matriz de 20 linhas*/ for(j=0;j<=19;j++){ /*Estrutura de repetio para a leitura de uma matriz de 20 colunas*/ printf("Digite o valor de A[%d][%d] Funo padro para exibir mensagens */ scanf("%d", &a[i][j]); /*'scanf'-Funo padro para entrada de dados, tipo: '%d' - Inteiro */ } } printf("\n\nPreencha a matriz B\n\n"); for(i=0;i<=19;i++){ /*Estrutura de repetio para a leitura de uma matriz de 20 linhas*/ for(j=0;j<=19;j++){ /*Estrutura de repetio para a leitura de uma matriz de 20 colunas*/ printf("Digite o valor de B[%d][%d] ", i+1,j+1); ", i+1,j+1); /* 'printf' -

scanf("%d", &b[i][j]); } } for(i=0;i<=19;i++){ for(j=0;j<=19;j++){ for(k=0;k<=19;k++){ for(l=0;l<=19;l++){ if(a[i][j]==b[k][l]){ printf("\nO valor %d se repete na matriz B\n", a[i][j]); } } } } } system("pause"); /*comando utilizado para pausar a tela*/

Questo 29 - Considere uma matriz de distncia entre cidades 6 x 6: 1.(Ccere s) 2.(BBugre s) 3.(Cuiab ) 4.(VGrand e) 5.(Tangar ) 6.(PLacerd a)

1.(Cceres) 2.(BBugres 63 ) 3.(Cuiab) 4.(VGrand e) 5.(Tangar ) 6.(PLacerd 190 210 190

63

210 160

190 150 95

190

160 150 10

10

95

80

80

a)

Considere tambm um vetor de viagem indo de Cuiab at Cceres pela seguinte rota: ndice Cidade 1 3 2 4 3 2 4 5 5 6 6 1

Faa um programa que leia a matriz e o vetor e calcule a distncia percorrida durante a viagem. Algoritmo: Incio Questo29 Real D[6][6], soma soma0 Inteiro v[6], i, j, x, y Faa i0 at 5, ii+1 Faa j0 at 5, j+1 Imprima Digite o valor de D[,i+1, ] [, j+1, ] Leia D[i][j] Fim faa

Fim faa Faa i0 at 5, ii+1 Imprima Digite a posio da cidade, i+1 Leia v[i] Fim faa Faa i0 at 4, ii+1 xv[i]-1 yv[i+1]-1 soma soma+D[x][y] Fim faa Imprima A distancia percorrida =, soma Fim

Cdigo Linguagem C: #include<stdio.h>/* Biblioteca de entrada e sada de dados*/ #include<stdlib.h>/* Biblioteca de alocao de memria e converses*/

main(){ /*Funo Principal, ou seja, a que executada primeiro*/ float D[6][6], soma=0; /*Declarao de variveis, tipo real*/ int v[6], i, j, x, y; /*Declarao de variveis, tipo inteiro*/ for(i=0;i<=5;i++){ /*Estrutura de repetio para a leitura de uma matriz de 6 linhas*/ for(j=0;j<=5;j++){ /*Estrutura de repetio para a leitura de uma matriz de 6 colunas*/ printf("Digite o valor de D[%d][%d] 'printf' - Funo padro para exibir mensagens */ scanf("%f", &D[i][j]); /*'scanf'-Funo padro para entrada de dados, tipo: '%f' - Real */ } ", i+1, j+1); /*

} for(i=0;i<=5;i++){ /*Estrutura de repetio para a leitura de um vetor de 6 posies*/ printf("\n\nDigite a posicao da cidade %d ", i+1); scanf("%d", &v[i]); }

for(i=0;i<=4;i++){ x=v[i]-1; y=v[i+1]-1; soma= soma+D[x][y]; } printf("\n\nA distancia percorrida e= %.0f\n", soma); system("pause"); /*comando utilizado para pausar a tela*/

Questo 30 - Leia uma matriz 100 x 10 que se refere respostas de 10 questes de mltipla escolha, referentes a 100 alunos. Leia tambm um vetor de 10 posies contendo o gabarito d e respostas que podem ser a, b, c ou d. Seu programa dever comparar as respostas de cada candidato com o gabarito e emitir um vetor resultado, contendo a pontuao correspondente. Algoritmo: Incio Questo30 Caractere m[100][10], v[10] Inteiro r[10], i, j Faa i0 at 99, ii+1 Imprima Digite as resposta do aluno, i+1 Faa j0 at 9, jj+1 Imprima Digite a resposta da questo, j+1 Leia m[i][j] Fim faa Fim faa Imprima Digite o gabarito Faa i0 at 9, ii+1 Imprima Digite a resposta da questo, i+1 Leia v[i] Fim faa Faa i0 at 99, ii+1 r[i] 0 Faa j0 at 9, jj+1 Se(m[i][j]=v[j]) r[i] r[i]+1 Fim se Fim faa Fim faa Imprima Pontuao:

Faa i0 at 99, ii+1 Imprima Aluno[, i+1, ]=, r[i] Fim faa Fim

Cdigo Linguagem C: #include<stdio.h>/* Biblioteca de entrada e sada de dados*/ #include<stdlib.h> /* Biblioteca de alocao de memria e converses*/ #include<ctype.h> /*Biblioteca que possibilita a manipulao de caracteres, no de strings inteiras.*/

main(){ /*Funo Principal, ou seja, a que executada primeiro*/ char m[100][10], v[10]; /*Declarao de variveis, tipo caractere*/ int r[10], i, j; /*Declarao de variveis, tipo inteiro*/

for(i=0;i<=99;i++){ /*Estrutura de repetio para a leitura de uma matriz de 100 linhas*/ printf("\nDigite as resposta do aluno %d\n\n",i+1); for(j=0;j<=9;j++){ /*Estrutura de repetio para a leitura de uma matriz de 10 colunas*/ fflush(stdin); printf("Digite a resposta da questao %d\n",j+1); /* 'printf' Funo padro para exibir mensagens */ scanf("%c",&m[i][j]); /*'scanf'-Funo padro para entrada de dados, tipo: '%c' - caractere */

} } printf("\n\nDigite o gabarito"); for(i=0;i<=9;i++){ /*Estrutura de repetio para a leitura de um vetor de 10 posies*/ fflush(stdin); printf("Digite a resposta da questao %d\n", i+1); scanf("%c",&v[i]);

} for(i=0;i<=99;i++){ r[i]=0; for(j=0;j<=9;j++){ if(toupper(m[i][j])==toupper(v[j])){ /*toupper(argumento) funo que converte seu argumento em uma letra maiscula*/ r[i]++; } } } printf("\n\nPontuacao\n\n"); for(i=0;i<=99;i++){ /*lao de repetio para a impresso do vetor*/ printf("Aluno %d=%d\n", i+1, r[i]); } system("pause"); /*comando utilizado para pausar a tela*/ -

Potrebbero piacerti anche