Crie uma função em C que receba um vetor de 20 números float e ordene-o de forma decrescente obedecendo as seguinte regra:
Não é permitido a criação de variáveis locais, utilização de variaveis globais ou alguma forma de alocação extra de memória além do vetor float de 20 casas recebida (De entrada).
bokomoko:
Isso vai ser interessante. Qual escola propös esse exercício ?
Soluções para a tarefa
Respondido por
2
Olá!
Veja o código comentado a seguir:
#include <stdio.h>
#include <stdlib.h>
float vetor[20]; //declaracao vetor 20 posicoes
int i, j; //variaveis auxiliares
//Obs: Todas variaveis globalmente como exigido no problema
void desce(){
if(vetor[0] < vetor[1]){ //compara a posicao com a proxima se eh menor
vetor[0] = vetor[0]+vetor[1];vetor[1] = vetor[0]-vetor[1];vetor[0] = vetor[0]-vetor[1];
} if(vetor[1] < vetor[2]){ //compara a posicao com a proxima se eh menor
vetor[1] = vetor[1]+vetor[2];vetor[2] = vetor[1]-vetor[2];vetor[1] = vetor[1]-vetor[2];
} if(vetor[2] < vetor[3]){ //compara a posicao com a proxima se eh menor
vetor[2] = vetor[2]+vetor[3];vetor[3] = vetor[2]-vetor[3];vetor[2] = vetor[2]-vetor[3];
} if(vetor[0] < vetor[1]){ //compara a posicao com a proxima se eh menor
vetor[0] = vetor[0]+vetor[1];vetor[1] = vetor[0]-vetor[1];vetor[0] = vetor[0]-vetor[1];
} if(vetor[1] < vetor[2]){ //compara a posicao com a proxima se eh menor
vetor[1] = vetor[1]+vetor[2];vetor[2] = vetor[1]-vetor[2];vetor[1] = vetor[1]-vetor[2];
} if(vetor[2] < vetor[3]){ //compara a posicao com a proxima se eh menor
vetor[2] = vetor[2]+vetor[3];vetor[3] = vetor[2]-vetor[3];vetor[2] = vetor[2]-vetor[3];
} if(vetor[0] < vetor[1]){ //compara a posicao com a proxima se eh menor
vetor[0] = vetor[0]+vetor[1];vetor[1] = vetor[0]-vetor[1];vetor[0] = vetor[0]-vetor[1];
} if(vetor[1] < vetor[2]){ //compara a posicao com a proxima se eh menor
vetor[1] = vetor[1]+vetor[2];vetor[2] = vetor[1]-vetor[2];vetor[1] = vetor[1]-vetor[2];
} if(vetor[2] < vetor[3]){ //compara a posicao com a proxima se eh menor
vetor[2] = vetor[2]+vetor[3];vetor[3] = vetor[2]-vetor[3];vetor[2] = vetor[2]-vetor[3];
} if(vetor[0] < vetor[1]){ //compara a posicao com a proxima se eh menor
vetor[0] = vetor[0]+vetor[1];vetor[1] = vetor[0]-vetor[1];vetor[0] = vetor[0]-vetor[1];
} if(vetor[1] < vetor[2]){ //compara a posicao com a proxima se eh menor
vetor[1] = vetor[1]+vetor[2];vetor[2] = vetor[1]-vetor[2];vetor[1] = vetor[1]-vetor[2];
}
if(vetor[2] < vetor[3]){ //compara a posicao com a proxima se eh menor
vetor[2] = vetor[2]+vetor[3];vetor[3] = vetor[2]-vetor[3];vetor[2] = vetor[2]-vetor[3]; }
}
main(){
for(i = 0; i < 4; i++){
scanf("%f", &vetor[i]); //leitura do vetor
}
desce();//funcao ordenacao decrescente
for(i = 0; i < 4; i++){
printf("%.2f ",vetor[i]);//print vetor ordenado
}
printf("\n");
}
Me desculpe pela identação não consigo responder para ficar certinho!
Veja o código comentado a seguir:
#include <stdio.h>
#include <stdlib.h>
float vetor[20]; //declaracao vetor 20 posicoes
int i, j; //variaveis auxiliares
//Obs: Todas variaveis globalmente como exigido no problema
void desce(){
if(vetor[0] < vetor[1]){ //compara a posicao com a proxima se eh menor
vetor[0] = vetor[0]+vetor[1];vetor[1] = vetor[0]-vetor[1];vetor[0] = vetor[0]-vetor[1];
} if(vetor[1] < vetor[2]){ //compara a posicao com a proxima se eh menor
vetor[1] = vetor[1]+vetor[2];vetor[2] = vetor[1]-vetor[2];vetor[1] = vetor[1]-vetor[2];
} if(vetor[2] < vetor[3]){ //compara a posicao com a proxima se eh menor
vetor[2] = vetor[2]+vetor[3];vetor[3] = vetor[2]-vetor[3];vetor[2] = vetor[2]-vetor[3];
} if(vetor[0] < vetor[1]){ //compara a posicao com a proxima se eh menor
vetor[0] = vetor[0]+vetor[1];vetor[1] = vetor[0]-vetor[1];vetor[0] = vetor[0]-vetor[1];
} if(vetor[1] < vetor[2]){ //compara a posicao com a proxima se eh menor
vetor[1] = vetor[1]+vetor[2];vetor[2] = vetor[1]-vetor[2];vetor[1] = vetor[1]-vetor[2];
} if(vetor[2] < vetor[3]){ //compara a posicao com a proxima se eh menor
vetor[2] = vetor[2]+vetor[3];vetor[3] = vetor[2]-vetor[3];vetor[2] = vetor[2]-vetor[3];
} if(vetor[0] < vetor[1]){ //compara a posicao com a proxima se eh menor
vetor[0] = vetor[0]+vetor[1];vetor[1] = vetor[0]-vetor[1];vetor[0] = vetor[0]-vetor[1];
} if(vetor[1] < vetor[2]){ //compara a posicao com a proxima se eh menor
vetor[1] = vetor[1]+vetor[2];vetor[2] = vetor[1]-vetor[2];vetor[1] = vetor[1]-vetor[2];
} if(vetor[2] < vetor[3]){ //compara a posicao com a proxima se eh menor
vetor[2] = vetor[2]+vetor[3];vetor[3] = vetor[2]-vetor[3];vetor[2] = vetor[2]-vetor[3];
} if(vetor[0] < vetor[1]){ //compara a posicao com a proxima se eh menor
vetor[0] = vetor[0]+vetor[1];vetor[1] = vetor[0]-vetor[1];vetor[0] = vetor[0]-vetor[1];
} if(vetor[1] < vetor[2]){ //compara a posicao com a proxima se eh menor
vetor[1] = vetor[1]+vetor[2];vetor[2] = vetor[1]-vetor[2];vetor[1] = vetor[1]-vetor[2];
}
if(vetor[2] < vetor[3]){ //compara a posicao com a proxima se eh menor
vetor[2] = vetor[2]+vetor[3];vetor[3] = vetor[2]-vetor[3];vetor[2] = vetor[2]-vetor[3]; }
}
main(){
for(i = 0; i < 4; i++){
scanf("%f", &vetor[i]); //leitura do vetor
}
desce();//funcao ordenacao decrescente
for(i = 0; i < 4; i++){
printf("%.2f ",vetor[i]);//print vetor ordenado
}
printf("\n");
}
Me desculpe pela identação não consigo responder para ficar certinho!
Respondido por
0
Resposta:
Explicação:
include <stdio.h>
#include <stdlib.h>
float vetor[20]; //declaracao vetor 20 posicoes
int i, j; //variaveis auxiliares
//Obs: Todas variaveis globalmente como exigido no problema
void desce(){
if(vetor[0] < vetor[1]){ //compara a posicao com a proxima se eh menor
vetor[0] = vetor[0]+vetor[1];vetor[1] = vetor[0]-vetor[1];vetor[0] = vetor[0]-vetor[1];
} if(vetor[1] < vetor[2]){ //compara a posicao com a proxima se eh menor
vetor[1] = vetor[1]+vetor[2];vetor[2] = vetor[1]-vetor[2];vetor[1] = vetor[1]-vetor[2];
} if(vetor[2] < vetor[3]){ //compara a posicao com a proxima se eh menor
vetor[2] = vetor[2]+vetor[3];vetor[3] = vetor[2]-vetor[3];vetor[2] = vetor[2]-vetor[3];
Perguntas interessantes