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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  C: Una función que reciba un parámetro desde una struct e imprima.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: C: Una función que reciba un parámetro desde una struct e imprima.  (Leído 2,454 veces)
ElChulon

Desconectado Desconectado

Mensajes: 8


Ver Perfil
C: Una función que reciba un parámetro desde una struct e imprima.
« en: 9 Abril 2016, 19:38 pm »

.


« Última modificación: 11 Abril 2016, 01:22 am por ElChulon » En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: C: Una función que reciba un parámetro desde una struct e imprima.
« Respuesta #1 en: 9 Abril 2016, 20:14 pm »

Cuándo pongas la etiqueta 'code' para poner el código usa, en la apertura 'code=c' para el resalto de sintaxis.
No uses fflush(stdin), muy mala práctica.

Pon todo el código para que podamos ver dónde está el fallo. Aquí solo se ve como llenas una estructura.


En línea

ElChulon

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: C: Una función que reciba un parámetro desde una struct e imprima.
« Respuesta #2 en: 9 Abril 2016, 20:25 pm »

Cuándo pongas la etiqueta 'code' para poner el código usa, en la apertura 'code=c' para el resalto de sintaxis.
No uses fflush(stdin), muy mala práctica.

Pon todo el código para que podamos ver dónde está el fallo. Aquí solo se ve como llenas una estructura.

Lo que he "hecho" lo he eliminado porque no tengo ni idea de qué hacia, y hasta ahora solo tengo eso. Necesito "tips" para saber como hacer la función que reciba el parámetro e imprima la cantidad de users en la sala de chat :(

Mi profesor de programación dijo que utilizáramos fflush(stdin), porque sino ocurría esto al ejecutar el programa:



No tengo mucho tiempo en C, no conozco exactamente la función que realiza fflush(stdin) (creo que era como para limpiar o algo así) pero la utilizo cada vez que sucede eso

Gracias por la sugerencia sobre la etiqueta.
« Última modificación: 9 Abril 2016, 20:27 pm por ElChulon » En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: C: Una función que reciba un parámetro desde una struct e imprima.
« Respuesta #3 en: 9 Abril 2016, 20:40 pm »

fflush sirve para vaciar flujos de salida, según dice el estándar: fflush(stdout) hará que el programa escriba todo lo que le queda por escribir a la pantalla, por ejemplo. Sin embargo fflush no está pensado para flujos de entrada por lo que fflush(stdin) no está definido: puede funcionar o no, depende del compilador.

En CHATROOM tienes un array e punteros a USER. Con esto te complicas un poco la existencia, por así decirlo.
Puedes hacer dos cosas:
1. Un array de USER con lo que trabajarías con un array normal
2. Una lista enlazada, eso es dentro de CHATROOM habría un puntero a USER y todo el trabajo lo harías con funciones orientadas a listas.
En línea

Gunhack

Desconectado Desconectado

Mensajes: 42



Ver Perfil
Re: C: Una función que reciba un parámetro desde una struct e imprima.
« Respuesta #4 en: 10 Abril 2016, 02:39 am »

Date  ;D Espero que sea intuitivo el código :P

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <windows.h>
  4.  
  5. using namespace std;
  6.  
  7. struct USER {
  8.  
  9. char nick[25];
  10. char ip[16];
  11. char email[30];
  12. };
  13.  
  14. struct CHATROOM {
  15.  
  16. int roomid;
  17. char nombre[20];
  18. int nUsers; //Número actual de usuarios
  19. USER lista[40];
  20. };
  21.  
  22. void nuevoChat(int maxChats, int &nChats, CHATROOM Chat[]); //Agrega un nuevo chat a la lista de chats
  23. int agregarUsuario(int nChats, CHATROOM Chat[]); //Agrega un usuario nuevo a un chat específico
  24. void ImprimeUsuarios(int indexChat, int nChats, CHATROOM Chat[]); //Imprime los usuarios dentro de el chat seleccionado o todos
  25. void Flush(); //Elimina la basura ( Como si fuera "flush()" )
  26.  
  27. int main() {
  28.  
  29.    int maxChats = 10; //Numero máximo de Chats
  30.    int nChats = 0; //Numero actual de Chats
  31.    char op; //Variable auxiliar para el menu de opciones
  32.    CHATROOM Chat[maxChats]; // Arreglo de chats
  33.  
  34.    //Creando un chat nuevo por defecto
  35.    Chat[nChats].roomid = nChats + 1; //Esto no es necesario en realidad, ya que no usamos el id de chat
  36.    Chat[nChats].nUsers = 0; // Ya que es un chat nuevo no contiene Usuarios, por eso se iguala a 0
  37.    strcpy(Chat[0].nombre, "CHAT 1"); //Ponemos nombre al nuevo chat
  38.    nChats++; //Aumentamos el numero de chats
  39.  
  40.    while(true) {
  41.  
  42.        system("cls");
  43.        printf("***MENU DE CHATS***\n\n");
  44.  
  45.        printf("1.- Agregar nuevo chat.\n");
  46.        printf("2.- Agregar usuario a chat.\n");
  47.        printf("3.- Imprimir usuarios de chat.\n");
  48.        printf("4.- Imprimir usuarios de chat especifico.\n");
  49.        printf("5.- Salir.\n\n");
  50.        printf("Seleccione su opcion: ");
  51.        scanf("%c", &op);
  52.  
  53.        system("cls");
  54.        Flush();
  55.  
  56.        switch(op) {
  57.  
  58.        case '1':
  59.  
  60.            nuevoChat(maxChats, nChats, Chat);
  61.            break;
  62.  
  63.        case '2':
  64.  
  65.            agregarUsuario(nChats, Chat);
  66.            break;
  67.  
  68.        case '3':
  69.  
  70.            ImprimeUsuarios(0,nChats, Chat);
  71.            break;
  72.  
  73.        case '4':
  74.  
  75.            int indexChat;
  76.            printf("Ingresa el ID del chat al que ingresara: ");
  77.            scanf("%d", &indexChat);
  78.  
  79.            while(indexChat < 0 || indexChat -1 >= nChats){
  80.  
  81.               printf("\nNo existe ningun chat con ese id!");
  82.               printf("\n\nIngresa el ID del chat al que ingresara: ");
  83.               scanf("%d", &indexChat);
  84.            }
  85.  
  86.            Flush();
  87.            system("cls");
  88.            ImprimeUsuarios(indexChat,nChats, Chat);
  89.            break;
  90.  
  91.        case '5':
  92.  
  93.            return 0;
  94.            break;
  95.  
  96.        default:
  97.  
  98.            printf("Opcion invalida! ");
  99.            break;
  100.        }
  101.  
  102.        system("Pause");
  103.    }
  104. }
  105.  
  106. void nuevoChat(int maxChats, int &nChats, CHATROOM Chat[]) {
  107.  
  108.    if(nChats < maxChats) {
  109.  
  110.        printf("***AGREGAR NUEVO CHAT***\n\n");
  111.  
  112.        Chat[nChats].nUsers = 0;
  113.  
  114.        printf("Ingresa el nombre del nuevo Chat: ");
  115.        gets(Chat[nChats].nombre);
  116.  
  117.        Chat[nChats].roomid = ++nChats;
  118.  
  119.        printf("\nChat Agregado!\n\n");
  120.    } else {
  121.  
  122.        printf("\n\nError, maximo de chats alcanzado!\n\n");
  123.    }
  124. }
  125.  
  126. int agregarUsuario(int nChats, CHATROOM Chat[]) {
  127.  
  128.    int indexChat;
  129.    USER newUs;
  130.  
  131.    printf("***AGREGAR NUEVO USUARIO***\n\n");
  132.  
  133.    printf("Ingresa el ID del chat al que ingresara: ");
  134.    scanf("%d", &indexChat);
  135.  
  136.    while(indexChat < 0 || indexChat -1 >= nChats){
  137.  
  138.       printf("\nNo existe ningun chat con ese id!");
  139.       printf("\n\nIngresa el ID del chat al que ingresara: ");
  140.       scanf("%d", &indexChat);
  141.    }
  142.  
  143.    Flush();
  144.  
  145.     printf("\n\n** Ingreso a %s **\n", Chat[indexChat - 1].nombre);
  146.  
  147.    if(Chat[indexChat - 1].nUsers <= 40) {
  148.  
  149.        printf("\nIngresa su nick: ");
  150.        gets(newUs.nick);
  151.        printf("Ingresa su IP: ");
  152.        gets(newUs.ip);
  153.        printf("Ingresa su email: ");
  154.        gets(newUs.email);
  155.  
  156.        Chat[indexChat - 1].lista[Chat[indexChat - 1].nUsers] = newUs;
  157.        Chat[indexChat - 1].nUsers++;
  158.        printf("\nUsuario agregado!\n\n");
  159.  
  160.    } else {
  161.  
  162.        printf("\nMaximo de usuarios alcanzado!\n\n");
  163.    }
  164. }
  165.  
  166. void ImprimeUsuarios(int indexChat, int nChats, CHATROOM Chat[]) {
  167.  
  168.    if(indexChat == 0) {
  169.  
  170.        for(int i = 0; i < nChats; i++) {
  171.  
  172.            printf("** USARIOS EN %d: %s **\n\n", i+1, Chat[i].nombre);
  173.  
  174.            for(int j = 0; j < Chat[i].nUsers; j++) {
  175.  
  176.                printf("- Usuario %d -\n", j+1);
  177.                printf("Nick: %s\n", Chat[i].lista[j].nick);
  178.                printf("IP: %s\n", Chat[i].lista[j].ip);
  179.                printf("Email: %s\n\n", Chat[i].lista[j].email);
  180.            }
  181.            printf("\n");
  182.        }
  183.    } else {
  184.  
  185.        printf("** USARIOS EN %d: %s **\n", indexChat, Chat[indexChat-1].nombre);
  186.  
  187.        for(int j = 0; j < Chat[indexChat-1].nUsers; j++) {
  188.  
  189.            printf("- Usuario %d -\n", j+1);
  190.            printf("Nick: %s\n", Chat[indexChat-1].lista[j].nick);
  191.            printf("IP: %s\n", Chat[indexChat-1].lista[j].ip);
  192.            printf("Email: %s\n\n", Chat[indexChat-1].lista[j].email);
  193.        }
  194.        printf("\n");
  195.    }
  196. }
  197.  
  198. void Flush() {
  199.  
  200.    char trash[10];
  201.    gets(trash);
  202. }
  203.  
En línea

ElChulon

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: C: Una función que reciba un parámetro desde una struct e imprima.
« Respuesta #5 en: 10 Abril 2016, 04:34 am »

Por mi vida santísima, espero algún día poder hacer eso jaja, gracias!
En línea

HardForo

Desconectado Desconectado

Mensajes: 219


HardForo.com


Ver Perfil WWW
Re: C: Una función que reciba un parámetro desde una struct e imprima.
« Respuesta #6 en: 16 Abril 2016, 14:04 pm »

No entiendo que pasa en este foro..... entro a leer los posts "viejos" y los primeros posts de cada hilo fueron editados y no contienen nada.  :silbar:

Eso no pasa en otros foros (con esta frecuencia al menos)

En línea

HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines