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

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


  Mostrar Mensajes
Páginas: [1] 2
1  Programación / Programación C/C++ / Re: Problema con cadena de caracteres y estructura (Novato) en: 6 Enero 2016, 17:47 pm
Muchas gracias por la respuesta, tomaré en cuenta todo lo que has dicho referente a l gets, getch,fflush.


Hice lo que dijiste, realice todo en main y funcionó correctamente, solo hice una función extra para imprimir.  Seguiré estudiando punteros para hacerlo como dices, ya que de esa forma es que quiero que me quede el código.

Gracias!
2  Programación / Programación C/C++ / Problema con cadena de caracteres y estructura (Novato) en: 1 Enero 2016, 23:47 pm
Primero quisiera aclarar que soy novato programando, estoy apenas aprendiendo punteros y por eso no se lo he integrado al siguiente codigo.

Estoy intentanto realizar un programa para el control de notas. Ya logré fijar y mostrar los nombres y apellidos de los estudiantes, luego introduje los nombres de las materias en una variable char en el Main, para luego copiarlos con strcpy a cada estructura (Me imagino que hay mejores formas de hacerlo pero esta es la que mi ignorancia me permite, por ahora)

Mi problema es que al introducir las notas, el nombre de la primera materia se mantiene pero el resto de los nombres se pierde, mostrandome ASCII. Verifiqué antes de llegar a esa parte del código y los nombres se guardan bien pero despues de alli se daña. Que consejos me dan?

Aca el código:

Código
  1. #include<stdio.h>
  2. #include<string.h>
  3. #define MAX 10
  4.  
  5. typedef struct asignaturas{
  6. char nombre[MAX];
  7. int nota[4];
  8. }asignatura;
  9.  
  10. typedef struct estudiantes{
  11. char nombre[MAX];
  12. char apellido[MAX];
  13. asignatura materia[3];
  14. }escolar;
  15.  
  16. escolar DatosAlum();
  17. escolar IntroNota(int cant_alum,int indice);
  18.  
  19.  
  20. int main(){
  21.  
  22. int cant_alum, i,j;
  23. char nom_mate[3][MAX];
  24.  
  25.  
  26. printf("Introduzca cantidad de alumnos: \n");
  27. scanf("%d",&cant_alum);
  28.  
  29. escolar alumno[cant_alum];       //Declarando variable tipo struct "escolar"
  30.  
  31. for(i=0;i<cant_alum;i++){
  32. printf("Alumno nro %d: \n", i+1);    
  33. alumno[i]=DatosAlum();               //Introduciendo nombres y apellidos de alumnos
  34. }
  35.  
  36. printf("Introduzca nombre de materias: \n");
  37. for(i=0;i<3;i++){
  38. printf("Materia nro %d: ",i+1);
  39. fflush(stdin);
  40. gets(nom_mate[i]);
  41. }
  42.  
  43. for(i=0;i<cant_alum;i++){
  44. for(j=0;j<3;j++){
  45. strcpy(alumno[i].materia[j].nombre,nom_mate[j]);     //Aca copìo y pego los nombres en  las estructuras.
  46. }
  47. }
  48.  
  49.  
  50. printf("Introduzca notas: \n");
  51. for(i=0;i<cant_alum;i++){
  52. printf("Alumno: %s %s\n",alumno[i].nombre,alumno[i].apellido);
  53. for(j=0;j<3;j++){
  54. printf("Materia: %s \n",alumno[i].materia[j].nombre);  //Aqui se daña mi codigo
  55.                                                                //El primer nombre se imprime bien, el resto sale mal.
  56. alumno[i]=IntroNota(cant_alum,j);
  57. printf("valor de j= %d",j);
  58. }
  59. }
  60.  
  61.  
  62. return 0;
  63. }
  64.  
  65. escolar DatosAlum(){
  66. 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. return alumno;
  77. }
  78.  
  79. escolar IntroNota(int cant_alum,int indice){
  80. escolar alumno;
  81. int i;
  82.  
  83. for(i=0;i<4;i++){
  84. printf("Nota %d: \n",i+1);
  85. scanf("%d",&alumno.materia[indice].nota[i]);
  86. }
  87.  
  88. return alumno;
  89. }
  90.  
3  Programación / Programación C/C++ / Re: Programa que simula lista con datos aleatorios lenguaje C en: 29 Noviembre 2015, 08:16 am
Bueno...

Gracias por el link, ya lo había leído.

Ya entendi mi primera duda, pero sigo sin aclarar la 2da y ultima sobre "k%10?", no entiendo el signo de interrogación. 

4  Programación / Programación C/C++ / Programa que simula lista con datos aleatorios lenguaje C en: 28 Noviembre 2015, 08:06 am
Como evaluación final, me mandaron a analizar un programa que simula una lista con datos aleatorios hecho en lenguaje C,

Uso Dev-C++

Tengo dudas del funcionamiento de varios codigos que me impiden verlo claramente, espero me puedan ayudar.

Mi primera duda está relacionada con el siguiente codigo:
Código
  1. #define MX 9
  2. int d;
  3.  
  4. randomize();
  5.    for(d=rand(MX);d; ){
  6.         d=random(MX);
  7. }
  8.  


En el Dev-C++ no me funciona el randomize, buscando vi que podía usar el srand() el cual haciendo algunas pruebas si me funciona. Pero mi duda esta en el for, nunca lo he usado así y me cuesta entenderlo, ya que en las paginas veo es el tipico (i=0;i<10;i++). No sabía que la parte de incremento se podía dejar vacía, no se si este ciclo está bien, me lo pueden aclarar?

2da Duda:

El programa tiene un printf de la siguiente manera:

Código
  1. int k;
  2.  
  3. printf("%c", (k%10? ' ' : '\n'));
  4.  

Pienso que este printf está mal porque %c es para caracteres y lo que está despues de la coma es una división, lo que no entiendo de ella es el signo de interrogación (k%10?), acaso eso hace que sea valido usar %c ??


 
5  Programación / Programación C/C++ / ¿Se puede imprimir Dos columnas paralelas en C? en: 5 Agosto 2015, 01:15 am
Buenas, estoy aprendiendo en C y realizando ejercicios básicos que consigo de la web

El ejercicio me pide que imprima dos columnas una que vaya del 1 al 100 y otra del 100 al 1

Quisiera que me mostrara las columas de este modo:


Columna 1        Columna 2
       1                   100
       2                     99
       3                     98
       4                     97
 

Cada columna lleva un for, y de la manera en que los aplico me queda una columna sobre otra.

He buscado pero no encuentro nada identico en la web, he leido que no existe una funcion para hacer esto en C, solo usando los espacios en printf (eso hice pero me queda una sobre otra)

Entonces, ¿Se puede imprimir dos columnas paralelas en lenguaje C?

Gracias!
6  Programación / Programación C/C++ / Re: Error al guardar muchos datos en arrays multidimensional (lenguaje C) en: 30 Julio 2015, 13:26 pm
Si bueno, en ese caso que mencione me funciono y no molesto mas, por eso lo puse en todos lados para prevenir.

Cuando tengas oportunidad explicas la solucion para no usar fflush(stdin) todo lo que ayude en mi aprendizaje es bienvenido.

Y claro seguro seguire comentando, me toca aplicar funciones, punteros y sacar los promedios, estoy casi seguro que tendre muchos errores.

Muchas gracias amigo por la ayuda, seguire editando el codigo.
7  Programación / Programación C/C++ / Re: Error al guardar muchos datos en arrays multidimensional (lenguaje C) en: 30 Julio 2015, 13:06 pm
Buenisimo, ya voy entendiendo amigo.

Lo de fflush(stdin) lo habia puesto porque al principio tengo un scanf y luego le sigue un gets, entonces al compilar me saltaba un ciclo en for, lei algo sobre que el scanf al finalizar agrega un salto de line \n y el gets lo leia y guardaba el espacio en un elemento del arreglo.

Código
  1.        printf("Cuantos alumnos desea registrar?: ");
  2.        fflush(stdin);
  3.        scanf("%d", &cant_alum);      // <=== aca tengo el scanf//
  4.  
  5.            for (i=1; i<cant_alum+1; i++){
  6.                printf("Alumno nro %d: ",i);  //<===y aqui al compilar en vez de "Alumno nro 1, me saltaba a Alumno nro 2"//
  7.                fflush(stdin);
  8.                gets(nom_alum[i]);    //<=== este el gets//
  9.  


Ya empiezo a corregir el resto.

Con esto podré ya imprimir todos los datos agregados o todavia falta?
8  Programación / Programación C/C++ / Re: Error al guardar muchos datos en arrays multidimensional (lenguaje C) en: 30 Julio 2015, 11:38 am
Perfecto, ya he modificado el arreglo de trayecto, y los char lo he puesto. voy a seguir con los valores de tu ejemplo y luego los modifico a los que requiera.

Código
  1. char nom_alum[10][30];
  2. char nom_mate[10][40];
  3. int  not_tra[4][10];
  4.  

habia puesto 4 porque en los FOR iniciaba con el i=1, para en el printf usar el "i" para ordenar los mensajes por el numero de alumnos ejemplo: alumno nro 1; igual veo que es un desperdicio de elemento.

También quite las variables globales del main.. estaba apenas aprendiendo la diferencia entre variables locales y globales. Gracias por la aclaratoria.
9  Programación / Programación C/C++ / Error al guardar muchos datos en arrays multidimensional (lenguaje C) en: 30 Julio 2015, 10:14 am
Buenas, estoy aprendiendo a programar en C y tengo muchas dudas con respecto a guardar datos en los arreglos multidimensionales.

// Tengo un ejercicio que dice: Un instituto desea controlar los resultados de los alumnos en las diferentes asignaturas de sus cursos de informatica, el programa debe leer las calificaciones obtenidas en las diferentes asignaturas y visualizar en pantalla el numero de cada estudiante seguipo por la media del estudiantes y una lista de las calificaiones parciales de ese estudiante.

el programa visualizará tambien la calificacion media de todos los estudiantes en cada asignatura. //


Es la primera vez que hago un ejercicio como este, siempre he hecho cosas sencillas, el caso es que mi codigo va bien hasta el punto en que tengo que guardar las notas en los arrays, ya que en el modo en que lo hago se me sobreescribe las notas de un alumno sobre otra.  Para el instituto que lo hago no es por semestres sino por trimestres, tres trimestres en un año.

Al final me da datos erroneos, de otras partes de la memoria. Se que deberia usar punteros y funciones pero como dije soy novato y me confundo. Quiero ver primero que funciona y luego darle orden.

como seria la forma correcta de guardar las notas para cada alumno y materia?

este es mi codigo

Código
  1.  
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5. #include <conio.h>
  6.  
  7. //Declarando variables globales para que el usuario establezca limites en los ciclos FOR//
  8. int cant_alum;
  9. int cant_mate;
  10. int cant_nota;
  11.  
  12. int main()
  13. {
  14.    //Arrays para nombres de alumnos y materias ---Arrays de caracteres---//
  15.    char nom_alum[cant_alum][30];
  16.    char nom_mate[cant_mate][40];
  17.  
  18.    //Arrays para notas de trayectos ---not_tra1 = notas del trayecto1--- //
  19.  
  20.    int  not_tra1[4][cant_nota];    
  21.    int  not_tra2[4][cant_nota];
  22.    int  not_tra3[4][cant_nota];
  23.  
  24.    //Llamando a las variables globales//
  25.    cant_alum;
  26.    cant_mate;
  27.    cant_nota;
  28.  
  29.    //Enteros usados en los ciclos FOR//
  30.    int i;
  31.    int j;
  32.    int k;
  33.  
  34.  
  35. //Inicia el programa//
  36.        printf("Cuantos alumnos desea registrar?: ");
  37.        fflush(stdin);
  38.        scanf("%d", &cant_alum);
  39.  
  40.            for (i=1; i<cant_alum+1; i++){
  41.                printf("Alumno nro %d: ",i);
  42.                fflush(stdin);
  43.                gets(nom_alum[i]);
  44.    }
  45.  
  46.        printf("\nCuantas materias desea registrar?: ");
  47.        fflush(stdin);
  48.        scanf("%d",&cant_mate);
  49.  
  50.            for(i=1; i<cant_alum+1; i++){
  51.                printf("Materia nro %d: ",i);
  52.                fflush(stdin);
  53.                gets(nom_mate[i]);
  54.            }
  55.  
  56.    printf("\nCuantas evaluaciones fueron por trayecto?: ");
  57.    fflush(stdin);
  58.    scanf("%d", &cant_nota);
  59.  
  60.  
  61. //PARTE 2: GUARDAR DATOS. MAL HECHO//
  62.  
  63.            for(i=1; i<cant_alum+1; i++){
  64.                printf("\n\n********** Alumno nro %d : %s **********\n" , i, nom_alum[i]);
  65.  
  66.                        for(j=1; j<cant_mate+1; j++){
  67.                            printf("\n\nIngrese las notas parciales de %s\n", nom_mate[j]);
  68.  
  69.                                printf("\n===== Trayecto 1 =====\n\n");
  70.                                    for (k=1; k<cant_nota+1; k++){
  71.                                        printf("Nota %d: ", k);
  72.                                        fflush(stdin);
  73.                                        scanf("%d",&not_tra1[k]);
  74.                            }
  75.                                printf("\n===== Trayecto 2 =====\n\n");
  76.                                    for (k=1; k<cant_nota+1; k++){
  77.                                        printf("Nota %d: ", k);
  78.                                        fflush(stdin);
  79.                                        scanf("%d",&not_tra2[k]);
  80.                            }
  81.                                printf("\n===== Trayecto 3 =====\n\n");
  82.                                    for (k=1; k<cant_nota+1; k++){
  83.                                        printf("Nota %d: ", k);
  84.                                        fflush(stdin);
  85.                                        scanf("%d",&not_tra3[k]);
  86.                            }
  87.                        }
  88.                    }
  89.  
  90. printf("Esto se muestra sin error");
  91.  
  92. //Aca si aplico ciclos FOR con printf para mostrar los valores guardados en los arreglos, todos los datos mostrados son erroneos//
  93.  
  94.  
  95. return 0;
  96. }
  97.  


Al analizar pienso que guardar las notas de la forma ejemplo:

 scanf("%d", &not_tra1 [k]);  no está bien hecho, creo que deberia ser &not_tra1
  •  ... donde "X" sea la variable pero no se como organizarlo, de las maneras que las he hecho todas malas.

tambien para los arreglos de trayectos tengo

not_tra1[4][cant_nota]; Donde 4 quise definir la cantidad de trayectos pero se ahora se que es un error porque no dejo crecer la matriz en filas, quisiera que sea automatica pero dejando [ ] vacio me tira error.


Y por ultimo veo que guardar todas las notas de los mismos alumnos y materias de un trayecto en un solo arreglo  es una cantidad de numeros desorganizada.. pero con tanto lio no se como avanzar

Espero me puedan ayudar, soy muy novato como ven... Gracias!
10  Programación / Programación C/C++ / Contar mayusculas de un array y diga cuantas de cada letra se encontró en: 14 Julio 2015, 12:30 pm
Buenas a todos

Es mi segunda duda con respecto a arrays de caracteres, perdonen mi ignorancia, me estoy iniciando en programacion con C..

Tengo un ejercicio de arrays el cual dice:

Contar el numero de veces que cada letra mayuscula se producen en una linea de texto leida por el teclado y decir que caracteres se encontraron y cuantas veces se repitió cada uno.

He logrado hacer que cuente la cantidad de mayusculas encontradas a través de éste bucle

Código
  1. while(cadena[i] != NULL)
  2. {
  3. if ((cadena[i] >= 'A' && cadena[i] <= 'Z'))
  4. contador++;
  5.  
  6. i++;
  7. }

Pero no sé como hacer para que me diga cuantas veces se repitió A,B,C etc..

Estoy usando una cadena unidimensional para guardar el texto del teclado.

Otra cosa muy importante y es lo que me está impidiendo continuar, ¿como se hace para mostrar un caracter almacenado en un elemento del array?

Me gustaria que mostrará el mensaje como:

0=H
1=O
2=L
3=A

y asi conocer en que indice se encuentra cada caracter para despues comparar cada uno con un if /else if, pero sin resultado positivos, he intentado con:

Código
  1.    char cadena[20];
  2.    printf("ingrese una cadena:");
  3.    scanf("%s", cadena);
  4.  
  5.    int i=0;
  6.    for(i=0;i<20;i++){
  7.        cadena[i]=i;
  8.        printf("indice %d= %c\n",i,cadena[i])
  9.    }
  10.    getch();
  11.    return 0;

Eso es lo más cerca que he estado de conseguir la lista pero me muestra simbolos y caritas  :huh:

Espero me hayan entendido y me puedan orientar.

OJO: ya busque en el foro "programacion c/c++", como "mayusculas" y solo me muestra cinco post, ninguno como éste.
Páginas: [1] 2
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines