Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite,
Estou tendo problemas para construir o seguinte programa:
O usuário seleciona por exemplo a opção 1 e o programa deverá inserir um valor na primeira posição do vetor
se o usuário selecionar a opção 2 o programa deverá inserir um valor na última posição do vetor.
Preciso também excluir o último elemento do vetor.
E o usuário deverá ir selecionando somente as opções 1 e 2 para preencher todo o vetor.
Se o vetor for completamente preenchido deverá informar ao usuário que o vetor está completamente cheio com todas
as posições inseridas.
No entanto não posso utilizar listas somente vetores e funções. Não posso utilizar as estruturas de dados mais conhecidas como fila ou lista.
Segue o que consegui fazer
Alguém poderia me ajudar nesse algoritmo?
#include <stdio.h>
#include <stdlib.h>
int menu(void);
void opcao(int op);
void inicio(int *v, int t);
void final(int *v, int t);
void mostrar(int t, int *v);
int excluir(int n, int *t, int *v);
void ordena(int t, int *v);
int main(){
int op;
do{
op = menu();
opcao(op);
}while(op);
system("cls");
printf("\n\n");
system("pause");
}
int menu(void){
int op;
printf("Escolha uma opcao\n");
printf("1. Adicionar no inicio\n");
printf("2. Adicionar no final\n");
printf("3. Exibir\n");
printf("4. Ordena\n");
printf("5. Excluir valor fim\n");
printf("0. Sair\n");
printf("Opcao: ");
scanf("%d", &op);
return op;
}
void opcao(int op) {
int t;
int vetor[10];
int tam = 10 - 1;
t = 0;
switch(op){
case 1:
inicio(vetor, t);
break;
case 2:
final(vetor, t);
break;
case 3:
mostrar(t,vetor);
break; ordena(t,vetor);
break;
case 5: printf("Ultimo elemento do vetor foi excluido");
} else {
printf("Nao foi possivel excluir o ultimo elemento");
}
break;
case 0:
break;
default:
printf("Operacao invalida\n\n");
}
}
void inicio(int *v, int t) {
int i, n, aux, pos, c;
int *p;
aux = 20;
p = malloc(aux*sizeof(int));
if(!p) {
printf("Memoria insuficiente!!!\n");
return;
}
printf("Informe um valor para inserir\n");
scanf("%d", &n);
printf("Informe a posicao do elemento\n");
scanf("%d", &pos);
printf("Vet");
for (c = n - 1; c >= pos - 1; c--) {
p[c+1] = p[c];
}
p[pos-1] = n;
printf("Vet com valor \n");
for (c = 0; c <= n; c++) {
printf("%d\n", p[c]);
}
free(p);
}
void final(int *v, int t) {
int i, n, aux, pos, c;
int *p;
aux = 20;
p = malloc(aux*sizeof(int));
if(!p) {
printf("Memoria insuficiente!!!\n");
return;
}
printf("Informe um valor para inserir\n");
scanf("%d", &n);
printf("Informe a posicao do elemento\n");
scanf("%d", &pos);
printf("Vet");
for (c = n - 1; c >= pos - 1; c--) {
p[c+1] = p[c];
}
p[pos-1] = n;
printf("Vet com valor \n");
for (c = 0; c <= n; c++) {
printf("%d\n", p[c]);
}
free(p);
}
void mostrar(int t, int *v){
int i;
for(i = 0; i < t; i++){
printf("%d ", v[i]);
}
printf("\n");
}
int excluir(int n, int t, int v){
int i;
for (i = 0; i < *t; i++ ){
if (v[i] == n) {
*t -= 1;
while (i < *t){
v[i] = v[i + 1];
i++;
}
return 1;
}
}
return 0;
}
void ordena(int t, int *v) {
int fim,i;
for (fim = t-1; fim > 0; fim--) {
int troca = 0;
for (i=0; i<fim; i++)
if (v[i]>v[i+1]) {
int temp = v[i];
v[i] = v[i+1];
v[i+1] = temp;
troca = 1;
}
if (troca == 0)
return;
}
}Carregando comentários...