Programação · 9 min read · Oct 12, 2025
Aprendendo C/C++ Passo a Passo - Página 7
07. Passo a Passo C/C++ — Programação C - Arrays
| 1. Introdução aos arrays | |
| 2. Sobre Arrays | |
| 3. Elementos do Array | |
| 4. Passando Arrays para Funções |
| | 5. Tipos de Arrays | | - Arrays Unidimensionais 1. Adicionar elemento
- Inserir elemento
- Deletar elemento
- Substituir elemento
- Buscar elemento
- Deleção de array
- Ordenação de um array - Arrays Multidimensionais
Operações de Matriz usando Arrays Multidimensionais | |
1. Introdução aos arrays
Uma variável pode conter um valor constante. Apenas um único valor constante e não é possível manter mais de um valor em uma variável.
O seguinte exemplo demonstra o escopo de uma variável.
| | int main()
{
int sno;
sno = 1001;
sno = 1008;
sno = 1005;
printf(“%d”, sno);
return 0;
} | | | Saída:
1005 |
O programa acima é capaz de exibir apenas 1005, mas não todos os valores (ou seja, 1001, 1008, 1005 ).
Podemos substituir o seguinte programa no lugar do programa acima.
| | int main()
{
int sno;
sno 0 = 1001;
sno 1 = 1008;
sno 2 = 1005;
printf(“%d”, sno);
return 0;
} | | | Saída:
Nada,
O programa acima exibe uma lista de erros, porque a abordagem está errada. |
Vamos continuar com o seguinte programa para obter um programa sem erros.
| | int main()
{
int sno[3];
sno[0] = 1001;
sno[1] = 1008;
sno[2] = 1005;
printf(“%d”, sno[2] );
return 0;
} | / 3 valores a serem inseridos /
/ Primeira localização para inserir 1001 /
/ Próxima localização para inserir 1008 /
/ e Próxima localização para inserir 1005 /
/ Imprime o valor da 2ª localização / | | | | | Saída:
Nada | |
O programa acima exibe uma lista de erros, porque a abordagem está errada.
Dependendo do programa acima, a variável sno pode conter mais de um número de aluno. É fácil, usando a técnica de múltiplas localizações, também conhecida como arrays.
2. Sobre Arrays
Arrays contêm um número de itens de dados do mesmo tipo. Este tipo pode ser um tipo de dado simples, uma estrutura ou uma classe. Os itens em um array são chamados de elementos. O número acessa os elementos; esse número é chamado de índice. Os elementos podem ser inicializados com valores específicos quando o array é definido.
Arrays podem ter múltiplas dimensões.
Um array bidimensional é um array de arrays. O endereço de um array pode ser usado como um argumento para uma função; o array em si não é copiado. Arrays podem ser usados como dados de membro em classes. Deve-se ter cuidado para evitar que dados sejam colocados na memória fora de um array.
/ O seguinte programa lê a idade de 4 pessoas e a exibe /
| | / 47_arrays.c /
#include
int main()
{
int age[4], i;
for( i=0; i<4; i++)
{
printf(“Digite uma idade “); scanf(“%d”, &age[i]);
}
for(i=0; i<4; i++)
printf(“ Você digitou %d”, age[i]);
return 0;
} |
| |
|
Como outras variáveis em C, um array deve ser definido antes de ser usado para armazenar informações. E, como outras definições, uma definição de array especifica um tipo de variável e um nome.
Mas inclui outro recurso: um tamanho. O tamanho especifica quantos itens de dados o array conterá. Ele segue imediatamente o nome e é cercado por colchetes.
3. Elementos do Array
Os itens em um array são chamados de elementos. O array unidimensional aceita valores de forma a ser linha a linha ou coluna a coluna. Ele pode armazenar apenas um conjunto de valores.
O primeiro elemento do array é 0, o segundo é 1 e assim por diante.
| |
|
Um valor de array pode ser inicializado diretamente no tempo de design.
A inicialização de arrays é a seguinte..
| |
|
4. Passando Arrays para Funções
Arrays podem ser usados como argumentos para funções.
Em uma declaração de função, o tipo de dado e os tamanhos do array representam argumentos de array.
void display(float [DISPLAY][MONTHS]);
Quando a função é chamada, apenas o nome do array é usado como argumento.
display(sales); Programa para aceitar e imprimir um array de 10 elementos
| | / 48_ ele10.c /
#define MAX 10
display(int a[MAX])
{
int i;
for(i = 0;i
}
int main()
{
int x[MAX], i;
for(i=0;i
display(x);
return 0;
} |
Retornar array de valores de funções também é possível, mas devemos estar claros com o conceito de ponteiros. Por favor, consulte os tópicos de ponteiros para mais informações.
5. Classificação de Arrays
Arrays são de dois tipos.
| | 1. Arrays Unidimensionais
- Arrays Multidimensionais |
1. Arrays Unidimensionais
Um array unidimensional é uma coleção de elementos de forma linear.
Um array unidimensional pode aceitar as seguintes operações.
| | 1. Adicionar elemento
- Inserir elemento
- Deletar elemento
- Substituir elemento
- Buscar elemento
- Deleção de array
- Ordenação de um array |
O seguinte programa é capaz de realizar todas as tarefas descritas acima.
| | / FUNÇÕES DE ARRAY /
/ 49_sarray.c /
#define N 100
#define M 10
int i,j,r,c,r1,r2,c1,c2; / Ler elementos do Array /
int accept_values(int a[N])
{
int n;
printf(“ Quantos valores você deseja inserir..? “);
scanf(“%d”,&n);
printf(“ Digite os elementos de dados.. “);
for(i=0;i
return n;
} / Exibir elementos do array /
void display(int a[N],int n)
{
printf(“ Os elementos do Array são…”);
for(i=0;i
} / Deletar elemento do array /
int delete_cell(int a[N],int n)
{
int pos;
char ch;
printf(“ Digite a posição do elemento a ser deletado: “);
scanf(“%d”,&pos);
for(i=pos-1;i
n–;
printf(“ Você deseja continuar..(y/n)?”);
ch = getche();
if(ch == ‘y’) delete_cell(a,n);
return n;
} / Inserir elemento do array /
int insert_cell(int a[N],int n)
{
int pos, new;
char ch;
printf(“ Digite o elemento a ser inserido: “); scanf(“%d”,&new);
printf(“ Digite a posição de inserção: “); scanf(“%d”,&pos);
for(i=n;i>=pos;i–)
a[i] = a[i-1];
a[pos-1] = new;
n++;
printf(“ Você deseja continuar..(y/n)?”);
ch = getche();
if(ch==’y’) insert_cell(a,n);
return n;
} / Para adicionar elemento a um array existente /
int append_cell(int a[N],int n)
{
int pos, new;
char ch;
printf(“ Digite o elemento a ser adicionado: “);
scanf(“%d”,&new);
a[n] = new;
n++;
printf(“ Você deseja continuar..(y/n)?”);
ch = getche();
if(ch==’y’)append_cell(a,n);
return n;
} / Ordenando uma lista de elementos de um array em ordem decrescente /
void sort_list_descend(int a[N],int n)
{
int temp;
for(i=0;i
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
printf(“ Os elementos ordenados em ordem decrescente são…”);
} / Ordenando uma lista de elementos de um array em ordem crescente /
void sort_list_ascend(int a[N],int n)
{
int temp;
for(i=0;i
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
printf(“ Os elementos ordenados em ordem crescente são.. “);
} / Para encontrar o menor e o maior de um array existente /
void small_big(int a[N],int n)
{
int temp;
for(i=0;i
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
printf(“ O menor elemento é : %d”,a[n-1]);
printf(“ O maior elemento é : %d”,a[0]);
} / Buscar um elemento em um array /
void search(int a[N],int n)
{
int target, temp=0;
printf(“ Digite o elemento a ser buscado: “);
scanf(“%d”,&target);
for(i=0;i
{
printf(“ Encontrado na posição nº %d”,i+1);
temp = 1;
}
if(temp == 0)
printf(“ Não encontrado”);
} / Programa principal / / Para demonstrar operações simples de array /
#include
#include
int main()
{
int a[m],n; char ch;
clrscr();
n = accept_values(a);
do
{
printf(“ 1 - Append_cell”);
printf(“ 2 - Delete_cell”);
printf(“ 3 - Insert_cell”);
printf(“ 4 - Sort_list_descend”);
printf(“ 5 - Sort_list_ascend”);
printf(“ 6 - Small_big”);
printf(“ 7 - Search”);
printf(“ 8 - Remove_list”);
printf(“ 9 - Sair”);
printf(“ Digite sua escolha: “); ch = getche();
printf(“ “);
switch(ch)
{
case ‘1’: n = append_cell(a,n); break;
case ‘2’: n = delete_cell(a,n); break;
case ‘3’: n = insert_cell(a,n); break;
case ‘4’: sort_list_descend(a,n); break;
case ‘5’: sort_list_ascend(a,n); break;
case ‘6’: small_big(a,n); break;
case ‘7’: search(a,n); break;
case ‘8’: n = 0; break;
case ‘9’: printf(“ Isso encerrará seu programa.”); break;
}
display(a,n);
printf(“ Você deseja executar novamente..(y/n)?”);
ch = getche();
}
while(ch!=’9’);
return 0;
} |
2. Arrays Duplamente Dimensionais
Um array duplamente dimensional é uma coleção de elementos em forma de linha e coluna.
Um array multidimensional pode aceitar as seguintes operações.
Um array multidimensional é comumente usado nas áreas de matrizes para entender tarefas inteiras de uma maneira mais fácil.
FUNÇÕES DE MATRIZ
| | / 50_menumat.c /
#define N 100
#define M 10
int i, j, r, c, r1, r2, c1, c2; / Ler os valores para uma MATRIZ /
void read_matrix(int A[M][M])
{
printf(“ Quantas linhas? “);
scanf(“%d”,&r);
printf(“ Quantas colunas? “);
scanf(“%d”,&c);
for(i=0;i
} / Escrever os valores de uma MATRIZ /
void disp_matrix(int A[M][M])
{
for(i=0;i
for(j=0;j
printf(“\n”);
}
} / Para encontrar a TRANSPOSTA de uma MATRIZ de QUALQUER ORDEM /
void tra_matrix_1(int T[M][M],int A[M][M])
{
printf(“ Transposta de A é\n”);
for(i=0;i
for(j=0;j
T[i][j] = A[j][i];
printf(“%5d”,T[i][j]);
}
printf(“\n”);
}
} / Para ADICIONAR duas MATRIZES ( possível, apenas se forem de ORDEM IGUAL ) /
void add_matrix(int C[M][M],int A[M][M],int B[M][M])
{
for(i=0;i
printf(“ Soma de A e B é”);
} / Para MULTIPLICAR MATRIZES de QUALQUER ORDEM ( desde que sigam a REGRA DE MULTIPLICAÇÃO DE MATRIZES ) /
void mul_matrix_1(int C[M][M],int A[M][M],int B[M][M])
{
int k;
printf(“ Produto de A e B é.. “);
printf(“ Matriz C\n”);
for(i=0;i
for(j=0;j
C[i][j]=0;
for(k=0;k
printf(“%5d”,C[i][j]);
}
printf(“\n”);
}
} / Para SUBTRAIR duas MATRIZES ( possível, apenas se forem de ORDEM IGUAL ) /
void sub_matrix(int C[M][M],int A[M][M],int B[M][M])
{
for(i=0;i
printf(“ Diferença de A e B é”);
} / Um programa orientado a MENU para realizar operações de MATRIZ */
#include
#include
int main()
{
int A[M][M],B[M][M],C[M][M],T[M][M]; char ch;
clrscr( );
printf(“ Digite os elementos da matriz A.. “); read_matrix(A); r1=r; c1=c;
printf(“ Matriz A\n”); disp_matrix(A);
printf(“ Digite os elementos da matriz B.. “); read_matrix(B); r2=r; c2=c;
printf(“ Matriz B\n”);disp_matrix(B);
do {
printf(“ 1:Adição”);
printf(“ 2:Subtração”);
printf(“ 3:Multiplicação”);
printf(“ 4:Transposta”);
printf(“ 5:Sair”);
printf(“ Digite sua escolha..”); ch = getche();
switch(ch)
{
case ‘1’:
if(r1==r2 && c1==c2)
{
add_matrix(C,A,B);printf(“ Matriz C\n”);
disp_matrix(C);
}
else
{
printf(“ Os valores que você inseriu de r1,r2 && c1,c2 não são iguais,”);
printf(“ hence I cannot do this Matrix Addition.”);
printf(“ Por favor, insira as matrizes corretas.”);
} break;
case ‘2’:
if(r1==r2 && c1==c2)
{
sub_matrix(C,A,B);printf(“ Matriz C\n”);
disp_matrix(C);
}
else
{
printf(“ Os valores que você inseriu de r1,r2 && c1,c2 não são iguais,”);
printf(“ hence I cannot do this Matrix Subtraction.”);
printf(“ Por favor, insira as matrizes corretas.”);
} break;
case ‘3’:
if(c1==r2)
mul_matrix_1(C,A,B);
else
{
printf(“ As colunas(c1) da Matriz A NÃO SÃO IGUAIS A”);
printf(“ Linhas(r2) da Matriz B.”);
printf(“ Portanto, não posso fazer essa Multiplicação de Matrizes.”);
printf(“ Por favor, insira matrizes de forma que c1 == r2.”);
} break;
case ‘4’: printf(“ A ordem da Matriz A é %d x %d”,r1,c1);
tra_matrix_1(T,A);
printf(“ A ordem da transposta de A é %d x %d”,c1,r1); break;
case ‘5’: printf(“ Isso encerrará seu programa.”); break;
}
printf(“ Você deseja executar novamente…[y/n]? “); ch=getche();
}while(ch!=’5’);
return 0;
}
|
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.