Escolar Documentos
Profissional Documentos
Cultura Documentos
Waldemar
Participantes:
Lucas Fabiano Peres Silva - 30102235
Marcelo da Silva Oliveira - 29070031
João Victor Rodrigues Bersonette - 29701317
Vinicius Rosa Santos - 5032158319
Túlio Delazari - 30271967
2. Quais das seguintes instruções declaram um ponteiro para uma variável float? Marque as afirmações como
verdadeiras (V) ou falsas (F):
(V) float *p;
(F) float p;
(F) *float p;
(F) float p*;
()5
(X) 17
( ) 12
()7
A variavél do Ponteiro P não foi iniciada com um endereço válido, isso faz com que quando usado o *P, ele não
consegue determinar o endereço de memório no qual ele seria atribuído. O correto seria adicionar P=&x,
Iniciando para que Ponteiro aponte para a variável X.
6. Faça um programa que a) Explique a diferença entre p++; (*p)++; *(p++); b) O que quer dizer *(p+10);?
a) “p++” incrementa o valor de 1 na variável p, “(*p)++” incrementa o
valor apontado por p em uma unidade, já “*(p++)” significa que
queremos acessar o valor guardado no espaço de memória que
p representa (usando o símbolo *), e depois aumentar o valor
de p em 1 (usando o símbolo ++). Isso é usado em situações em
que queremos acessar vários valores guardados em sequência
na memória, por exemplo em um array de números.
b) Em C, *(p+10) é uma forma de acessar o conteúdo da posição de
memória apontada pelo ponteiro "p", deslocado 10 posições
adiante na memória. Basicamente, o código está pedindo para
"pular" 10 posições na memória e acessar o valor contido lá.
7. Baseando nos slides sobre listas estáticas (arrays) e dinâmica (ligadas), faça um programa que, dado um
array inicial de tamanho N, que seja do tipo char ou float, não-ordenado, receba novos elementos.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int N = 10;
int contador = 3;
float *arr = (float*) malloc(N * sizeof(float));
arr[0] = 7.24;
arr[1] = 5.71;
arr[2] = 8.21;
printf("Array inicial:\n");
for (int i = 0; i < contador; i++) {
printf("%.2f ", arr[i]);
}
printf("\n\n");
printf("\nArray final:\n");
for (int i = 0; i < contador; i++) {
printf("%.2f ", arr[i]);
}
printf("\n");
free(arr);
return 0;
}
8. Baseando nos slides sobre listas estáticas (arrays) e dinâmica (ligadas), faça um programa que, dado um
array inicial de tamanho N, que seja do tipo char ou float, ordenado, receba novos elementos e mantenha a
ordem.
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
int main() {
int n, i;
printf("Digite o tamanho do array: ");
scanf("%d", &n);
int arr[n];
printf("Digite os elementos do array:\n");
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
bubbleSort(arr, n);
printf("Array ordenado:\n");
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
9. Baseando nos slides sobre listas estáticas (arrays) e dinâmica (ligadas), faça um programa que, dado um
array inicial de tamanho N que seja do tipo char ou float, não-ordenado, busque e remova um dado
elemento.
#include <stdio.h>
#include <stdlib.h>
#define N 10
int main() {
float arr[N] = {9.5, 1.5, 6.3, 2.0, 3.7, 4.2, 7.8, 8.1, 10.0, 5.0};
int tam = N;
float item;
printf("Digite o item a ser removido: ");
scanf("%f", &item);
printf("Array atualizado:\n[");
for (int i = 0; i < novo_tam; i++) {
printf(" %.2f", arr[i]);
}
printf(" ]\n");
return 0;
}
return tam;
}
10. Baseando nos slides sobre listas estáticas (arrays) e dinâmica (ligadas), faça um programa que, dado um
array inicial de tamanho N, que seja do tipo char ou float, ordenado, busque e remova um dado elemento
elementos e mantenha a ordem.
#include <stdio.h>
#include <stdio.h>
int main() {
int n, i, j, pos;
float arr[100], x;
insertionSort(arr, n);
printf("Array ordenado:\n");
for (i = 0; i < n; i++) {
printf("%.2f ", arr[i]);
}
printf("\n");
return 0;
}