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
(34 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 17: Linha 17:
 
</blockquote>
 
</blockquote>
  
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.  
+
Um vetor pode ser visto como uma variável (uma caixa) dividida em partes menores (CAIXAS menores) acessadas por um índice (posição). Podemos dizer que cada elemento do vetor pode ser acessado através da indexação do vetor. Os elementos do vetor possuem um tipo único.  
  
 
[[imagem:PRG1-vetor_armario.png|border|450px]]
 
[[imagem:PRG1-vetor_armario.png|border|450px]]
Linha 27: Linha 27:
 
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.
 
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 ENTRADA: Os 5 números a serem 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.
 
DADO DE SAÍDA: VET2, o vetor onde serão armazenados os resultados da multiplicação de cada elemento VET1 por 5.
  
[[imagem:ExplicacaoVetor1.png|border|750px]]
+
[[imagem:ExplicacaoVetor1-Va.png|border|850px]]
  
  
Linha 42: Linha 42:
 
Um vetor pode ser facilmente definido no C da forma:
 
Um vetor pode ser facilmente definido no C da forma:
  
  TipoVetor NomeDoVetor[dimensao];
+
  tipo_vetor nome_do_vetor[dimensao];
  
 
O algoritmo do fluxograma da multiplicação de um vetor por 5 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:
Linha 49: Linha 49:
 
#include <stdio.h>
 
#include <stdio.h>
  
main()
+
int main()
 
{
 
{
 
   int vet1[5],vet2[5];
 
   int vet1[5],vet2[5];
Linha 63: 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 89: Linha 90:
 
     i++;
 
     i++;
 
   }
 
   }
 +
  return 0;
 
}   
 
}   
 
</syntaxhighlight>
 
</syntaxhighlight>
Linha 98: Linha 100:
 
==Exercício de Fixação==  
 
==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.  
+
Implementar um programa C para ler 10 números inteiros para um vetor e imprimir a quantidade (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.
 
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
+
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.  
 
da quantidade de números que estão acima da média.  
  
DADOS DE ENTRADA: 10 números a serem fornecidos..
+
*DADOS DE ENTRADA: 10 números a serem fornecidos.
DADOS DE SAÍDA: Quantidade de números acima da média.
+
*DADOS DE SAÍDA: Quantidade de números acima da média.
  
 
<blockquote style="background: #DCF4CC; border: 1px solid black; padding: 1em;">
 
<blockquote style="background: #DCF4CC; border: 1px solid black; padding: 1em;">
Linha 146: Linha 148:
 
}
 
}
  
main()
+
int main()
 
{
 
{
 
   int vet[5], i;
 
   int vet[5], i;
Linha 153: 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>
Linha 165: Linha 169:
  
 
<ol>
 
<ol>
 +
<li>
 +
Implementar uma função para realizar o produto escalar de 2 vetores de dimensão n. A função deve retornar o produto.
 +
</li>
 +
<li>
 +
Implementar uma função que troca os valores de dois vetores de dimensão 5. Siga o esqueleto abaixo. Implemente também uma função que imprime um vetor de dimensão 5. Use esta função para testar.
 +
 +
<syntaxhighlight lang=c>
 +
#include <stdio.h>
 +
 +
void troca_vetor(int a[5], int b[5])
 +
{
 +
 +
    return;
 +
}
 +
 +
void imprime_vetor(int a[5])
 +
{
 +
    int i;
 +
    for (i = 0; i < 5; i++) {
 +
        printf("vet[%d] => %d\n", i, a[i]);
 +
    }
 +
    printf("\n");
 +
    return;
 +
}
 +
 +
int main()
 +
{
 +
    int x[5] = {3, 9, 7, 0, 2},
 +
        y[5] = {10,11,0,3,7};
 +
 +
    troca_vetor (x , y);
 +
    imprime_vetor (x);
 +
 +
    return 0;
 +
}
 +
</syntaxhighlight>
 +
</li>
 +
 +
<li>
 +
Modificar a função anterior para que ela possa funcionar para quaisquer dimensão dos vetores. Siga o exemplo da função imprime_vetor() abaixo.
 +
<syntaxhighlight lang=c>
 +
#include <stdio.h>
 +
 +
void troca_vetor(int a[], int b[], int tamanho)
 +
{
 +
 +
    return;
 +
}
 +
 +
void imprime_vetor(int a[], int tamanho)
 +
{
 +
    int i;
 +
    for (i = 0; i < tamanho; i++) {
 +
        printf("vet[%d] => %d\n", i, a[i]);
 +
    }
 +
    printf("\n");
 +
    return;
 +
}
 +
 +
int main()
 +
{
 +
    int x[5] = {3, 9, 7, 0, 2},
 +
        y[5] = {10,11,0,3,7};
 +
 +
    troca_vetor (x , y, 5);
 +
    imprime_vetor (x, 5);
 +
 +
    return 0;
 +
}
 +
</syntaxhighlight>
 +
 +
</li>
 
<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''.
Linha 174: Linha 250:
 
#include <stdio.h>
 
#include <stdio.h>
  
main()
+
int main()
 
{
 
{
 
float x[10];
 
float x[10];
Linha 184: Linha 260:
 
scanf("%f",&x[i]);
 
scanf("%f",&x[i]);
 
  i++;
 
  i++;
}
+
}
 +
return 0;
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
Linha 201: Linha 278:
 
   
 
   
 
   
 
   
main()
+
int main()
 
{
 
{
 
float x[10];
 
float x[10];
Linha 344: Linha 421:
  
 
<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 N, a ser fornecido como parâmetro.
  
 
{{collapse top|Solução - Exercício 05}}
 
{{collapse top|Solução - Exercício 05}}
 +
 
<syntaxhighlight lang=c>
 
<syntaxhighlight lang=c>
//Autor: Victor Cesconetto De Pieri
 
 
 
#include <stdio.h>
 
#include <stdio.h>
  
int num_acima_media(float x[10])
+
int computar_num_acima_media(float x[], int n)
 
{
 
{
 
    float soma = 0, media;
 
 
     int i, cont;
 
     int i, cont;
 +
    float soma, media;
  
 
     /* leitura do vetor */
 
     /* leitura do vetor */
     for (i=0;i<10;i++) {
+
     i=0;
 +
    while (i<n) {
 
         soma = soma + x[i];
 
         soma = soma + x[i];
 
+
        i++;
 
     }
 
     }
  
 
     /* calculo da media */
 
     /* calculo da media */
     media = soma /10;
+
     media = soma /n;
  
 
     /* computação de números acima da média */
 
     /* computação de números acima da média */
 
     cont = 0;
 
     cont = 0;
     for (i=0;i<10;i++) {
+
     i=0;
 +
    while (i<n) {
 
         if (x[i] > media)
 
         if (x[i] > media)
 
             cont++;
 
             cont++;
 +
        i++;
 
     }
 
     }
 
     return cont;
 
     return cont;
Linha 378: Linha 456:
 
int main()
 
int main()
 
{
 
{
     float vet[10];
+
float delta[5]={1,-3,9.2,1.5,1.7};
     int i, nums;
+
     float beta[7]={3.6,2.9,1,-3,9.2,1.5,1.7};
 +
    float alfa[2]={1.5,1.7};
 +
     int quant;
  
     /* leitura do vetor */
+
     quant = computar_num_acima_media(delta, 5);
     for (i=0;i<10;i++) {
+
     quant = computar_num_acima_media(beta, 7);
        printf("Entre com vet[%d] -> ", i);
+
    quant = computar_num_acima_media(alfa, 2);
        scanf("%f",&vet[i]);
 
  
     }
+
     return 0;
 
 
    nums=num_acima_media(vet);
 
    printf("Números lidos em vet que estão acima da média = %d\n", nums);
 
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 
{{collapse bottom}}
 
{{collapse bottom}}
  
Linha 470: Linha 547:
 
<li>
 
<li>
 
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:
 
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:
<code>
+
<syntaxhighlight lang=c>
 
int compara_vetores(int vet1[],int vet2[], int tamanho)
 
int compara_vetores(int vet1[],int vet2[], int tamanho)
 
{
 
{
Linha 479: Linha 556:
 
</syntaxhighlight>  
 
</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).
+
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). A função deve retornar o valor 3, neste caso.
  
 
{{collapse top|Solução - Exercício 08}}
 
{{collapse top|Solução - Exercício 08}}
 +
<!--
 
<syntaxhighlight lang=c>
 
<syntaxhighlight lang=c>
 
#include<stdio.h>
 
#include<stdio.h>
Linha 526: Linha 604:
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
-->
 
{{collapse bottom}}
 
{{collapse bottom}}
 +
</li>
 +
<li>
 +
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 independente de posição. Usar o comando ''for'' e ''break''.
 +
<syntaxhighlight lang=c>
 +
int retorna_quantidade_elementos_iguais(int vet1[],int vet2[], int tamanho)
 +
{
 +
  int num_elementos;
 +
 +
  return num_elementos;
 +
}
 +
</syntaxhighlight>
 +
 +
{{collapse top|Solução - Exercício 09}}
 +
<syntaxhighlight lang=c>
 +
int retorna_quantidade_elementos_iguais(int vet1[],int vet2[], int tamanho) {
 +
    int num_elementos;
 +
    int i, j, k;
 +
 +
    for (i = 0; i < tamanho; i++){
 +
        for (j = 0; j < tamanho; j++) {
 +
            /* testar se vet1[i] já foi testado anteriormente */
 +
            for (k=0;k<i;k++)
 +
                if (vet1[i]==vet1[k])
 +
                    break;
 +
            if k<i)
 +
              break;
 +
            /* testar se vet1[i] está  vet[2] */
 +
            if( vet1[i] == vet2[j]) {
 +
                num_elementos++;
 +
                break;
 +
            }
 +
        }
 +
    }
 +
    return num_elementos;
 +
}
 +
 +
int main()
 +
{
 +
    /* testar a função aqui!!! */
 +
    return 0;
 +
}
 +
</syntaxhighlight>
 +
{{collapse bottom}}
 +
 
</li>
 
</li>
 
</ol>
 
</ol>

Edição das 08h05min de 26 de outubro de 2022

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). Podemos dizer que 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 a serem 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.

ExplicacaoVetor1-Va.png


Definindo e usando vetores no C

Um vetor pode ser facilmente definido no C da forma:

tipo_vetor nome_do_vetor[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 a quantidade (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 uma função para realizar o produto escalar de 2 vetores de dimensão n. A função deve retornar o produto.
  2. Implementar uma função que troca os valores de dois vetores de dimensão 5. Siga o esqueleto abaixo. Implemente também uma função que imprime um vetor de dimensão 5. Use esta função para testar.
    #include <stdio.h>
    
    void troca_vetor(int a[5], int b[5])
    {
    
        return;
    }
    
    void imprime_vetor(int a[5])
    {
        int i;
        for (i = 0; i < 5; i++) {
            printf("vet[%d] => %d\n", i, a[i]);
        }
        printf("\n");
        return;
    }
    
    int main()
    {
        int x[5] = {3, 9, 7, 0, 2},
            y[5] = {10,11,0,3,7};
    
        troca_vetor (x , y);
        imprime_vetor (x);
    
        return 0;
    }
    
  3. Modificar a função anterior para que ela possa funcionar para quaisquer dimensão dos vetores. Siga o exemplo da função imprime_vetor() abaixo.
    #include <stdio.h>
    
    void troca_vetor(int a[], int b[], int tamanho)
    {
    
        return;
    }
    
    void imprime_vetor(int a[], int tamanho)
    {
        int i;
        for (i = 0; i < tamanho; i++) {
            printf("vet[%d] => %d\n", i, a[i]);
        }
        printf("\n");
        return;
    }
    
    int main()
    {
        int x[5] = {3, 9, 7, 0, 2},
            y[5] = {10,11,0,3,7};
    
        troca_vetor (x , y, 5);
        imprime_vetor (x, 5);
    
        return 0;
    }
    
  4. 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>
    
    int 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++;
    	}
     	return 0;	
    }
    
  5. Modificar o exercício para computar a média dos 10 números que estão no vetor.
  6. Solução - Exercício 02
    //Autor: Victor Cesconetto De Pieri
    
    #include <stdio.h>
     
     
    int 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);
    }
    
  7. 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);
    }
    
  8. Refazer os exercícios anteriores usando o comando 'for'.
  9. 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);
    }
    
  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 N, a ser fornecido como parâmetro.
    Solução - Exercício 05
    #include <stdio.h>
    
    int  computar_num_acima_media(float x[], int n)
    {
        int i, cont;
        float soma, media;
    
        /* leitura do vetor */
        i=0;
        while (i<n) {
            soma = soma + x[i];
            i++;
        }
    
        /* calculo da media */
        media = soma /n;
    
        /* computação de números acima da média */
        cont = 0;
        i=0;
        while (i<n) {
            if (x[i] > media)
                cont++;
            i++;
        }
        return cont;
    }
    
    int main()
    {
    	float delta[5]={1,-3,9.2,1.5,1.7};
        float beta[7]={3.6,2.9,1,-3,9.2,1.5,1.7};
        float alfa[2]={1.5,1.7};
        int quant;
    
        quant = computar_num_acima_media(delta, 5);
        quant = computar_num_acima_media(beta, 7);
        quant = computar_num_acima_media(alfa, 2);
    
        return 0;
    }
    
  11. 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.
  12. 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();
    }
    
  13. 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();
    }
    
  14. 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;
    }
    

    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). A função deve retornar o valor 3, neste caso.

    Solução - Exercício 08
  15. 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 independente de posição. Usar o comando for e break.
    int retorna_quantidade_elementos_iguais(int vet1[],int vet2[], int tamanho)
    {
      int num_elementos;
    
      return num_elementos;
    }
    
    Solução - Exercício 09
    int retorna_quantidade_elementos_iguais(int vet1[],int vet2[], int tamanho) {
        int num_elementos;
        int i, j, k;
    
        for (i = 0; i < tamanho; i++){
            for (j = 0; j < tamanho; j++) {
                /* testar se vet1[i] já foi testado anteriormente */
                for (k=0;k<i;k++)
                    if (vet1[i]==vet1[k])
                        break;
                if k<i)
                  break;
                /* testar se vet1[i] está  vet[2] */
                if( vet1[i] == vet2[j]) {
                    num_elementos++;
                    break;
                }
            }
        }
        return num_elementos;
    }
    
    int main()
    {
        /* testar a função aqui!!! */
        return 0;
    }
    

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)