ALGUEM PODERIA ME AJUDAR EM UM CODIGO EM C? DA MINHA RECUPERAÇAO DE PROVA DE ALGORITIMOS?

C

Lógica de programação

C++

25/11/2021

01.) FAZER um programa para:
- definir uma função para determinar se os valores
no arranjo estão em ordem decrescente;
- ler e armazenar dados de um arranjo do arquivo DADOS1.TXT;
- se não estiverem, colocá-los em ordem decrescente,
antes de regravar os dados no arquivo DECRESCENTE.TXT,
colocando a quantidade de elementos na primeira linha do arquivo.
DICA: Para ordenar usar o princípio de troca dos elementos vizinhos
que não estiverem ordenados, e testar novamente usando a função,
até que não seja necessário fazer mais trocas.

OBRIGADO PESSOAL
Bielmarques23

Bielmarques23

Curtidas 1

Respostas

Emerson Nascimento

Emerson Nascimento

25/11/2021

vou passar uma parte: a ordenação decrescente usando o princípio de troca dos elementos vizinhos.
o conteúdo do vetor (se for dinâmico) e a gravação dos arquivos ficam com você.
#include <stdio.h>

void OrdenaDecrescente(int *vetor, int tamanho);

int main() {
    int valores[] = {6, 7, 10, 4, 9, 1, 5, 2}; // conteúdo fixo, mas você pode solicitar ao executar o programa
    int i;
    int n = sizeof(*(&valores)) / sizeof(*valores);

    printf("TAMANHO DO VETOR: %d\\n", n);

    printf("ANTES da função\\n");
    for (i=0;i<n;i++) {
        printf("Valor do vetor[%d] = %d\\n",i, valores[i]);
    }
    
    OrdenaDecrescente( valores, n );

    printf("DEPOIS da função\\n");
    for (i=0;i<n;i++) {
        printf("Valor do vetor[%d] = %d\\n",i, valores[i]);
    }
    
    return 0;
}

void OrdenaDecrescente(int *vetor, int n) {
	int i,j,aux,troca;
	for (i=n-1;i>0;i--) {
		troca = 0;
		for (j=0;j<i;j++) {
			if (vetor[j] < vetor[j+1]) {
				aux = vetor[j];
				vetor[j] = vetor[j+1];
				vetor[j+1] = aux;
				troca = 1;
			}
		}
		if (troca == 0) break; // se não houve troca, sai, porque todos os elementos já foram ordenados
	}
}

GOSTEI 0
Leticia Lima

Leticia Lima

25/11/2021

Oie Tudo bem ? Emerson Nascimento já resolver a parte de deixar em ordem decrescente.
vou deixar um exemplo aqui sobre gravar os dados em um arquivo pra você.

 
#include <iostream>
#include <conio.h>
#include <vector>
using namespace std; 

int main(){ 
    int quant, i,j;
    float grade[i];
    int cont;    
    printf("%i", n);
    FILE *pont_arq;
    pont_arq = fopen("DADOS1.txt", "w");
    
    // testa se o arquivo foi realmente preenchido
    if(pont_arq == NULL){
        printf("Erro na abertura do arquivo!");
        return 1;
    }
    
    // digita a quantidade de valores que vamos armazenar no vetor
    printf("Quantidades de valores da lista:");
    scanf("%i", &quant);
    printf("%i\\n", quant); 
    
    // Inserir os valores no vetor
    for(cont=0 ; cont<quant ; cont++){
        cout<<"Insira valor "<<cont+1<<": ";
        cin >> grade[cont]; 
    }   
    printf("\\n"); 
    
    // Grava as informações no DADOS.txt
    printf("Vetor antes da ordenação: \\n"); 
    for(int i=0;i<quant;++i) {
    printf("%0.f\\n", grade[i]);
    fprintf(pont_arq, "%0.f\\n", grade[i]);
        }  
    printf("\\n"); 
    fclose(pont_arq);
    printf("DADOS1 gravados com sucesso!");
    printf("\\n");  
}


Espero ter ajudado.
GOSTEI 0
POSTAR