Mudanças entre as edições de "AULA 9 - Programação 1 - Engenharia"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
(47 revisões intermediárias por 4 usuários não estão sendo mostradas)
Linha 1: Linha 1:
== AULA 9 - Vetores no C==
+
<blockquote style="background: #DCF4CC; border: 1px solid black; padding: 1em;">
 
+
<center>
===Objetivos===
+
=Objetivos=
  
 
O aluno deverá:
 
O aluno deverá:
Linha 8: Linha 8:
 
*definir e inicializar vetores do tipo int, float e double no C;
 
*definir e inicializar vetores do tipo int, float e double no C;
 
*passar vetores como parâmetro sem usar o conceito de ponteiros;
 
*passar vetores como parâmetro sem usar o conceito de ponteiros;
 +
*implementar algoritmos simples usando vetores.
 +
</center>
 +
</blockquote>
  
===ARRAYS UNIDIMENSIONAIS (VETORES)===
+
<blockquote style="background: #DCF4CC; border: 1px solid black; padding: 1em;">
  
Um vetor pode ser visto como uma variável que pode ser indexada e onde em cada posição existe um elemento do vetor. Os elementos do vetor possuem um tipo único. Uma boa analogia é comparar o vetor com uma tabela de tamanho fixo onde em cada linha pode ser armazenado um elemento.
+
=ARRAYS unidimensionais (vetores)=
 +
</blockquote>
  
PROBLEMA: Ler 10 números inteiros para um vetor de inteiros. Computar um segundo vetor que é o resultado da multiplicação por um escalar inteiro 5.
+
Um vetor pode ser visto como uma variável (uma caixa) dividida em partes menores (CAIXAS menores) acessadas por um índice (posição). Em termos mais técnicas cada elemento do vetor pode ser acessado através da indexação do vetor. Os elementos do vetor possuem um tipo único.  
  
DADO DE ENTRADA: Os 10 números armazenados em VET1
+
[[imagem:PRG1-vetor_armario.png|border|450px]]
  
DADO DE SAÍDA: VET2, o vetor resultado da multiplicação de VET1 por 5.
+
Uma boa analogia é comparar o vetor com uma tabela de tamanho fixo onde em cada linha pode ser armazenado um elemento.
  
 +
[[imagem:PRG1-tabela_vetor.png|border|250px]]
  
 +
PROBLEMA: Ler 5 números inteiros para um vetor de inteiros (VET1). Computar um segundo vetor (VET2) que é o resultado da multiplicação do primeiro vetor por um escalar inteiro 5.
  
[[imagem:ExplicacaoVetor1.jpg|border|750px]]
+
DADO DE ENTRADA: Os 5 números armazenados em VET1 (nome do vetor onde serão armazenados os dados)
  
Exercício 1: Implementar um algoritmo para ler 10 números inteiros para um vetor e imprimir o número de números acima da média. OBS: Definir um contador, iniciado em zero. Calcular a media e fazer um loop sobre o vetor testando cada item para
+
DADO DE SAÍDA: VET2, o vetor onde serão armazenados os resultados da multiplicação de cada elemento VET1 por 5.
verificar se é maior que a média.
 
  
===Definindo e usando vetores no C===
+
[[imagem:ExplicacaoVetor1.png|border|750px]]
  
 +
 +
 +
<blockquote style="background: #DCF4CC; border: 1px solid black; padding: 1em;">
 +
 +
=Definindo e usando vetores no C=
 +
</blockquote>
  
 
Um vetor pode ser facilmente definido no C da forma:
 
Um vetor pode ser facilmente definido no C da forma:
Linha 33: Linha 44:
 
  TipoVetor NomeDoVetor[dimensao];
 
  TipoVetor NomeDoVetor[dimensao];
  
O algoritmo do fluxograma implementado anteriormente ficaria da seguinte forma em C:
+
O algoritmo do fluxograma da multiplicação de um vetor por 5 implementado anteriormente ficaria da seguinte forma em C:
  
 
<syntaxhighlight lang=c>
 
<syntaxhighlight lang=c>
 
#include <stdio.h>
 
#include <stdio.h>
  
main()
+
int main()
 
{
 
{
 
   int vet1[5],vet2[5];
 
   int vet1[5],vet2[5];
Linha 52: Linha 63:
 
   for(i=0;i<5;i++)
 
   for(i=0;i<5;i++)
 
     printf("vet2[%d] => %d\n",i,vet2[i]);
 
     printf("vet2[%d] => %d\n",i,vet2[i]);
 +
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
Linha 78: Linha 90:
 
     i++;
 
     i++;
 
   }
 
   }
 +
  return 0;
 
}   
 
}   
 
</syntaxhighlight>
 
</syntaxhighlight>
  
  NOTA: vetores na Linguagem C começam SEMPRE na posição 0
+
<blockquote style="background: pink; border: 1px solid black; padding: 1em;">
 +
  NOTA: Um vetor de tamanho N, na Linguagem C, começa SEMPRE na posição 0 indo até a posição N-1
 +
</blockquote>
 +
 
 +
==Exercício de Fixação==
 +
 
 +
Implementar um programa C para ler 10 números inteiros para um vetor e imprimir o número de números acima da média.
 +
 
 +
OBS: Definir um contador, iniciado em zero. Ler os 10 números para um vetor e calcular a media.  Fazer um segundo loop sobre o vetor testando cada item para verificar se é maior que a média. Incrementar o contador a cada item acima da média.
 +
 
 +
Este problema exige que os dados sejam armazenados previamente de forma que a média calculada possa posteriormente ser usada para a computação
 +
da quantidade de números que estão acima da média.
 +
 
 +
DADOS DE ENTRADA: 10 números a serem fornecidos..
 +
DADOS DE SAÍDA: Quantidade de números acima da média.
  
===Iniciando vetores em C===
+
<blockquote style="background: #DCF4CC; border: 1px solid black; padding: 1em;">
 +
 
 +
=Iniciando vetores em C=
 +
</blockquote>
  
 
Pode-se iniciar um vetor da forma:
 
Pode-se iniciar um vetor da forma:
Linha 98: Linha 128:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
===Passando vetores como parâmetros===
+
<blockquote style="background: #DCF4CC; border: 1px solid black; padding: 1em;">
 +
=Passando vetores como parâmetros=
 +
</blockquote>
 +
 
  
 
Vetores não são copiados na passagem por parâmetro. Eles são passados sempre como referência. Veja o exemplo a seguir:
 
Vetores não são copiados na passagem por parâmetro. Eles são passados sempre como referência. Veja o exemplo a seguir:
Linha 115: Linha 148:
 
}
 
}
  
main()
+
int main()
 
{
 
{
 
   int vet[5], i;
 
   int vet[5], i;
Linha 122: Linha 155:
 
   for (i=0;i<5;i++)
 
   for (i=0;i<5;i++)
 
       printf("vet[%d]=%d\n",i,vet[i]);
 
       printf("vet[%d]=%d\n",i,vet[i]);
 +
 +
  return 0;
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Note como é realizada a declaração de parâmetros que são vetores. Observe no exemplo, que o vetor aux é na realidade o próprio vetor vet. Inicialmente dados são lidos para aux e depois vet é impresso.
+
<blockquote style="background: pink; border: 1px solid black; padding: 1em;">
 +
Note como é realizada a declaração de parâmetros que são vetores. Observe no exemplo, que o vetor ''aux'', durante a execução da função ler_vet é na realidade o próprio vetor ''vet''. Inicialmente dados são lidos para ''aux'' e depois ''vet'' é impresso.
  
 
Não é obrigatório definir o tamanho do vetor na declaração de parâmetros. Na realidade o C não verifica o acesso indevido a um elemento fora do tamanho do vetor.
 
Não é obrigatório definir o tamanho do vetor na declaração de parâmetros. Na realidade o C não verifica o acesso indevido a um elemento fora do tamanho do vetor.
 +
</blockquote>
  
===Exercícios ===
+
=Exercícios=
  
 
<ol>
 
<ol>
 
<li>
 
<li>
 
Implementar um programa em C para ler 10 números reais (float) para um vetor. Usar o comando ''while''.
 
Implementar um programa em C para ler 10 números reais (float) para um vetor. Usar o comando ''while''.
<--
+
 
{{collapse top|Solução - Exercício 01}}<syntaxhighlight lang=c>
+
{{collapse top|Solução - Exercício 01}}
 +
<syntaxhighlight lang=c>
 
//Autor: Victor Cesconetto De Pieri
 
//Autor: Victor Cesconetto De Pieri
  
Linha 154: Linha 192:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
{{collapse bottom}}
 
{{collapse bottom}}
-->
+
 
 
</li>
 
</li>
 
<li>
 
<li>
 
Modificar o exercício para computar a média dos 10 números que estão no vetor.  
 
Modificar o exercício para computar a média dos 10 números que estão no vetor.  
 
</li>
 
</li>
<!--
+
 
{{collapse top|Solução - Exercício 02}}<syntaxhighlight lang=c>
+
{{collapse top|Solução - Exercício 02}}
 +
<syntaxhighlight lang=c>
 
//Autor: Victor Cesconetto De Pieri
 
//Autor: Victor Cesconetto De Pieri
  
Linha 187: Linha 226:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
{{collapse bottom}}
 
{{collapse bottom}}
-->
+
 
 
<li>
 
<li>
 
Modificar o exercício anterior para computar a quantidade de números do vetor que estão acima da média.
 
Modificar o exercício anterior para computar a quantidade de números do vetor que estão acima da média.
<!--
+
 
{{collapse top|Solução - Exercício 03}}<syntaxhighlight lang=c>
+
{{collapse top|Solução - Exercício 03}}
 +
<syntaxhighlight lang=c>
 
//Autor: Victor Cesconetto De Pieri
 
//Autor: Victor Cesconetto De Pieri
  
Linha 227: Linha 267:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
{{collapse bottom}}
 
{{collapse bottom}}
-->
+
 
 
</li>
 
</li>
 
<li>
 
<li>
 
Refazer os exercícios anteriores usando o comando 'for'.
 
Refazer os exercícios anteriores usando o comando 'for'.
 
</li>
 
</li>
<!--
+
 
{{collapse top|Solução - Exercício 04}}<syntaxhighlight lang=c>
+
{{collapse top|Solução - Exercício 04}}
 +
<syntaxhighlight lang=c>
  
 
#include <stdio.h>
 
#include <stdio.h>
Linha 305: Linha 346:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
{{collapse bottom}}
 
{{collapse bottom}}
-->
+
 
 
<li>
 
<li>
 
Refazer o exercício anterior criando uma função onde o vetor é passado como parâmetro e o número de elementos maiores que a média é retornado. Considere o vetor de tamanho 10.
 
Refazer o exercício anterior criando uma função onde o vetor é passado como parâmetro e o número de elementos maiores que a média é retornado. Considere o vetor de tamanho 10.
{{collapse top|Solução - Exercicio 05}}<syntaxhighlight lang=c>
+
 
 +
{{collapse top|Solução - Exercício 05}}
 +
<syntaxhighlight lang=c>
 
//Autor: Victor Cesconetto De Pieri
 
//Autor: Victor Cesconetto De Pieri
  
Linha 315: Linha 358:
 
int num_acima_media(float x[10])
 
int num_acima_media(float x[10])
 
{
 
{
 
float soma = 0, media;
 
int i, cont;
 
 
/* leitura do vetor */
 
for (i=0;i<10;i++) {
 
printf("Entre com x[%d] -> ", i);
 
scanf("%f",&x[i]);
 
soma = soma + x[i];
 
  
}
+
    float soma = 0, media;
+
    int i, cont;
/* calculo da media */
+
 
media = soma /10;
+
    /* leitura do vetor */
+
    for (i=0;i<10;i++) {
/* computação de números acima da média */
+
        soma = soma + x[i];
cont = 0;
+
 
for (i=0;i<10;i++) {
+
    }
if (x[i] > media)  
+
 
          cont++;
+
    /* calculo da media */
}
+
    media = soma /10;
return cont;
+
 
 +
    /* computação de números acima da média */
 +
    cont = 0;
 +
    for (i=0;i<10;i++) {
 +
        if (x[i] > media)
 +
            cont++;
 +
    }
 +
    return cont;
 
}
 
}
  
main()
+
int main()
{  
+
{
float vet[10];
+
    float vet[10];
int nums;
+
    int i, nums;
 +
 
 +
    /* leitura do vetor */
 +
    for (i=0;i<10;i++) {
 +
        printf("Entre com vet[%d] -> ", i);
 +
        scanf("%f",&vet[i]);
 +
 
 +
    }
  
nums=num_acima_media(vet);
+
    nums=num_acima_media(vet);
printf("Números lidos em vet que estão acima da média = %d\n", nums);
+
    printf("Números lidos em vet que estão acima da média = %d\n", nums);
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
 
{{collapse bottom}}
 
{{collapse bottom}}
 +
 
</li>
 
</li>
 
<li>
 
<li>
 
Considere um vetor global de ''int'' chamado ''vetRnd'' de tamanho 100. Construa uma função que inicia este vetor com 100 números randômicos entre 1 e 6.  
 
Considere um vetor global de ''int'' chamado ''vetRnd'' de tamanho 100. Construa uma função que inicia este vetor com 100 números randômicos entre 1 e 6.  
 
</li>
 
</li>
{{collapse top|Solução - Exercicio 06}}<syntaxhighlight lang=c>
+
 
 +
{{collapse top|Solução - Exercício 06}}
 +
<syntaxhighlight lang=c>
 
//Autor: Victor Cesconetto De Pieri
 
//Autor: Victor Cesconetto De Pieri
  
Linha 382: Linha 433:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
{{collapse bottom}}
 
{{collapse bottom}}
 +
 
<li>
 
<li>
 
Sobre o exercício anterior, acrescente uma função para imprimir o número de 1s,...6s do vetor.
 
Sobre o exercício anterior, acrescente uma função para imprimir o número de 1s,...6s do vetor.
{{collapse top|Solução - Exercicio 07}}<syntaxhighlight lang=c>
+
 
 +
{{collapse top|Solução - Exercício 07}}
 +
<syntaxhighlight lang=c>
 
//Autor: Victor Cesconetto De Pieri
 
//Autor: Victor Cesconetto De Pieri
  
Linha 416: Linha 470:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
{{collapse bottom}}
 
{{collapse bottom}}
 +
 
</li>
 
</li>
 
<li>
 
<li>
Linha 427: Linha 482:
 
}
 
}
 
</syntaxhighlight>  
 
</syntaxhighlight>  
{{collapse top|Solução - Exercicio 08}}<syntaxhighlight lang=c>
 
//Autor: Victor Cesconetto De Pieri
 
  
 +
Exemplo: Para os vetores x[]={1,1,3,4,5} e y[]={1,2,3,3,5} temos três elementos iguais (nas posições 0, 2 e 4).
 +
 +
{{collapse top|Solução - Exercício 08}}
 +
<syntaxhighlight lang=c>
 
#include<stdio.h>
 
#include<stdio.h>
 
  
 
int compara_vetores(int vet1[],int vet2[], int tamanho)
 
int compara_vetores(int vet1[],int vet2[], int tamanho)
Linha 441: Linha 497:
 
if(vet1[i]==vet2[j]){
 
if(vet1[i]==vet2[j]){
 
num_elementos++;
 
num_elementos++;
break;//quando acha o primeiro elemento igual, passa para o proximo
+
break;//quando acha o primeiro elemento igual, passa para o próximo
 
}
 
}
 
}
 
}
Linha 473: Linha 529:
  
 
}
 
}
</syntaxhighlight>{{collapse bottom}}
+
</syntaxhighlight>
Exemplo: Para os vetores x[]={1,1,3,4,5} e y[]={1,2,3,3,5} temos três elementos iguais (nas posições 0, 2 e 4).
+
{{collapse bottom}}
 +
</li>
 +
</ol>
 +
 
 +
=DESAFIOS=
 +
 
 +
<ol>
 +
<li>
 +
Faça um uma função C para computar e retornar o desvio padrão <math>\sigma</math> de uma população representada por um vetor de reais.
 +
Dois parâmetros serão passados: o vetor e o tamanho do vetor.
 +
 
 +
  Usar:<br />
 +
 
 +
<math>\sigma = \sqrt{\frac{1}{N} \sum_{i=1}^N (x_i - \mu)^2}</math> (extraído da wikipedia [https://pt.wikipedia.org/wiki/Desvio_padr%C3%A3o])<br />
 +
 
 +
<math>\mu  = \frac{1}{N} \sum_{i=1}^N x_i</math> (extraído da wikipedia [https://pt.wikipedia.org/wiki/Desvio_padr%C3%A3o])<br />
 +
 
 +
SUGESTÃO: computar primeiramente a média <math>\mu</math>
 +
 
 +
OBS: Notar que o desvio padrão acima é de uma população. O desvio padrão  <math>S</math> de uma amostrausa a divisão por <math>N-1</math>. Uma discussão para a dsiciplina da estatística.
 +
Para resolução deste exercício deve-se usar uma função de raiz quadrada (ver https://en.cppreference.com/w/c/numeric/math/sqrt)
 
</li>
 
</li>
 
</ol>
 
</ol>

Edição das 16h22min de 12 de julho de 2021

Objetivos

O aluno deverá:

  • compreender o conceito de vetores;
  • definir e inicializar vetores do tipo int, float e double no C;
  • passar vetores como parâmetro sem usar o conceito de ponteiros;
  • implementar algoritmos simples usando vetores.

ARRAYS unidimensionais (vetores)

Um vetor pode ser visto como uma variável (uma caixa) dividida em partes menores (CAIXAS menores) acessadas por um índice (posição). Em termos mais técnicas cada elemento do vetor pode ser acessado através da indexação do vetor. Os elementos do vetor possuem um tipo único.

PRG1-vetor armario.png

Uma boa analogia é comparar o vetor com uma tabela de tamanho fixo onde em cada linha pode ser armazenado um elemento.

PRG1-tabela vetor.png

PROBLEMA: Ler 5 números inteiros para um vetor de inteiros (VET1). Computar um segundo vetor (VET2) que é o resultado da multiplicação do primeiro vetor por um escalar inteiro 5.

DADO DE ENTRADA: Os 5 números armazenados em VET1 (nome do vetor onde serão armazenados os dados)

DADO DE SAÍDA: VET2, o vetor onde serão armazenados os resultados da multiplicação de cada elemento VET1 por 5.

750px


Definindo e usando vetores no C

Um vetor pode ser facilmente definido no C da forma:

TipoVetor NomeDoVetor[dimensao];

O algoritmo do fluxograma da multiplicação de um vetor por 5 implementado anteriormente ficaria da seguinte forma em C:

#include <stdio.h>

int main()
{
  int vet1[5],vet2[5];
  int i;

  /* ler da entrada padrão e colocar dados no vetor 1. Multiplicar valor lido por 5 e colocar no vetor 2*/
  for(i=0;i<5;i++) {
     printf("Entre com vet[%d] => ",i);
     scanf("%d",&vet1[i]);
     vet2[i]=vet1[i]*5;
  }
  /* para conferir- vamos imprimir o conteúdo de vet2 */
  for(i=0;i<5;i++)
     printf("vet2[%d] => %d\n",i,vet2[i]);

}

Vamos a um exemplo que mostra as possibilidades de acesso a um vetor:

main()
{
  float x[10]; /* vetor com 10 floats */
  int i;

  x[0] = 22.5; /* colocando a constante 22.5 na posição 0 do vetor */

  x[9] = x[0] + 2.5; /* operando com a posição zero e colocando resultado na posição 9 */

  printf("Entrar com o número na posição 5\n");
  scanf("%f",&x[5]);

  i=2;
  x[i*2]=x[i]*1.5;        /* usando uma expressão como índice */
  
  i=0;
  while (i<8) {        /* usando loop para acessar o vetor */
     x[i]=0.0;
     i++;
  }
  return 0;
}

NOTA: Um vetor de tamanho N, na Linguagem C, começa SEMPRE na posição 0 indo até a posição N-1

Exercício de Fixação

Implementar um programa C para ler 10 números inteiros para um vetor e imprimir o número de números acima da média.

OBS: Definir um contador, iniciado em zero. Ler os 10 números para um vetor e calcular a media. Fazer um segundo loop sobre o vetor testando cada item para verificar se é maior que a média. Incrementar o contador a cada item acima da média.

Este problema exige que os dados sejam armazenados previamente de forma que a média calculada possa posteriormente ser usada para a computação da quantidade de números que estão acima da média.

DADOS DE ENTRADA: 10 números a serem fornecidos.. DADOS DE SAÍDA: Quantidade de números acima da média.

Iniciando vetores em C

Pode-se iniciar um vetor da forma:

#include <stdio.h>

void main()
{
  int x[10] = {2,4,7,-5,3,2,3,4,9,10};

  printf("%d\n", x[2]);
}

Passando vetores como parâmetros


Vetores não são copiados na passagem por parâmetro. Eles são passados sempre como referência. Veja o exemplo a seguir:

#include <stdio.h>

void ler_vet(int aux[5])
{
  int i;

  for (i=0;i<5;i++) {
     printf("aux[%d] <== ",i);
     scanf("%d",&aux[i]);
  } 
}

int main()
{
   int vet[5], i;

   ler_vet(vet);
   for (i=0;i<5;i++)
      printf("vet[%d]=%d\n",i,vet[i]);

   return 0;
}

Note como é realizada a declaração de parâmetros que são vetores. Observe no exemplo, que o vetor aux, durante a execução da função ler_vet é na realidade o próprio vetor vet. Inicialmente dados são lidos para aux e depois vet é impresso.

Não é obrigatório definir o tamanho do vetor na declaração de parâmetros. Na realidade o C não verifica o acesso indevido a um elemento fora do tamanho do vetor.

Exercícios

  1. Implementar um programa em C para ler 10 números reais (float) para um vetor. Usar o comando while.
    Solução - Exercício 01
    //Autor: Victor Cesconetto De Pieri
    
    #include <stdio.h>
    
    main()
    {
    	float x[10];
    	int i;
    
     	i=0;
     	while (i<10) {//while varre da posicao 0 a posicao 9 do vetor
    		printf("Entre com x[%d] -> ", i);
    		scanf("%f",&x[i]);
     		i++;
    	}	
    }
    
  2. Modificar o exercício para computar a média dos 10 números que estão no vetor.
  3. Solução - Exercício 02
    //Autor: Victor Cesconetto De Pieri
    
    #include <stdio.h>
     
     
    main()
    {
    	float x[10];
    	float soma = 0, media; 
    	int i, cont;
     
    	/* leitura do vetor */
     	i=0;
     	while (i<10) {
    		printf("Entre com x[%d] -> ", i);
    		scanf("%f",&x[i]);
    		soma = soma + x[i];
     		i++;
    	}	
     
    	/* calculo da media */
    	media = soma /10;
            printf("media: %f\n",media);
    }
    
  4. Modificar o exercício anterior para computar a quantidade de números do vetor que estão acima da média.
    Solução - Exercício 03
    //Autor: Victor Cesconetto De Pieri
    
    #include <stdio.h>
    
    
    main()
    {
    	float x[10];
    	float soma = 0, media; 
    	int i, cont;
     
    	/* leitura do vetor */
     	i=0;
     	while (i<10) {
    		printf("Entre com x[%d] -> ", i);
    		scanf("%f",&x[i]);
    		soma = soma + x[i];
     		i++;
    	}	
       
    	/* calculo da media */
    	media = soma /10;
    
    	/* computação de números acima da média */
    	cont = 0;
     	i=0;
     	while (i<10) {
    		if (x[i] > media) 
    	           cont++;
    		i++;
    	}	
    	printf ("Número de números acima da média = %d\n", cont);
    }
    
  5. Refazer os exercícios anteriores usando o comando 'for'.
  6. Solução - Exercício 04
    #include <stdio.h>
    //exercicio01 
    main()
    {
    	float x[10];
    	int i;
     
     	
     	for (i=0;i<10;i++) {//while varre da posicao 0 a posicao 9 do vetor
    		printf("Entre com x[%d] -> ", i);
    		scanf("%f",&x[i]);
     	}	
    }
    
    //exercicio 02
    
    #include <stdio.h>
     
     
    main()
    {
    	float x[10];
    	float soma = 0, media; 
    	int i, cont;
     
    	/* leitura do vetor */
     	for(i=0;i<10;i++) {
    		printf("Entre com x[%d] -> ", i);
    		scanf("%f",&x[i]);
    		soma = soma + x[i];
     	}	
     
    	/* calculo da media */
    	media = soma /10;
        printf("media %f\n",media)
    }
    
    //exercicio 03
    
    
    #include <stdio.h>
     
     
    main()
    {
    	float x[10];
    	float soma = 0, media; 
    	int i, cont;
     
    	/* leitura do vetor */
     	
     	for(i=0;i<10;i++) {
    		printf("Entre com x[%d] -> ", i);
    		scanf("%f",&x[i]);
    		soma = soma + x[i];
     	}	
     
    	/* calculo da media */
    	media = soma /10;
     
    	/* computação de números acima da média */
    	cont = 0;
     	for(i=0;i<10;i++) {
    		if (x[i] > media) 
    	           cont++;
    	}	
    	printf ("Número de números acima da média = %d\n", cont);
    }
    
  7. Refazer o exercício anterior criando uma função onde o vetor é passado como parâmetro e o número de elementos maiores que a média é retornado. Considere o vetor de tamanho 10.
    Solução - Exercício 05
    //Autor: Victor Cesconetto De Pieri
    
    #include <stdio.h>
    
    int num_acima_media(float x[10])
    {
    
        float soma = 0, media;
        int i, cont;
    
        /* leitura do vetor */
        for (i=0;i<10;i++) {
            soma = soma + x[i];
    
        }
    
        /* calculo da media */
        media = soma /10;
    
        /* computação de números acima da média */
        cont = 0;
        for (i=0;i<10;i++) {
            if (x[i] > media)
                cont++;
        }
        return cont;
    }
    
    int main()
    {
        float vet[10];
        int i, nums;
    
        /* leitura do vetor */
        for (i=0;i<10;i++) {
            printf("Entre com vet[%d] -> ", i);
            scanf("%f",&vet[i]);
    
        }
    
        nums=num_acima_media(vet);
        printf("Números lidos em vet que estão acima da média = %d\n", nums);
    }
    
  8. Considere um vetor global de int chamado vetRnd de tamanho 100. Construa uma função que inicia este vetor com 100 números randômicos entre 1 e 6.
  9. Solução - Exercício 06
    //Autor: Victor Cesconetto De Pieri
    
    #include <stdio.h>
     
    #define TAM 100
     
    int vetRnd[TAM];
     
    void gerar_randomico()
    {
          int count[6]={0,0,0,0,0,0}, i;
     
          srand ( time(NULL) );
     
          for (i=0;i<TAM;i++) {
              vetRnd[i] = rand() % 6 + 1;
              printf("%d ", vetRnd[i]); 
              count[vetRnd[i]-1]++;
          }
          
    }
     
    main()
    {
          gerar_randomico();
    }
    
  10. Sobre o exercício anterior, acrescente uma função para imprimir o número de 1s,...6s do vetor.
    Solução - Exercício 07
    //Autor: Victor Cesconetto De Pieri
    
    #include <stdio.h>
    
    #define TAM 100
    
    int vetRnd[TAM];
     
    void gerar_randomico()
    {
          int count[6]={0,0,0,0,0,0}, i;
     
          srand ( time(NULL) );
     
          for (i=0;i<TAM;i++) {
              vetRnd[i] = rand() % 6 + 1;
              printf("%d ", vetRnd[i]); 
              count[vetRnd[i]-1]++;
          }
          printf("\n");
          for(i=0;i<6;i++)
              printf("Quantidade de %d é %d\n", i+1, count[i]);
     
    }
    
    main()
    {
          gerar_randomico();
    }
    
  11. Implementar uma função que recebe dois vetores de inteiros como parâmetro e o tamanho dos mesmos (suponha vetores de mesmo tamanho). A função deve retornar o número de elementos iguais comparados posição por posição. O esqueleto da função deve ser como: int compara_vetores(int vet1[],int vet2[], int tamanho) { int num_elementos; return num_elementos; } </syntaxhighlight> Exemplo: Para os vetores x[]={1,1,3,4,5} e y[]={1,2,3,3,5} temos três elementos iguais (nas posições 0, 2 e 4).
    Solução - Exercício 08
    #include<stdio.h>
    
    int compara_vetores(int vet1[],int vet2[], int tamanho)
    {
      int num_elementos;
      int i, j;
     	for(i=0;i<tamanho;i++){
    		for(j=0;j<tamanho;j++){
    			if(vet1[i]==vet2[j]){
    				num_elementos++;
    				break;//quando acha o primeiro elemento igual, passa para o próximo
    			}
    		}
        }	
      return num_elementos;
    }
    
    main(){
    
    int num_elementos,tam;
    int i;
    
    printf("Digite o tamanho dos dois vetores:\n");
    scanf("%d",&tam);
    
    int x[tam],y[tam];
    
    	for(i=0;i<tam;i++){
    		printf("Entre com x[%d] -> ", i);
    		scanf("%d",&x[i]);	
    		
    	}
    	for(i=0;i<tam;i++){
    		printf("Entre com y[%d] -> ", i);
    		scanf("%d",&y[i]);	
    	}
    
    num_elementos = compara_vetores(x,y,tam);
    printf("Há %d elementos iguais\n",num_elementos);
    
    
    }
    

DESAFIOS

  1. Faça um uma função C para computar e retornar o desvio padrão de uma população representada por um vetor de reais. Dois parâmetros serão passados: o vetor e o tamanho do vetor. Usar:
    (extraído da wikipedia [1])
    (extraído da wikipedia [2])
    SUGESTÃO: computar primeiramente a média OBS: Notar que o desvio padrão acima é de uma população. O desvio padrão de uma amostrausa a divisão por . Uma discussão para a dsiciplina da estatística. Para resolução deste exercício deve-se usar uma função de raiz quadrada (ver https://en.cppreference.com/w/c/numeric/math/sqrt)