Parte 2 - Ponteiros (PUC)
23 pág.

Parte 2 - Ponteiros (PUC)


DisciplinaFundamentos de Programação403 materiais4.773 seguidores
Pré-visualização2 páginas
fflush(stdin);
resultado = verifica(valor);
if (resultado == 1)
puts("A regra vale!\n");
else
puts(" A regra nao vale!\n");
system("PAUSE");
return 0;
}
// função determina regra
int verifica (int numero){
int primeiro, segundo, 
soma, quadrado;
//separa as duas parte do número
primeiro = numero / 100;
segundo = numero % 100;
// determina característica
soma = primeiro + segundo;
quadrado = soma*soma;
if (quadrado == numero)
return 1;
else
return 0;
}
Ponteiros e Funções
#include <stdio.h>
#include <stdlib.h>
int verifica (int *);
int main(int argc, char *argv[])
{
int valor, resultado;
puts(&quot; Entre com valor inteiro de quatro digitos&quot;);
scanf(&quot;%d&quot;, &valor); fflush(stdin);
resultado = verifica(&valor);
if (resultado == 1)
puts(&quot;A regra vale!\n&quot;);
else
puts(&quot; A regra nao vale!\n&quot;);
system(&quot;PAUSE&quot;);
return 0;
}
// função determina regra
int verifica (int *numero){
int primeiro, segundo, 
soma, quadrado;
//separa as duas parte do número
primeiro = *numero / 100;
segundo = *numero % 100;
// determina característica
soma = primeiro + segundo;
quadrado = soma*soma;
if (quadrado == *numero)
return 1;
else
return 0;
}
Ponteiros e Vetores
\ufffd Ponteiros também podem ser usados 
para a manipulação de vetores de 
qualquer tipo dos dados básicos (char, 
int, float, ...)
\ufffd Exemplo
char vetor[100];
char *p_vetor;
p_vetor = vetor; ou p_vetor = &vetor[0];
Ponteiros e Vetores
#include <stdio.h>
#include <stdlib.h>
// Funções para manipulação de vetores
int ler_vetor(int *);
void imprime_vetor(int *);
#define MAX 10
int main(int argc, char *argv[]){
int vetor[MAX], erro=1;
erro = ler_vetor(vetor);
if (erro != 0)
puts(&quot;Erro na leitura do vetor\n&quot;);
else 
imprime_vetor(&vetor[0]);
system(&quot;PAUSE&quot;);
return 0;
}
// Função para leitura do vetor de inteiros
int ler_vetor(int *vet){
int i;
puts(&quot; Entre com os valores do vetor\n&quot;);
for (i=0; i< MAX; i++){
printf(&quot;Vetor[%d]= &quot;, i);
scanf(&quot;%d&quot;,(vet+i));
} 
return 0;
} 
// Função para imprimir o vetor de inteiros
void imprime_vetor (int *vet){
int i;
printf(&quot; Vetor= &quot;);
for (i=0; i< MAX; i++)
printf(&quot;%d, &quot;,*(vet+i));
printf(&quot;\n&quot;);
} 
Ponteiros e Vetores
#include <stdio.h>
#include <stdlib.h>
// Funções para manipulação de vetores
int ler_vetor(int *);
void imprime_vetor(int *);
#define MAX 10
int main(int argc, char *argv[]){
int vetor[MAX], erro=1;
erro = ler_vetor(vetor);
if (erro != 0)
puts(&quot;Erro na leitura do vetor\n&quot;);
else 
imprime_vetor(&vetor[0]);
system(&quot;PAUSE&quot;);
return 0;
}
// Função para leitura do vetor de inteiros
int ler_vetor(int *vet){
int i;
puts(&quot; Entre com os valores do vetor\n&quot;);
for (i=0; i< MAX; i++){
printf(&quot;Vetor[%d]= &quot;, i);
scanf(&quot;%d&quot;,&vet[i]);
} 
return 0;
} 
// Função para imprimir o vetor de inteiros
void imprime_vetor (int *vet){
int i;
printf(&quot; Vetor= &quot;);
for (i=0; i< MAX; i++)
printf(&quot;%d, &quot;,vet[i]);
printf(&quot;\n&quot;);
} 
Ponteiros e Vetores
\ufffd Exercícios
\ufffd Modifique o programa anterior e inclua uma 
função que some os componentes do vetor 
que sejam pares. Ao final, imprima além do 
vetor, o somatório desses componentes.
Ponteiros e Matrizes
\ufffd Ponteiros também podem ser usados 
para a manipulação de matrizes de 
qualquer dimensão e de qualquer tipo 
dos dados básicos (char, int, float, ...)
\ufffd Exemplo
char matriz[100][50];
char *p_matriz;
p_matriz = matriz; ou p_vetor = &matriz[0];
Ponteiros e Matrizes
#include <stdio.h>
#include <stdlib.h>
// Funções para manipulação de matrizes
int ler_matriz(float *);
void imprime_matriz(float *);
#define LINHA 2
#define COLUNA 2
int main(int argc, char *argv[]){
float matriz[LINHA][COLUNA];
int erro=1;
erro = ler_matriz(matriz);
if (erro != 0)
puts(&quot;Erro na leitura da matriz\n&quot;);
else
imprime_matriz(&matriz[0][0]);
system(&quot;PAUSE&quot;);
return 0;
}
// Função para leitura do vetor de inteiros
int ler_matriz(float *mat){
int i,j;
puts(&quot; Entre com os valores da matriz\n&quot;);
for (i=0; i<LINHA; i++)
for (j=0; j<COLUNA; j++){
printf(&quot;Matriz[%d][%d]= &quot;, i,j);
scanf(&quot;%f&quot;,mat+(i*COLUNA+j));
} 
return 0;
} 
// Função para imprimir o vetor de inteiros
void imprime_matriz(float *mat){
int i, j;
printf(&quot; Matriz \n&quot;);
for (i=0; i<LINHA; i++){
for (j=0;j<COLUNA; j++)
printf(&quot;%.1f &quot;, *(mat+(i*COLUNA+j)));
printf(&quot;\n&quot;); 
} 
}
Ponteiros e Matrizes
\ufffd Exercícios
\ufffd Elabore um programa em C que efetua a alocação 
dinâmica de matrizes, com base na escolha do 
usuário (o usuário deve informar o número de 
LINHAS E COLUNAS). A partir disto, seu programa 
deve obter DUAS MATRIZES, informadas pelo 
usuário. E exibir como resultado:
\u25cb SOMA ENTRE AS MATRIZES;
\u25cb SUBTRAÇÃO ENTRE AS MATRIZES;
\u25cb MULTIPLICAÇÃO ENTRE A MATRIZ E UM 
ESCALAR;
\u25cb CÁLCULO DA DIAGONAL DAS MATRIZES (em 
separado).