Use o botão abaixo para reportar erros ou dar sugestões.

Computação Científica - Um Livro Colaborativo

12.3 Variáveis globais


As vezes estamos interessados em trabalhar com variáveis globais, que podem ser enxergadas por qualquer função do código sem precisar ser passada como parâmetro.

Exemplo 12.3.1. Implemente um código com duas funções, uma que ordena os pontos de um vetor de n posições e outra que coloca o valor da soma de todos os elementos de vetor de n posições na posição n + 1. Defina um vetor como variável global.

#include <stdio.h>  
#include <stdlib.h>  
 
double *x;  
int N;  
 
void troca(double *a,double *b)  
{  
  double aux=*a;  
  *a=*b;  
  *b=aux;  
}  
 
void ordena()  
{  
  int i,ordena=1;  
 
  do  
  {  
    for (ordena=i=0;i<N-1;i++)  
      if (x[i]>x[i+1])  
      {  
      troca(&x[i],&x[i+1]);  
      ordena=1;  
      }  
  }while (ordena);  
}  
 
void coloca_soma_na_ultima_posicao()  
{  
  double soma=0;  
  int i;  
  for (i=0;i<N;i++) soma+=x[i];  
  N++;  
  x=realloc(x,N*sizeof(double));  
  x[N-1]=soma;  
}  
 
void main(int argc,char **argv)  
{  
  N=argc-1;  
  if (N==0)  
  {  
  printf("Entre com alguns números na linha de comando");  
  return;  
  }  
  int i;  
  x=malloc(N*sizeof(double));  
  for (i=0;i<N;i++)  
  {  
  x[i]=atof(argv[i+1]);  
  printf("x[%d]=%f\n",i,x[i]);  
  }  
  ordena();  
  for (i=0;i<N;i++) printf("x[%d]=%f\n",i,x[i]);  
  coloca_soma_na_ultima_posicao();  
  for (i=0;i<N;i++) printf("x[%d]=%f\n",i,x[i]);  
  ordena();  
  for (i=0;i<N;i++) printf("x[%d]=%f\n",i,x[i]);  
  coloca_soma_na_ultima_posicao();  
  for (i=0;i<N;i++) printf("x[%d]=%f\n",i,x[i]);  
}

Creative Commons License Este texto é disponibilizado nos termos da licença Creative Commons Atribuição-CompartilhaIgual 3.0 Não Adaptada (CC-BY-SA 3.0). Página gerada em 19/8/2020 às 17:33:16.

Informe erros ou edite você mesmo!