Um funcionário precisa organizar o seu trabalho. Ele recebe um conjunto de pastas de clientes, revisa essas pastas e anota a referência de cada cliente (seu código).
Ao realizar este processo, ele inverte as pastas e, por isso, precisa organizá-las na ordem correta de atendimento depois.
Sendo assim, construa um algoritmo que:
- Leia os códigos dos clientes, armazenando-os em um vetor de inteiros, conforme o trabalho do funcionário.
- Em seguida, inverta o vetor. Para que os dados fiquem organizados da maneira que o funcionário precisa para trabalhar, utilize um procedimento para fazer a inversão do vetor.
- Escreva o vetor.
O que eu fiz (não usei nenhuma linguagem de programação)
Algoritmo
var
vetor C: [1…x] de inteiros;
procedimento ler vetor C;
inverter vetor C;
original [1…x];
invertido [x…1];
Se eu ainda me lembro de Portugol…
Programa Pasta
inicio
{Variáveis}
constante inteiro TAMANHO = 10;
inteiro pastas[1..10];
{Procedimento que lê os número da pasta}
procedimento lerVetor()
inicio
inteiro indice = 0;
inteiro numeroPasta;
para indice <- 0 ate tamanho faca
escreva('Pasta número: ');
pastas[indice] = leia();
fimPara
fimProcedimento
{Procedimento que inverte os números da pasta}
procedimento inverterVetor()
inicio
inteiro i = 0;
inteiro j = 0;
inteiro auxiliar
para i <- 0 ate tamanho faca
para j <- tamanho ate 0 faca
auxiliar <- pastas[j];
pastas[j] <- pastas[i];
pastas[i] <- auxiliar;
fimPara
fimPara
fimProcedimento
{Procedimento imprime as pastas}
procedimento mostrarPasta()
inicio
inteiro i = 0;
para i <- 0 ate tamanho faca
escrever('Pasta número: ', pastas[i]);
fimPara
fimProcedimento
{Testa o algoritmo}
lerVetor();
inverterVetor();
mostrarPasta();
fim
Obrigada, ajudou bastante. Não tive nem lógica de programação na faculdade porque me enturmaram num módulo avançado. Não tive nem lógica de programação e já tenho programação estruturada.
Ao testar em C, constatei que o método inversor do vetor não realiza a inversão, mas embaralha os dados.
Corrigindo:
{Procedimento que inverte os números da pasta}
procedimento inverterVetor()
inicio
inteiro i = 0;
inteiro j = 0;
inteiro k = tamanho - 1;
inteiro lacos = tamanho/2;
inteiro auxiliar;
para j <- k ate lacos faca
auxiliar <- pastas[j];
pastas[j] <- pastas[i];
pastas[i] <- auxiliar;
i + 1;
fimPara
fimProcedimento
Em C:
#include<stdio.h>
#include<stdlib.h>
/*Protótipos*/
void lerVetor(int tamanho, int p[]);
void inverterVetor(int tamanho, int p[]);
void mostrarPasta(int tamanho, int p[]);
int main(){
/*Variáveis*/
const int TAMANHO = 10;
int pastas[TAMANHO];
lerVetor(TAMANHO, pastas);
inverterVetor(TAMANHO, pastas);
mostrarPasta(TAMANHO, pastas);
system("pause");
return 0;
}
void lerVetor(int tamanho, int p[]){
int i = 1;
int indice = 0;
int numeroPasta;
for(indice = 0; indice < tamanho; indice++){
printf("Pasta %d: ", i++);
scanf("%d", &numeroPasta);
p[indice] = numeroPasta;
}
}
void inverterVetor(int tamanho, int p[]){
int i = 0;
int j = tamanho;
int k = tamanho - 1;
int auxiliar = 0;
int pass = tamanho/2;
for(j = k; j >= pass; j--){
auxiliar = p[j];
p[j] = p[i];
p[i] = auxiliar;
i++;
}
}
void mostrarPasta(int tamanho, int p[]){
int i = 1;
int indice = 0;
printf("\n\n");
for(indice = 0; indice < tamanho; indice++){
printf("Pasta %d: %d\n", i++, p[indice]);
}
}
