Guest User

Untitled

a guest
Apr 22nd, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.64 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <stdlib.h>
  4. #include <ctype.h>
  5. #include <stdbool.h>
  6.  
  7. /*CREAR 'N' CONJUNTOS (VECTORES), CON 'N' ELEMENTOS EN CADA VECTOR, Y LUEGO LLENARLOS CON CARACTERES QUE NO SE REPITAN EN EL MISMO VECTOR. */
  8.  
  9. bool verificador(int i, int j,char **matriz); //prototipo de funcion
  10.  
  11. int main ()
  12. {
  13. system("color f4");
  14.  
  15. char **matriz; //Matriz Dinamica
  16.  
  17. int vectores, elementos;
  18.  
  19. int num; //Variable que le va a indicar al usuario en qué conjunto está.
  20.  
  21. do //Utilizo un 'do-while' para validar el ingreso del tipo de dato.
  22. {
  23.  
  24. system("CLS");
  25. printf("DIGITE EL NUMERO DE CONJUNTOS QUE DESEA CREAR (DEBE SER MAYOR A '0'): ");
  26. }
  27. while(!scanf("%d",&vectores)==1 || vectores==0);
  28.  
  29.  
  30. matriz = (char**)malloc(vectores*sizeof(char*)); //Reservando memoria, para el puntero 'matriz'.
  31.  
  32. int CantidadElementos[vectores]; //Éste vector, me crea la cantidad de conjuntos(vectores) que hay en '**matriz',
  33. // para luego llenarlos con la cantidad de elementos de cada vector.
  34.  
  35. for(int i=0; i<vectores; i++)
  36. {
  37. num=num+1; //Para indicarle al usuario en qué conjunto está posicionado.
  38. do
  39. {
  40. system("CLS");
  41. printf("DIGITE LA CANTIDAD DE ELEMENTOS QUE DESEA INGRESAR EN EL CONJUNTO %d (DEBE SER MAYOR A '0'): ",num);
  42. }
  43. while(!scanf("%d",&elementos)==1 || elementos==0);
  44.  
  45.  
  46. CantidadElementos[i]=elementos; //Se guarda el numero de elementos del conjunto
  47.  
  48. matriz[i]= (char*)malloc(elementos*sizeof(char)); //Reservando memoria, para el vector.
  49.  
  50. for(int j=0; j<elementos;j++) //Llenando el vector.
  51. {
  52. fflush(stdin); //Liberar Memoria
  53. do
  54. {
  55. system("CLS");
  56. printf("DIGITE LOS ELEMENTOS QUE QUIERE INGRESAR EN EL CONUNJUNTO %d (NO SE PUEDEN REPETIR): ",num);
  57. }
  58. while(!scanf("%c",&matriz[i][j])==1 || verificador(i,j,matriz)==true); //while(Verifica el tipo de dato ó si encuentra
  59. //el valor repetido en el vector.
  60.  
  61. matriz[i][j]=toupper(matriz[i][j]); //Convertir el caracter ingresado en mayúscula.
  62. }
  63. }
  64. num=0; //inicializo nuevamente la variable que le indicara al usuario el numero del conjunto.
  65.  
  66. for(int a=0;a<vectores;a++) //Mostrar en Pantalla, caracteres ingresados.
  67. {
  68. num=num +1;
  69. printf("nCONJUNTO Nº %d: n", num);
  70.  
  71. for(int j=0;j<CantidadElementos[a];j++)
  72. {
  73. printf("| %c | t",matriz[a][j]);
  74. }
  75.  
  76. printf("n");
  77. }
  78.  
  79. free(matriz); //Liberar memoria de la matriz dinamica.
  80. return 0;
  81. }
  82.  
  83. bool verificador(int i, int j, char **matriz) //Verifica si el caracter ingresado se repite en el mismo vector
  84. {
  85. int c;
  86.  
  87. if(j==0) //Si 'j' es = 0, se da por entendido que es el primer ciclo de ingreso de datos, por lo tanto no hay
  88. // numeros anteriores para verificar.
  89. {
  90. return false;
  91. }
  92. else if(j>0)
  93. {
  94. c=j-1; //Le resto '1' para que no compare la misma posicion, sino la anterior.
  95. }
  96.  
  97. for(int columna=c;columna==0;columna--)
  98. {
  99. if(matriz[i][columna]==matriz[i][j])
  100. {
  101. return true; //si se encuentra el valor, regrese true
  102. }
  103. }
  104. return false; //si no lo encuentra , regrese falso.
  105. }
Add Comment
Please, Sign In to add comment