Ajuda com exercício

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]);
    }
}

image