Buscar

Lista4-ExerciciosVetores.

Prévia do material em texto

LISTA DE EXERCÍCIOS SOBRE VETORES 
 
 
EXEMPLO 1: Proponha um programa que realize a leitura de um vetor contendo 10 valores 
inteiros. Após isto, imprima todas as posições do vetor que possuem valor acima de 100. 
 
 
RESOLUÇÃO DO EXEMPLO 1: 
#include <stdio.h> 
 
int main() 
{ 
 int v[10]; 
 int i; 
 
 /* ler 10 valores inteiros */ 
 for (i=0; i < 10; i++) 
 { 
 printf ("digite valor %d: ", i); 
 scanf ("%d", &v[i]); 
 } 
 
 /* varrer vetor e imprimir apenas os valores armazenados */ 
 /* acima de 100 */ 
 for (i=0; i < 10; i++) 
 { 
 if (v[i] > 100) 
 { 
 printf ("v[%d] possui valor %d\n", i, v[i]); 
 } 
 } 
 
 getch(); 
} 
 
EXERCÍCIOS 
 
1. Proponha um programa que declare um vetor de 5 posições de valores inteiros. Defina 
cada posição (elemento) do vetor com o valor 0. 
 
int main() 
{ 
 int v[5]; 
 int i; 
 
 for (i=0;i<=4;i++) 
 { 
 v[i]=0; 
 } 
 getch(); 
 } 
 
 
2. Proponha um programa que declare um vetor de 9 posições de valores inteiros. 
Associe 0 para a posição 0 do vetor, 1 para a posição 1 e assim por diante. Imprima o 
vetor na tela. 
 
int main() 
{ 
 int v[9]; 
 int i; 
 
 for (i=0;i<9;i++) 
 { 
 v[i]=i; 
 } 
 getch(); 
 } 
 
 
3. Explique o que faz o programa abaixo: 
 
int main() 
{ 
int v[5]; 
in i; 
 
v[0] = 10; 
for (i = 1; i < 5; i++) 
{ 
 v[i] = v[i-1] * 2; 
} 
} 
 
 
Programa que declara um vetor de 5 posições de valores inteiros e associa 10 para a posição 0 
do vetor, as próximas posições seguem a seguinte logica: a posição i vale o dobro da posição 
anterior a ela. 
 
4. Proponha um programa que declare um vetor de 26 posições do tipo char. Coloque a 
letra „A‟ na posição 0, „B‟ na posição 1, e assim por diante. Imprima o vetor na tela. 
 
int main() 
{ 
 char v[26]; 
 int i; 
 
 for (i=0;i<26;i++) 
 { 
 v[i]='A'+i; 
 printf("%c ", v[i]); 
 } 
 getch(); 
 } 
 
OUTRO JEITO DE FAZER 
 
int main() 
{ 
 char v[26]; 
 char i; 
 
 for (i='A';i<'Z';i++) 
 { 
 v[i-'A']=i; 
 printf("%c ", v[i-'A']); 
 } 
 getch(); 
 } 
 
 
5. Proponha um programa que declare um vetor de 10 posições de valores inteiros. Leia o 
valor a ser colocado em cada posição, calcule a média dos valores digitados e imprima 
a média na tela. 
 
int main() 
{ 
 int v[10]; 
 int i, soma; 
 
 soma=0; 
 
 for (i=0;i<10;i++) 
 { 
 scanf ("%d",&v[i]); //ler posição i do vetor 
 soma=soma+v[i]; // acrescenta em soma 
 } 
 printf("media = %f ", soma/10.0); // calcula a media 
 getch(); 
 } 
 
 
6. Proponha um programa que declare um vetor de 10 posições de valores inteiros. Leia 
do teclado um valor para cada posição do vetor. Imprima o vetor de trás para a frente. 
 
int main() 
{ 
 int v[10]; 
 int i; 
 
 for (i=0;i<10;i++) 
 { 
 scanf ("%d",&v[i]); 
 } 
 for (i=9;i>=0;i--) 
 { 
 printf("%d ",v[i]); 
 } 
 getch(); 
 } 
 
OUTRA FORMA 
 
int main() 
{ 
 int v[10]; 
 int i; 
 
 for (i=0;i<10;i++) 
 { 
 scanf ("%d",&v[i]); 
 } 
 
 for (i=0;i<10;i++) 
 { 
 printf("%d ",v[9-i]); 
 } 
 getch(); 
 } 
 
 
7. Declare um vetor de 10 valores inteiros chamado idade. Leia o valor de cada posição 
do vetor. Após isto, para cada posição, imprima “maior (>=18), menor(<18) ou idade 
inválida(<0)” conforme os valores presentes no vetor. 
 
 
int main() 
{ 
 int idade[10]; 
 int i; 
 
 for (i=0;i<10;i++) 
 { 
 scanf ("%d",&idade[i]); 
 if ( idade[i]>=18) printf(" maior \n"); 
 else if ( idade[i]<18 && idade[i]>=0) printf(" menor \n"); 
 else printf ("idade invalida \n"); 
 } 
 getch(); 
 } 
 
8. Escrever um programa que simule a leitura de uma senha. Neste tipo de leitura, não 
desejamos apresentar os caracteres digitados na tela. Desta forma, devemos utilizar a 
função getch() para ler cada caractere individualmente. A cada caractere digitado, o 
programa deve imprimir um asterisco na tela. A leitura da senha termina quando o 
usuário digitar ENTER. Neste momento, o programa deve imprimir na tela a senha 
digitada. 
 Atenção: A função getch() retorna o código do caractere digitado. Ex: char ch = getch(); 
 ENTER possui código numérico 13. 
 Não esqueça de colocar o zero no final do vetor de caracteres (string). 
 
int main() 
{ 
 char str_senha[500]; 
 char ch; 
 int i=0; 
 
 do{ 
 ch=getch(); 
 if (ch == 13) str_senha[i]=0; 
 else str_senha[i]=ch; 
 
 printf ("*"); 
 i++; 
 
 }while (ch != 13); 
 
 printf ("\n%s",str_senha); getch(); 
 } 
 
 
9. Escrever um programa que 
(a) leia um conjunto de 10 notas, armazenando-as em um vetor (ou arranjo), 
(b) calcule e imprima a sua média, 
(c) calcule e imprima o número de alunos com nota superior à média 
 
int main() 
{ 
 int nota[10]; 
 int i,x,z; 
 float media; 
 i=x=z=0; 
 
 do{ 
 printf ("digite a nota do aluno:"); 
 scanf ("%d",&nota[i]); 
 if (nota[i]>=6) x++; 
 z=z+nota[i]; 
 i++; 
 }while(i<10); 
 
 media=z/10.0; 
 printf ("%d alunos tiveram notas acima da média, a media de notas da classe foi %f", 
x,media); 
 getch(); 
 } 
 
 
10. Fazer um programa que 
(a) leia uma frase de até 80 caracteres, incluindo brancos, 
(b) conte e imprima quantos brancos existem na frase, 
(c) conte e imprima quantas vezes a letra A aparece. 
QUESTÃO ESPECIAL  conte e imprima quantas vezes aparece cada letra. 
 
int conta_car (char frase [80], char ch) 
 { 
 int i, x; 
 i=0; x=0; 
 
 while (frase[i] != 0) 
 { 
 if (toupper(frase[i])==toupper(ch)) x++; 
 i++; 
 } 
 return x; 
 } 
 
 
 
int main() 
{ 
 char frase[80]; 
 char ch; 
 
gets(frase); 
 
printf ("espacos: %d\n", conta_car(frase,' ')); 
 
 for (ch= 'A'; ch<='Z'; ch++) 
 { 
 printf ("%c: %d\t", ch, conta_car(frase,ch)); 
 } 
getch(); 
} 
 
 
11. Criar um algoritmo que leia o preço de compra e o preço de venda de dez mercadorias. 
O algoritmo deverá imprimir quantas mercadorias proporcionam: 
(a) lucro menor do que 10%, 
(b) lucro entre 10% e 20%, inclusive, e 
(c) lucro maior que 20% 
 
#define TAM 10 //serve pra caso eu queria mudar o tamanho do vetor, eu posso mudar com 
facilidade 
int main() 
{ 
 float c[TAM]; 
 float v[TAM]; 
 int i; 
 for (i=0;i<TAM;i++); 
 { 
 printf ("compra:"); 
 scanf("%f",&c[i]); 
 
 printf ("venda:"); 
 scanf("%f",&v[i]); 
 } 
 
 int c1, c2, c3; 
 c1=c2=c3=0; 
 
 for (i=0;i<TAM;i++); 
 { 
 if (v[i]/c[i] <1,1)c1++; 
 else if (v[i]/c[i] <=1,2)c2++; 
 else c3++; 
 } 
 printf ("%d %d %d\n", c1,c2,c3); 
 getch(); 
 } 
 
 
12. Criar um algoritmo que leia dois conjuntos de números inteiros, tendo cada um 10 e 20 
elementos, e apresentar os elementos que não são comuns aos dois conjuntos. 
 
 
int main() 
{ 
 int a[10]; 
 int b[20]; 
 int i,j,achou; 
 
 for (i=0;i<10;i++); 
 { 
 printf ("digite o primeiro conjunto de num inteiros "); 
 scanf ("%d",&a[i]); 
 } 
 
 for (j=0;j<20;j++);{ 
 printf ("digite o segundo conjunto de num inteiros "); 
 scanf ("%d",&b[j]); 
 } 
 for (i=0;i<10;i++); 
 { 
 for (j=0;j<10;j++); 
 { 
 if (a[i] == b[j]) achou=1; 
 } 
 if (achou==0) printf ("%d", a[i]); 
} 
getch(); 
} 
 
 
EXERCÍCIOS SOBRE STRINGS 
 
13. Declare uma string de tamanho 80 e inicialize-a com o valor “AEDS”. 
 
int main() 
{ 
 char s[80] = "AEDS"; 
} 
 
 
14. Apresente numericamente como esta string foi representada na memória. Consulte a 
tabela ASCII para saber o código de cada letra. 
 
65 69 68 xx (nao lembra) 00 
ou 'A' 'E' 'D' 'S' 0 
 
 
15. Para cada função abaixo apresente seus parâmetros de entrada, seu retorno e 
explique o que a função faz. 
 
a. Strlen - A função strlen (abreviatura de string length) recebe uma string e 
devolve o seu comprimento. 
b. Strcpy - A função strcpy (abreviatura de string copy) recebe duas strings 
e copia a segunda (inclusive o caractere nulo final) para o espaço ocupado 
para a primeira. O conteúdo original da primeira string é perdido. Antes de 
chamar a função, o programador deve certificar-se de que o espaço alocado 
para primeira string é suficiente para acomodar a cópia da segunda. 
c. Strncpy - função strncpy tem o mesmo comportamento da função strcpy, 
exceto por copiar até quantidade caracteres da string 
d. Strcat - A string origem é copiada para o final da string destino. 
e. Strstr - Para localizar uma substring dentro da string 
f. Strchr - Procura o caractere e retorna a primeira ocorrência. 
g. Memcpy – Copia o número especificado de dados a partir de uma determinada 
fonte para o destino requisitado. 
 
16. Proponha a implementação em código C para as funções strlen, strcpy, strcat, strncpy. 
 
STRLEN 
 
 int strlenn (char s[]) 
{ 
 int i=0; 
 while (s[i] !=0) i++; 
 
 return i; 
} 
 
int main() 
{ 
 int d; 
 d = strlenn ("teste"); 
 printf ("%d", d); 
 getch(); 
} 
 
STRCPY 
 
int strcpyy (char d[], char o[]) 
{ 
 int i; 
 
 i = 0; 
 while (o[i] != 0) 
 { 
 printf ("TRANSF. %c DA POSICAO %d de ORIG para DEST\n", o[i], i); 
 getch(); 
 d[i] = o[i]; 
 i++; 
 } 
 d[i] = 0; 
 return i; 
} 
 
int main() 
{ 
 char s1[80]; 
 char s2[100]; 
 
 strcpyy (s1, "casa"); 
 printf (s1); 
 getch(); 
} 
 
 
STRCAT 
 
int main () 
{ 
 char str1[100],str2[100]; 
 printf ("Entre com uma string: "); 
 gets (str1); 
 strcpy (str2,"Voce digitou a string "); 
 strcat (str2,str1); /* str2 armazenara' Voce digitou a string + o conteudo de str1 */ 
 printf ("\n\n%s",str2); 
 return(0); 
} 
 
 
STRNCPY 
 
int strncpyy (char d[], char o[], int n) 
{ 
 int i; 
 
 i = 0; 
 while (o[i] != 0 && i<n) 
 { 
 printf ("TRANSF. %c DA POSICAO %d de ORIG para DEST\n", o[i], i); 
 getch(); 
 d[i] = o[i]; 
 i++; 
 } 
 d[i] = 0; 
 return i; 
} 
 
int main() 
{ 
 char s1[80]; 
 
 strcpyy (s1, "teste",3); 
 printf (s1); 
 getch(); 
}

Continue navegando