Solucion completa y funcional del programa de los cuatro numeros que hay que comparar y decir si son iguales o diferentes.
El código fuente pudo ser presentado en este sitio gracias a:
http://formatmysourcecode.blogspot.com/
:-) Uselo cuando consideren!
/*
Programa para determinar estado de igualdad de cuatro numeros.
(C) 2009 Irving AJ Rivas Z
Este programa es software libre: puedes redistribuirlo y/o modificarlo
bajo los términos de la Licencia Pública General GNU como está publicada
por la Fundación de Código Libre, ya sea la versión 3 de la Licencia o
(a su opción) cualquier versión posterior.
Este programa se distribuye con la esperanza de que sea útil,
pero SIN GARANTIA ALGUNAS; sin siquiera la garantía MERCANTIL
implícita o de CONVENIENCIA PARA UN PROPOSITO PARTICULAR. Vea la Licencia
Pública General GNU para más detalles.
Debería haber recibido una copia de la Licencia Pública General junto con
este programa. Si no, vea <http://www.gnu.org/licenses/>.
*/
#include <stdio.h>;
#include <stdlib.h>;
typedef struct numeroygrupo Numeroygrupo;
struct numeroygrupo{
int numero;
int grupo;
char id;
};
void dado(Numeroygrupo a,Numeroygrupo b,Numeroygrupo c,Numeroygrupo d);
int main(){
Numeroygrupo a={0,1,'A'};
Numeroygrupo b={0,2,'B'};
Numeroygrupo c={0,3,'C'};
Numeroygrupo d={0,4,'D'};
int solucion;
printf("Este programa hace una distincion entre los numeros que ud digite.\n");
printf("Digite el primer numero (de ahora en adelante, A)\n");
scanf("%d",&a.numero);
printf("Digite el segundo numero (de ahora en adelante, B)\n");
scanf("%d",&b.numero);
printf("Digite el tercer numero (de ahora en adelante, C)\n");
scanf("%d",&c.numero);
printf("Digite el cuarto numero (de ahora en adelante, D)\n");
scanf("%d",&d.numero);
dado(a,b,c,d);
system("PAUSE");
return 0;
}
void dado(Numeroygrupo a,Numeroygrupo b,Numeroygrupo c,Numeroygrupo d){
int respuesta = 0;
if(a.numero == b.numero){
b.grupo = a.grupo;
}
if(a.numero == c.numero){
c.grupo = a.grupo;
}
if(a.numero == d.numero){
d.grupo = a.grupo;
}
if(b.numero == c.numero){
c.grupo = b.grupo;
}
if(b.numero == d.numero){
d.grupo = b.grupo;
}
if(c.numero == d.numero){
d.grupo = c.grupo;
}
Numeroygrupo Grupo[] = {a,b,c,d};
{//organiza por grupos metodo burbuja
Numeroygrupo Placeholder;
int i,w;
for(w=0;w<2;w++){
for(i=0;i<4;i++){
if(i<3){
if(Grupo[i+1].grupo<Grupo[i].grupo){
Placeholder = Grupo[i];
Grupo[i]=Grupo[i+1];
Grupo[i+1]=Placeholder;
}
}
}
}
}//fin de organizacion metodo burbuja
{//nuevo algoritmo de impresion
//igrupo itera por grupos, ielemento itera por elementos.
int igrupo=1,ielemento,novacio,masdeuno;
//habra un maximo de cuatro grupos.
for(;igrupo<=4;igrupo++){
novacio=0;
masdeuno=0;
printf("{");
for(ielemento=0;ielemento<4;ielemento++){
if(Grupo[ielemento].grupo==igrupo){
printf("%c,",Grupo[ielemento].id);
novacio=1;
masdeuno++;
}
}
if(novacio==1){
printf("\b}");//lo unico q staba n if original
(masdeuno==1)?printf(" es diferente.\n"):printf(" son iguales.\n");
}else printf("\b");
}
}//fin de nuevo algoritmo de impresion
}
Notas: si estas programando en Dev C++, para que este codigo funcione y sea legible, pegalo primero en wordpad, luego pasalo a dev-c++. Tendras que darle tabulacion tu misma.
Por otro lado, si estas bajo linux (con GUI), pegalo en el IDE (casi 100% seguro lo pega bien), o en el editor de texto de tu preferencia.
Si estas bajo linux (sin GUI), no creo que necesites esto, que haces aqui?