Probablement trivial C, une question

T

tanky321

Guest
Im essayant à droite un programme qui est donné 5 entiers, il trie les entiers en ordre numérique.Catch est-il a faire l'usage si else ou des boucles.

Son d'une im classe, et la messagerie instantanée à une perte totale.Heres ce que j'ai à ce jour, seulement pour les deux premiers numéros, mais il ne marche pas de travail.Tout conseil ou aide serait appréciée.Afin void (int a, int b, c, int d, int e)
(Int num_1 = 0;
int num_2 = 0;

if (a <b & A & C <& & a <d & & a <e)
(Num_1 = a;
a = 0;)
else if (b <a & & b <c & & <b & & d <b e)
(Num_1 = b;
b = 0;)
else if (c <a & & c <b & & c <d & & <c e)
(Num_1 = c;
c = 0;)
else if (d <a & & d <b & & d <c & & d <e)
(Num_1 = D;
d = 0;)
d'autre
(Num_1 = e;
e = 0;)
if (a <b & A & C <& & a <d & & a <e & & a! = num_1 & & a! = 0)
(Num_2 = a;
a = 0;)
else if (b <a & & b <c & & <b & & d <b & e & b! = num_1 & & b! = 0)
(Num_2 = b;
b = 0;)
else if (c <a & & c <b & & c <d & & <c e c & &! = num_1 & & c! = 0)
(Num_2 = c;
c = 0;)
else if (d <a & & d <b & & d <c & & d <e & & d! = num_1 & & d! = 0)
(Num_2 = D;
d = 0;)
else if (e <a & & e <b & & e <c & & e <d & & e! = num_1 & & e! = 0)
(Num_2 = e;
e = 0;)printf ("% d% d% d \ n \ n \ n", num_1, num_2);

)

 
Il ya plusieurs façons de le faire.Beaucoup plus facile à lire / écrire en utilisant une boucle.
Un moyen facile de le faire est de trouver le min de tous les cinq, puis le stocker dans "num_1", puis trouver le min des quatre autres, de stocker et fait répéter jusqu'à ce que.

 
Au lieu d'utiliser cinq variables distinctes entier, il serait plus facile de mettre les données d'entrée dans un élément de tableau-cinq ans, puis le traiter avec une boucle.

Essayez de rechercher sur Google pour "algorithmes de tri", et vous trouverez la description des différentes techniques.Par exemple, le tri à bulles "est probablement plus simple de tous, bien qu'il soit relativement inefficaces:
http://en.wikipedia.org/wiki/Sorting_algorithm

 
Le tri et les tableaux de son grand, mais je ne peux pas les utiliser.Im assez bien limitée à des boucles et si les états d'autre.

J'ai eu le programme de travail en utilisant une boucle for, mais cela ne fonctionnera pas si j'ai des entrées en double.Il afficher mon programme dans une seconde, il suffit d'ouvrir mon ordinateur portable.Merci les gars.

 
variable d'état d'utilisation (bitmap) pour stocker si vars sont imprimées ou non.Commencer à en trouver un plus, une fois trouvées - l'imprimer et marquer sa variable bitmap Etat comme transformés alors recommencer en boucle et passer ces vars dont les états sont marqués comme triés.Ensuite, aucun tableau sera nécessaire.

 
C'est ce que j'ai, je me sers 1000000 afin qu'il sorte de exclure cette variable.Mais il finit par me visser dans le long terme.J'aimerais utiliser cette fonction bitmap, mais nous n'avons pas couverts que, et il l'habitude de nous de l'utiliser.Afin void (int a, int b, c, int d, int e)
(Int num_1 = 0;
int compteur;

for (count = 0; compteur <5; nombre )
(
if (a <b & A & C <& & a <d & & a <e)
(Num_1 = a;
a = 1000000;)
else if (b <a & & b <c & & <b & & d <b e)
(Num_1 = b;
b = 1000000;)
else if (c <a & & c <b & & c <d & & <c e)
(Num_1 = c;
c = 1000000;)
else if (d <a & & d <b & & d <c & & d <e)
(Num_1 = D;
d = 1000000;)
else if (e <a & & e <b & & e <c & & e <d)
(Num_1 = e;
e = 1000000;)

printf ("% d", num_1);
)
)

 
Code:

/ / Ceci est une mise en œuvre rapide et sale d'un tri à bulles.
Il trie en ordre croissant

/ / Commande.
J'ai utilisé DevCpp# Include <cstdlib>

# Include <stdio.h>

# Include <conio.h>using namespace std;

void SortIt (int *);int main (int argc, char * argv [])

(

int a [] = (1123, 675, 435, 33, 456);; tableau de nombres à trier

int i;for (i = 0; i <= 4; i ), les numéros de sortie non triés

printf ("% d", a );SortIt (a);printf ("\ n \ n");for (i = 0; i <= 4; i ); sortie triée numéros

printf ("% d", a );getch ();

system ("PAUSE");

EXIT_SUCCESS retour;

)void SortIt (int * a)

(

int i, du drapeau, de la température, de comptage;flag = 1; / / 0 indique pas swaps ont été faites, le tri se fait

count = 0; / / juste utilisé pour le débogage, il sera

/ / Fin à une condition de boucle infinie.while (drapeau! = 0 & count <2000)

(

flag = 0;

count ;

for (i = 0; i <= 3; i )

(

if (a > a [i 1]) / / test pour plus de condition

(

temp = a ; / / et swap si nécessaire

a = a [i 1];

temp a [i 1] =;

flag = 1; / / Définir l'indicateur d'indiquer encore à faire le tri

) / / Fin de celui-ci

) / / Fin de pour

) / / Fin de tout

) / / Fin de SortIt
 
Votre professeur règles ne vous laisse pas beaucoup à travailler.
Comment trouver une solution rentrant?
Code:

Afin void (int a, int b, c, int d, int e)

(

if (a> b)

Pour (b, a, c, d, e);

else if (b> c)

Pour (a, c, b, d, e);

else if (c> d)

Pour (a, b, d, c, e);

else if (d> e)

Pour (a, b, c, e, d);

d'autre

printf ("% d% d% d% d% d \ n", a, b, c, d, e);

)
 
echo47 a écrit:

les règles de votre professeur ne vous laisse pas beaucoup à travailler.

Comment à ce sujet?Code:

Afin void (int a, int b, c, int d, int e)

(

if (a> b)

Pour (b, a, c, d, e);

else if (b> c)

Pour (a, c, b, d, e);

else if (c> d)

Pour (a, b, d, c, e);

else if (d> e)

Pour (a, b, c, e, d);

d'autre

printf ("% d% d% d% d% d \ n", a, b, c, d, e);

)
 
Regardez encore!«Ordre» n'est pas une fonction de bibliothèque.La «fonction d'ordre lui-même appelle.

Oups, je l'ai dit plus tôt "réentrant".Le terme correct est "récursif".

 
echo47 a écrit:

Regardez encore!
«Ordre» n'est pas une fonction de bibliothèque.
Cette fonction s'appelle elle-même.Oups, je l'ai dit plus tôt "réentrant".
Le terme correct est "récursif".
 
const int taille = 5;
temp int;
int x] [size = (2, 6, 1, 7, 9);
for (int i = 0; i <taille-1; i )
for (int j = i 1; taille <j; j )
if (x <x [j]) (temp = x ; x = x [j]; x [j] = temp;)
for (i = 0; i <5; i ) cout <<x ;

 

Welcome to EDABoard.com

Sponsor

Back
Top