elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


  Mostrar Mensajes
Páginas: [1] 2
1  Programación / Programación C/C++ / Re: Colocar una expresión aritmética en un vector en: 18 Abril 2019, 13:34 pm
Ligera modificación para que funcione.

Código
  1.  
  2. void PonerExpresion (std::string c)
  3. {
  4.    int i, j;
  5.    std::string x, y;
  6.    std::vector<std::string> infija;
  7.  
  8.    i=0;
  9.    while (i < c.length()) {
  10.  
  11.   x = "";  
  12.   while (isdigit(c[i])) {
  13.   x += c[i];
  14.   std::cout << x << " while isdigit " << '\n';
  15.   i++;
  16.   }
  17. infija.push_back(x);  
  18.  
  19.   y = c[i];
  20.     if(y == "+" || y == "-" || y == "*" || y == "/" || y == "(" || y == ")") {
  21.   infija.push_back(y);
  22.   std::cout << y << " Signos " << '\n';
  23.   }
  24.  
  25.   i++;
  26.  
  27.     for (j = 0; j < infija.size(); j++) //muestra el vector para verificar el resultado.
  28.   {
  29.   std::cout << infija[j];
  30.     }  
  31. }
  32.    return;
  33. }
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
2  Programación / Programación C/C++ / Re: Cambiar colores en la terminal en: 18 Marzo 2019, 23:58 pm
Puedes usar secuencias de escape ANSI. Te pongo un ejemplo. Sdos


Código
  1. #include
  2.  
  3. int main(void)
  4. {
  5.        const char *const verde = "\033[0;40;32m";
  6.        const char *const subrayado_fazul_verde = "\033[4;44;32m";
  7.        const char *const normal = "\033[0m";
  8.  
  9.        printf("Mostrando %scolores%s !!!\n", verde, normal);
  10.        printf("Mostrando %scolores%s !!!\n", subrayado_fazul_verde, normal);
  11.  
  12.        return 0;
  13. }
  14.  
3  Programación / Programación C/C++ / Re: Eliminar elementos basura de un array en C en: 4 Febrero 2017, 23:53 pm
No creo que te funcione. Mira a ver ahora.

Código
  1.    include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. /*
  5. Eliminar elementos basura de un array en C
  6. « en: 30 Enero 2017, 18:46 »
  7. Hola, hace mucho que no entro en esta web y me da gusto volver a formar parte de esta comunidad. Bueno, dicho esto, expreso mi inquietud. Tengo una función que lo que tiene que hacer es "Emitir el valor máximo e indicar la cantidad de veces que apareció y el número de orden en que fue ingresado."
  8. He aquí el código:
  9. */
  10.  
  11. void funcion(int v[],int tam){
  12.    int max=0,i,j,acumulador=0;
  13.    int nro_orden[]={0, 0, 0, 0, 0, 0};
  14.  
  15.  
  16.    for(i=0;i<tam;i++){
  17.     nro_orden[i]=0;
  18.        }
  19.  
  20.    for(i=0;i<tam;i++){
  21.        if(v[i]>max){
  22.          max=v[i];         //establecemos el maximo
  23.        }
  24.    }
  25.  
  26.    for(i=0;i<tam;i++){
  27.        if(v[i]==max){
  28.          acumulador++;     //contamos la cantidad de veces que aparece el maximo
  29.        }
  30.    }
  31.  
  32.    i=0;
  33.    j=0;
  34.    while(i<tam){
  35.         if(max==v[i]){
  36.            nro_orden[j]=i+1;
  37.            j++;
  38.         }
  39.         i++;
  40.  
  41.    }
  42.  
  43.    printf("\nEl valor maximo es: %d",max);
  44.    printf("\nLa cantidad de veces que aparecio el maximo es: %d",acumulador);
  45.  
  46.    printf("\nEl numero de orden en que fue ingresado es: ");
  47.  
  48.    for(i=0;i<tam;i++){
  49.       if (nro_orden[i]) printf("[%d] ", nro_orden[i]);
  50.    }
  51. }
  52.  
  53. int main() {
  54. int vector[]={2, 9, 8, 4, 9, 5};
  55. funcion(vector, 6);
  56.  
  57. return 0;
  58. }
  59. [ /code]
4  Programación / Programación C/C++ / Re: Crear parejas de letras en C en: 29 Diciembre 2016, 18:13 pm
Código
  1. #include<stdlib.h>
  2. #include<time.h>
  3. #include<stdio.h>
  4.  
  5.  
  6. int usado(char, char*);
  7.  
  8. int main()
  9. {
  10.    int i;
  11.    char vector[26]={0};
  12.    char newChar;
  13.  
  14.  
  15.    srand((unsigned)time(NULL));
  16.  
  17.  
  18.    for(i=0; i<26; i++)
  19.    {
  20.        do {
  21.        newChar = 'A'+rand()%26;
  22.         } while(usado(newChar, vector));
  23.        vector[i] = newChar;
  24. }
  25.  
  26.    for(i=0; i<10; i++)
  27.    {
  28.        if (vector[i*2] < vector[i*2+1]) {
  29.        printf("%c%c ",vector[i*2],vector[i*2+1]);
  30.        } else printf("%c%c ",vector[i*2+1],vector[i*2]);
  31.    }
  32.  
  33.  
  34.    return 0;
  35.  
  36. }
  37.  
  38. int usado(char ch, char* array)
  39. {
  40. int i;
  41.  
  42. while (*(array+i) && ch != *(array+i) ) i++;
  43.  
  44. if (*(array+i)) return 1;
  45. return 0;
  46. }
  47.  
5  Programación / Programación C/C++ / Re: Ayuda solucionar error en PILAS en C. en: 10 Abril 2016, 17:49 pm
Tiene muchas cosas mal o por lo menos, rarillas.
Te he corregido el mínimo necesario para que funcione.
Código
  1.  
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <time.h>
  5.  
  6.  
  7. /* run this program using the console pauser or add your own getch, system("pause") or input loop */
  8.  
  9. //creacion de la estructura
  10. typedef struct Pila {
  11.    int dato;
  12.    struct Pila *sgte;
  13. } Pila;
  14.  
  15. //asignacion de memoria
  16. Pila *asignarMemoria(){
  17. return (Pila *)malloc(sizeof(Pila));
  18. }
  19.  
  20. //apilado
  21. Pila *apilar(Pila *p, int dato){
  22.  
  23. Pila *q = asignarMemoria(); //Pila auxiliar
  24. q->dato=dato;
  25. q->sgte=NULL;
  26.  
  27. if(p==NULL){
  28.  return q;
  29. }
  30. q->sgte = p;
  31. p = q;
  32. return p;
  33. }
  34.  
  35. //desapilado
  36. Pila *desapilar(Pila *p){
  37.  
  38. if(p == NULL){
  39.  return p;
  40. }
  41. Pila *q = p->sgte;
  42. p->sgte = NULL;
  43. // free(p); //liberar memoria
  44. return q;
  45. }
  46.  
  47. //listar la pila
  48. void mostrarPila (Pila *p){
  49. while(p) {
  50. printf("%d, ", p->dato);
  51. p = p->sgte;
  52. }
  53. }
  54.  
  55. /*
  56.  if(p!=NULL){
  57.   Pila *q = p; //pila auxiliar
  58.   while(q!=NULL){
  59.    printf("%d ", q->dato);
  60.    q = desapilar(q);
  61.    }
  62.   return;
  63.  }
  64.  printf("No hay elementos en la Pila\n");
  65. }
  66. */
  67.  
  68. //buscar un elemento en la pila
  69. int buscarPila(Pila *p, int dato){
  70. if(p!=NULL){
  71.  Pila *q = p; //pila auxiliar
  72.  while(q!=NULL){
  73.   if(q->dato==dato){
  74.    return 1; //verdadero si lo encuentra.
  75.   }
  76.   q = desapilar(q);
  77.  }
  78.  return 0; //falso, si no lo encuentra.
  79. }
  80. return 0; //falso, si no lo encuentra.
  81. }
  82.  
  83. int main(int argc, char *argv[]) {
  84.  
  85. //Menu Principal.
  86. int opcionMenu, volverIntentar, scanfValidador;
  87. srand(time(NULL));  //Semilla del creador de numeros Randoms
  88.  
  89. do{
  90. do{
  91.  
  92. printf("Seleccione una opcion\n");
  93. printf("[1] Ejercicio 1\n[2] Ejercicio 2\n[3] Ejercicio 3\n[4] Salir\n");
  94. scanfValidador = scanf("%d", &opcionMenu);
  95. fflush(stdin);
  96.  if(scanfValidador!=1){
  97.   printf("\nOpcion no valida, ingrese un valor numererico positivo.\n");
  98.   puts("");
  99.  }
  100. }while(scanfValidador!=1); //Validador
  101.  
  102.     if(opcionMenu == 1){
  103.      // Crear y listar una pila con n elementos. Ingresar un dato y consultar cuantas veces se repite y en que posiciones.
  104.   Pila *pila;
  105.   int n, i; //tamaño n de la pila
  106.   int numRand;
  107.   int scanfValidador3;
  108.  
  109.   do{
  110.        puts("Ingrese tamaño de la Pila la cual tendra numeros random del [0-10]");
  111.        scanfValidador3 = scanf("%d", &n);
  112.        fflush(stdin);
  113.        if(scanfValidador3!=1){
  114.        printf("\nOpcion no valida, ingrese un valor numererico positivo.\n");
  115.        puts("");
  116.  }
  117.        }while(scanfValidador3!=1); //Validador
  118.        i=n;
  119.  
  120.        while(n!=0){ //Recorrer Pila
  121.         numRand = rand() % 11; // genera un numero Random entre el 0 y el 10
  122.         //pila->sgte=NULL;
  123.         pila = apilar(pila, numRand);
  124.     n--;
  125.   }
  126.  
  127.   // while(i!=0) {
  128.   mostrarPila(pila);
  129. //  i--;
  130. //  }  
  131.  
  132.  }
  133.  
  134.  else if(opcionMenu == 2){
  135.   printf("Opcion 2\n");
  136.  }
  137.  
  138.  else if(opcionMenu == 3){
  139.   printf("Opcion 3\n");
  140.  }
  141.  
  142.  else if(opcionMenu == 4){
  143.   exit(0);
  144.  }
  145.  else{
  146.   puts("");
  147.   printf("Opcion invalida\n");
  148.   puts("");
  149.  }
  150.  int scanfValidador2;
  151. do{
  152.  printf("\nPara volver a intentar preciona [1] y da enter.\nPara salir use cualquier otro numero y precione enter.\n");
  153.  puts("");
  154.  scanfValidador2 = scanf("%d", &volverIntentar);
  155.  fflush(stdin);
  156.  if(scanfValidador2!=1){
  157.   printf("\nOpcion no valida, ingrese un valor numererico positivo.\n");
  158.   puts("");
  159.  }
  160. }while(scanfValidador2!=1); //Validador
  161. }while(volverIntentar==1);
  162. return 0;
  163. }
  164.  
6  Programación / Programación C/C++ / Re: eliminar números repetidos de dos vectores en: 7 Abril 2016, 00:47 am
Yo lo haría así. (Esta sin optimizar).
Sdos.
Código
  1. #include "stdio.h"
  2. #include "stdlib.h"
  3. #include "string.h"
  4. #include "time.h"
  5.  
  6. enum bool {false, true}
  7.  
  8. int main ()
  9.  
  10. {
  11.        int v_original [4];
  12.        int b_original [4];
  13.        int final[8]=0;
  14.        int usados[8];
  15.        int i, j, k=0, l=0;
  16.        bool repetido;
  17.        int  contUsados=0;
  18.  
  19.        printf("Programa union de vectores \n\n");
  20.  
  21.        for (i=0; i<4; i++)
  22. {
  23.                printf("Introduce el valor a[%d]:", i);
  24.                scanf("%d",&v_original[i]);
  25.        }
  26.         printf("\n");
  27.  
  28.        for (i=0; i<4; i++)
  29. {
  30.                printf("Introduce el valor b[%d]: ", i);
  31.                scanf("%d",&b_original[i]);
  32.        }
  33.  
  34.        for (i=0;i<4;i++)  { //exploramos uno a uno el vector inicial
  35.         repetido = false; //suponemos que no está repetido
  36.         for (j=0; j<contUsados;j++)   { //pero lo verificamos comprobando el vector de usados
  37.            if (v_original[i] == usados[j]) repetido = true;
  38.            }
  39.                if (repetido == false) { //si no ha sido usado
  40.                 final[k]= v_original[i]; //lo añadimos al vector final y
  41.                 usados[l]= v_original[i];   //anotamos que ha sido usado
  42.                 contUsados++;   //incrementamos el numero de elementos en el vector de usados
  43.                 k++;
  44.                 l++;
  45.                 }  //si ya ha sido usado, no hacemos nada: ni lo anotamos como usado, ni lo copiamos en el vector final
  46.               }
  47.  
  48.        for (i=0;i<4;i++)  {
  49.         repetido = false;    //hacemos lo mismo con el segundo vector
  50.         for (j=0; j<contUsados;j++)  {
  51.            if (b_original[i] == usados[j]) repetido = true;
  52.            }
  53.                if (repetido == false) {              
  54.                 final[k]= b_original[i];
  55.                 usados[l]= b_original[i];
  56.                 contUsados++;
  57.                 k++;
  58.                 l++;
  59.                 }
  60.         }
  61.  
  62.  
  63. printf("\n");
  64. printf("La union de los vectores a y b sera:");
  65. for(i=0;i<k;i++)
  66. printf(" %d ",final[i]);
  67. }
  68.  
  69.  
7  Programación / Programación C/C++ / Re: ¿Me podrian explicar como funciana los punteros en una pila con el sgte ejercic? en: 28 Febrero 2016, 00:34 am
Debería quedar así.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct nodo{
  5. int valor;
  6. struct nodo *siguiente;
  7. } tiponodo;
  8.  
  9. typedef tiponodo* pPila; //En pPila se guardará la dirección del primer elemento de la lista (pila)
  10. typedef tiponodo* pNodo; //Se define un nuevo tipo de dato, pNodo, que es un Puntero a una struct nodo (tiponodo)
  11.  
  12. void push(pPila *ptr, int v);
  13. int  pop(pPila *ptr);
  14.  
  15. int main() {
  16.  
  17. pPila *pila = NULL; //Se pone a cero la dirección contenida en pila. Es decir, lista vacía.
  18.  
  19. push(&pila, 5); //Se pasa la dirección de la pila
  20. push(&pila, 8);
  21. push(&pila, 10);
  22. printf("\n%d", pop(&pila));
  23. printf("\n%d", pop(&pila));
  24. printf("\n%d", pop(&pila));
  25.  
  26.  
  27. return 0
  28. }
  29.  
  30. void push(pPila *ptr, int v){ //Pasamos a la función la dirección de un elemento tipo pila.
  31.  
  32. pNodo nuevo = (pNodo ) malloc(sizeof(tiponodo)); //Se crea un nuevo nodo
  33. if (nuevo == NULL) exit(1);
  34. nuevo->valor = v;
  35. nuevo->siguiente = *ptr; //Se guarda la dirección del hasta ahora primer elemento de la lista
  36. *ptr = nuevo; //Se anota en pila la dirección de este nuevo nodo, que pasa a ser el primero
  37. }
  38.  
  39. int  pop(pPila *ptr){ //Pasamos a la función la dirección de un elemento tipo pila.
  40.  
  41.   pNodo ptrTemp; //Se crea una direccion a tiponodo para poder luego liberar memoria
  42.   int num;
  43.  
  44. if (*ptr == NULL) printf ("\nPila vacía.");
  45.   else {
  46. ptrTemp = *ptr; //Se guarda la dirección del primer elemento de la pila
  47. num =  ptrTemp->valor;
  48. *ptr = ptrTemp->siguiente; //Pila coge la dirección del siguiente elemento al primero, con lo que primero está listo para eliminar
  49. free(ptrTemp);
  50.       }
  51.  
  52.  return num;    
  53. }
  54.  
  55.  
8  Programación / Programación C/C++ / Re: Estructuras y reservar memoria en: 25 Febrero 2016, 23:01 pm
Te falta crear espacio (reservar memoria) para los punteros a struct Mazmorra dentro de _Punto.
Un saludo.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define MAX 20
  4.  
  5. typedef struct _Mazmorra { //Este struct tiene un tamaño de 2*int + 1*char
  6.    int x;
  7.    int y;
  8.    char c;
  9.  
  10. }Mazmorra;
  11.  
  12. typedef struct _Punto{ //Este struct tiene un tamaño de 4*Mazmorra
  13.    Mazmorra *P_final;
  14.    Mazmorra *P_principio;
  15.    Mazmorra *p_tamanyo;
  16.    Mazmorra *tamanyo_mazmorra[MAX][MAX];
  17. }Punto;
  18.  
  19. Punto* inicializar_mazmorra(){
  20.  
  21.    Punto *punto;
  22.    int x,y;
  23.  
  24.   punto=(Punto*)malloc(sizeof(Punto)); //Se crea espacio para un struct _Punto
  25.   if(punto==NULL){
  26.       printf ("error al reservar memoria");
  27.   }
  28.  
  29.   punto->P_final = (Mazmorra *) malloc(sizeof(Mazmorra)); //Se crea espacio para un struct Mazmorra
  30.   if(punto->P_final ==NULL){
  31.       printf ("error al reservar memoria");
  32.   }
  33.   punto->P_final=NULL;
  34.  
  35.   punto->P_principio = (Mazmorra *) malloc(sizeof(Mazmorra)); //Se crea espacio para un struct Mazmorra
  36.   if(punto->P_principio ==NULL){
  37.       printf ("error al reservar memoria");
  38.   }
  39.   punto->P_principio=NULL;
  40.  
  41.   punto->p_tamanyo = (Mazmorra *) malloc(sizeof(Mazmorra)); //Se crea espacio para un struct Mazmorra
  42.   if(punto->p_tamanyo ==NULL){
  43.       printf ("error al reservar memoria");
  44.   }
  45.   punto->p_tamanyo=NULL;
  46.  
  47.   for(x=0;x<MAX;x++){
  48.       for(y=0;y<MAX;y++){
  49.          punto->tamanyo_mazmorra[x][y] = (Mazmorra *) malloc(sizeof(Mazmorra)); //Se crea espacio para un struct Mazmorra
  50.             if(punto->tamanyo_mazmorra[x][y] ==NULL){
  51.       printf ("error al reservar memoria");
  52.   }
  53.            punto->tamanyo_mazmorra[x][y]=NULL;
  54.       }
  55.   }
  56.  
  57.   return punto;
  58. }
  59.  
  60. void Liberarmemoria(Punto *punto) {
  61.  
  62.    int x,y;
  63.  
  64.    free(punto->P_final);
  65.    free(punto->P_principio);
  66.    free(punto->p_tamanyo);
  67.       for(x=0;x<MAX;x++){
  68.       for(y=0;y<MAX;y++){
  69.            free(punto->tamanyo_mazmorra[x][y]);
  70.       }
  71.   }
  72.  
  73. }
  74.  
  75. int main(){
  76.    FILE *archivo;
  77.    Punto *punto;
  78.    int x;    
  79.  
  80.    punto = inicializar_mazmorra();
  81.  
  82.    punto->tamanyo_mazmorra[1][1]->x = 5;
  83.    archivo = fopen("prueba.dat","r");
  84.    if(archivo==NULL){
  85.        printf ("error");
  86.    }
  87.  
  88.    printf ("%c",punto->tamanyo_mazmorra[1][1]->x);
  89.  
  90.    //x = leer_archivo_mazmorra(archivo,punto);
  91.    Liberarmemoria(punto);
  92.    fclose(archivo);
  93.  
  94.  
  95. }
  96.  
9  Programación / Programación C/C++ / Re: Problema con cadena de caracteres y estructura (Novato) en: 18 Enero 2016, 00:25 am
Yo lo he resuelto así, pero tiene punteros, claro.
Código
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4. #define MAX 10
  5.  
  6. typedef struct asignaturas{
  7. char nombre[MAX];
  8. int nota[4];
  9. }asignatura;
  10.  
  11. typedef struct estudiantes{
  12. char nombre[MAX];
  13. char apellido[MAX];
  14. asignatura materia[3];
  15. }escolar;
  16.  
  17. void DatosAlum(escolar *alumno);
  18. void IntroNota(asignatura *materia, int indice);
  19.  
  20.  
  21. int main(){
  22.  
  23. int cant_alum, i,j;
  24. char nom_mate[3][MAX];
  25. escolar *alumno;
  26.  
  27.  
  28. printf("Introduzca cantidad de alumnos: \n");
  29. scanf("%d",&cant_alum);
  30.  
  31.    alumno = (escolar *) malloc(sizeof(escolar) *cant_alum);       //Declarando variable tipo struct "escolar"
  32.  
  33. for(i=0;i<cant_alum;i++) {
  34. printf("Alumno nro %d: \n", i+1);    
  35. DatosAlum(&alumno[i]);               //Introduciendo nombres y apellidos de alumnos
  36.     }
  37.  
  38. printf("Introduzca nombre de materias: \n");
  39. for(i=0;i<3;i++){
  40. printf("Materia nro %d: ",i+1);
  41. fflush(stdin);
  42. gets(nom_mate[i]);
  43. }
  44.  
  45. for(i=0;i<cant_alum;i++) {
  46. for(j=0;j<3;j++) {
  47. strcpy(alumno[i].materia[j].nombre,nom_mate[j]);     //Aca copìo y pego los nombres en  las estructuras.
  48.        }
  49.     }
  50.  
  51.  
  52. printf("Introduzca notas: \n");
  53. for( i=0; i<cant_alum; i++){
  54. printf("Alumno: %s %s\n", alumno[i].nombre, alumno[i].apellido);
  55. for( j=0; j<3; j++) {
  56. printf("Materia: %s \n",alumno[i].materia[j].nombre);  
  57. IntroNota( alumno[i].materia[i].nota, j);
  58.    printf("\nvalor de j= %d", j);
  59. }
  60. }
  61.  
  62.  
  63. return 0;
  64. }
  65.  
  66. void DatosAlum(escolar *alumno){
  67.  
  68. printf("Nombre: ");
  69. fflush(stdin);
  70. gets(alumno->nombre);
  71.  
  72. printf("Apellido: ");
  73. fflush(stdin);
  74. gets(alumno->apellido);
  75.  
  76. }
  77.  
  78. void  IntroNota(asignatura *materia, int indice)
  79. {
  80. int i;
  81.  
  82. for( i=0; i<4; i++) {
  83. printf("Nota %d: \n",i+1);
  84. scanf("%d", &(materia[indice].nota[i]) );
  85. }
  86.  
  87. }
10  Programación / Programación C/C++ / Re: PROBLEMA CON FICHEROS :V en: 17 Enero 2016, 23:11 pm
Te envío un código que sí funciona. Si solo quieres contar palabras en la primera línea, cambia el segundo if para que compruebe la condición (CP == 1).

#include <stdio.h>
#include <stdlib.h>
 

int main(int argc, char** argv)
{
    FILE *archivo;
    int ch, CL, CP,i;
    char arch[25];
 
 
    //printf("\nHoli! Dime el nombre archivo, incluyendo formato n.n:\n\n");
   // gets(arch);
   
 //Para comprobar que exista el archivo :v
    if ((archivo = fopen("registroPersona.txt", "r")) == NULL){
      perror(arch);
      return EXIT_FAILURE;
      }
   
   CL = 0;
   CP = 0;
   while ((ch = fgetc(archivo)) != EOF) {
      if (ch == '\n')   CL++;
      if(ch == ' ' || ch == '\n')  CP++;
     }
   
   fclose(archivo);
   printf("Numero de lineas en: %d\n",CL);
    printf("Cantidad de palabras: %d\n", CP);
   return EXIT_SUCCESS;

}
Páginas: [1] 2
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines