• Miércoles 15 de Mayo de 2024, 05:22

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - tomario

Páginas: [1]
1
C/C++ / Re: meter en una funcion
« en: Martes 4 de Enero de 2011, 17:02 »
lo que necesito es hacer el main y en ese main llamar al resto de funciones.
si me pueden ayudar
gracias

2
C/C++ / meter en una funcion
« en: Viernes 31 de Diciembre de 2010, 11:56 »
hola en clase me han dado este codigo y tengo que meterlo en una funcion, cualquier ayuda que me puedan dar o como debo empezar, llevo dos dias y no he conseguido nada, gracias

Código: C
  1.  
  2. #include <stdio.h>  
  3. #ifndef _LINKEDLIST_H_
  4. #define _LINKEDLIST_H_
  5. #ifndef _POLYGONSTRUCT_H_
  6. #define _POLYGONSTRUCT_H_
  7. #include <GL/gl.h>  
  8. #define MAXVERTS 32
  9.  
  10.  
  11. typedef struct poly_struct {
  12.     int type;           /* E.g., 0=SQUARE, 1=POLY, 2=RECT, ... */
  13.     GLint numVerts;     /* # of vertices in polygon */
  14.     GLdouble v[MAXVERTS][2];    /* Polygon's vertex array:       */
  15.                 /* v[i][0] = vertex i's x-coord; */
  16.                 /* v[i][1] = vertex i's y-coord  */
  17.     GLdouble center[2];     /* Polygon's "center" point, for use in */
  18.                 /* rotating polygon                     */
  19.     GLdouble rot_angle;     /* Rotation angle for polygon (degrees) */
  20.     GLdouble rgb[3];        /* Polygon's color: 0.0=off, 1.0=max; */
  21.                 /* rgb[0]=red, [1]=green, [2]=blue    */
  22. } Polygon;
  23. #endif
  24.  
  25.  
  26.  
  27. typedef struct polygon_list_struct {
  28.     Polygon p;
  29.     struct polygon_list_struct *next,   /* Pointers to next, prev polygons */
  30.                                *prev;   /* in the doubly-linked list */
  31. } Polygon_list_node;
  32.  
  33.  
  34. #endif
  35.  
  36. /*
  37.  * Global pointers for the linked list:
  38.  */
  39. Polygon_list_node *head = NULL, /* Pointer to the head of the list */
  40.                   *curr = NULL, /* Pointer to the currently selected node */
  41.                   *tail = NULL; /* Pointer to the tail of the list */
  42.  
  43. void InsertAfter(Polygon_list_node *item, Polygon_list_node *afterMe) {
  44.    /*
  45.     * Inserts *item after *afterMe in the linked list:
  46.     */
  47.     if (afterMe == NULL) {
  48.         if (head == NULL && tail == NULL) { /* empty list */
  49.             head = tail = item;
  50.             item->prev = item->next = NULL;
  51.         }
  52.         else
  53.             fprintf(stderr,"InsertAfter: cannot insert after a NULL ptrn");
  54.         return;
  55.     }
  56.     item->prev = afterMe;
  57.     if (afterMe == tail) {
  58.         tail = item;
  59.         item->next = NULL;
  60.     }
  61.     else {
  62.         item->next = afterMe->next;
  63.         item->next->prev = item;
  64.     }
  65.     afterMe->next = item;
  66. }
  67.  
  68. void InsertBefore(Polygon_list_node *item, Polygon_list_node *beforeMe) {
  69.    /*
  70.     * Inserts *item before *beforeMe in the linked list:
  71.     */
  72.     if (beforeMe == NULL) {
  73.         if (head == NULL && tail == NULL) { /* empty list */
  74.             head = tail = item;
  75.             item->prev = item->next = NULL;
  76.         }
  77.         else
  78.             fprintf(stderr,"InsertBefore: cannot insert before a NULL ptrn");
  79.         return;
  80.     }
  81.     item->next = beforeMe;
  82.     if (beforeMe == head) {
  83.         head = item;
  84.         item->prev = NULL;
  85.     }
  86.     else {
  87.         item->prev = beforeMe->prev;
  88.         item->prev->next = item;
  89.     }
  90.     beforeMe->prev = item;
  91. }
  92.  
  93. void RemoveItem(Polygon_list_node *item) {
  94.    /*
  95.     * Removes *item from the linked list (but doesn't free() it):
  96.     */
  97.     if (item == NULL)       /* Should print out an error message */
  98.         return;
  99.     if (item == head && item == tail) { /* Only one element in the list */
  100.         head = tail = NULL;
  101.     }
  102.     else if (item == head) {
  103.         item->next->prev = NULL;
  104.         head = item->next;
  105.     }
  106.     else if (item == tail) {
  107.         item->prev->next = NULL;
  108.         tail = item->prev;
  109.     }
  110.     else {
  111.         item->prev->next = item->next;
  112.         item->next->prev = item->prev;
  113.     }
  114.     item->prev = item->next = NULL;
  115. }
  116.  
  117.  
  118.  
  119.  

3
C/C++ / Re: compilar
« en: Viernes 31 de Diciembre de 2010, 10:40 »
gracias, intentare hacer makefile y si tengo dudas te ire comentando
gracias!!

4
C/C++ / Re: compilar
« en: Viernes 31 de Diciembre de 2010, 00:04 »
forman parte del mismo programa

5
C/C++ / compilar
« en: Jueves 30 de Diciembre de 2010, 19:22 »
hola tengo 2archivos con extension c( a.c y b.c) y tambien tengo dos archivos con extension h (c.h y d.h) como hago para compilarlos todos, estan escritos en c y compilo en linux, gracias

6
C/C++ / Re: enviar vector de numeros
« en: Miércoles 15 de Diciembre de 2010, 21:54 »
es en distintas maquinas por cola de mensajes, gracias

7
C/C++ / enviar vector de numeros
« en: Martes 14 de Diciembre de 2010, 21:05 »
hola como hago para enviar un vector de un cliente a un servidor y del servidor al cliente??
programar en c bajo linux
gracias

8
C/C++ / numeros archivo socket
« en: Viernes 10 de Diciembre de 2010, 23:24 »
hola he hecho el siguiente codigo de socket, en el que el cliente envia un archivo al servidor con unos numeros y este se los devuelve ordenados en otro archivo.
he hecho la comuncicacion y el cliente le envia el archivo por lineas.

lo que no se hacer es como coger los numeros de las lineas que va enviando y pasarlas a un vector.
ordenarlos si que se,

y luego como se los devuelvo??

archivo a ordenar:
Código: C
  1.  
  2. 312;243;344;
  3. 625;166;577;88;4;
  4. 634;99;111;
  5.  
  6.  

servidor:
Código: C
  1.  
  2. /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- S E R V I D O R -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
  3.  
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <unistd.h>
  7. #include <errno.h>
  8. #include <string.h>
  9. #include <sys/types.h>
  10. #include <sys/socket.h>
  11. #include <netinet/in.h>
  12. #include <arpa/inet.h>
  13. #include <sys/wait.h>
  14. #include <signal.h>
  15. #include<ctype.h>
  16.  
  17. #define MYPORT 3490 // Puerto al que conectarán los usuarios
  18. #define MAXBUFLEN 200 // Maximo de caracteres para el buffer
  19. #define BACKLOG 10 // Conexiones pendientes en cola
  20.  
  21.  
  22. #define MAX 100
  23.  
  24. int longitud;//LONGITUD DE LA CADENA ENTRADA
  25. char salida[MAX];//SALIDA YA CONVERTIDA A LETRAS
  26. char actual[MAX];//VALOR DEL NUMERO ACTUAL
  27. char actualposterior[MAX];//VALOR DEL NUMERO POSTERIOR
  28. char revisada[MAX]; //LA ENTRADA UNA VEZ REVISADA PARA Q EL USUARIO NO ENTRE LETRAS
  29.  
  30. void num_letra(char revisada[]); //FUNCION Q "TRADUCE" AL CASTELLANO
  31.  
  32.  
  33. int sockfd; // El servidor escuchara por sockfd
  34. int newfd; // las transferencias de datos se realizar mediante newfd
  35. char buf[MAXBUFLEN];// buffer para recivir o enviar datos
  36. struct sockaddr_in my_addr; // contendra la direccion IP y el numero de puerto local
  37. struct sockaddr_in their_addr;//Contendra la direccion IP y numero de puerto del cliente
  38. socklen_t sin_size;//Contendra el tamaño de la escructura sockaddr_in
  39.  
  40. char *token = NULL;
  41. char vector [MAX];
  42. int cont,loop,a;
  43.  
  44. void crear_socket();
  45. void atributos();
  46. void socket_name();
  47. void escuchar();
  48. void aceptar();
  49. void recibir();
  50. void enviar(char cadena[]);
  51.  
  52. void crear_socket()//se crea el medio por el cual se va a realizar la comunicación:
  53. {
  54. //AF_INET = Dominio donde se realiza la conexión.( unidos mediante una red TCP/IP).
  55. //SOCK_STREAM = Uso del protocolo TCP
  56. //0 = selecciona el protocolo más apropiado
  57.  
  58. if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)//Crea el socket y verifica si hubo algun error
  59. {
  60. perror("socket");
  61. exit(1);
  62. }
  63. }
  64.  
  65. void atributos() // Asignamos valores a la estructura my_addr para luego poder llamar a la funcion bind()
  66. {
  67. my_addr.sin_family = AF_INET; //Se sa un servidor Stream (Protocolo TCP)
  68.  
  69. my_addr.sin_port = htons(MYPORT); //se asigna el puerto por el que se va a escuchar (3490)
  70.  
  71. my_addr.sin_addr.s_addr = INADDR_ANY; // se usa la IP local
  72.  
  73. bzero(&(my_addr.sin_zero), 8); // rellena con ceros el resto de la estructura
  74. }
  75.  
  76. void socket_name()//Le asignamos un nombre al socket, para recivir conexiones
  77. {
  78. if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == -1)
  79. {
  80. perror("bind");
  81. exit(1);
  82. }
  83. }
  84.  
  85. void escuchar()// Habilitamos el socket para recibir conexiones, con una cola de 10 conexiones en espera como maximo (BACKLOG)
  86. {
  87. if (listen(sockfd, BACKLOG) == -1)
  88. {
  89. perror("listen");
  90. exit(1);
  91. }
  92. }
  93.  
  94. void aceptar()//accept = Se utiliza en el servidor, con un socket habilitado para recibir conexiones
  95. {
  96. sin_size = sizeof(struct sockaddr_in);
  97.  
  98. //Se espera por conexiones
  99.  
  100. if ((newfd = accept(sockfd, (struct sockaddr *)&their_addr,&sin_size)) == -1)
  101. {
  102. perror("accept");
  103. exit(1); // Si se produce un error se finaliza el programa
  104. }
  105. printf("server: conexion desde: %sn", inet_ntoa(their_addr.sin_addr));
  106. }
  107.  
  108. void recibir()
  109. {
  110. if ((recv(newfd, buf, MAXBUFLEN, 0)) == -1)// buf = tipo de funcion a realizar
  111. {
  112. perror("recv");
  113. exit(1);
  114. }
  115. }
  116.  
  117. void enviar(char cadena[])
  118. {
  119. if (send(newfd, cadena, MAXBUFLEN, 0) == -1)//envia el resultado de la conversion de numero a letras
  120. perror("send");
  121. exit(1);
  122. }
  123.  
  124. int main()//metodo principal
  125. {
  126. crear_socket();
  127.  
  128. atributos();
  129.  
  130. socket_name();
  131.  
  132. escuchar();
  133.  
  134. while(1) // ciclo para llamar accept
  135. {
  136. cont=0;
  137. // Llamamos a fork() para crear un proceso hijo que atendera a la conexion recien establecida
  138. aceptar();
  139. if (!fork())
  140. {
  141. //comienza el proceso hijo y enviamos los datos mediante newfd
  142.  
  143. recibir();//el servidor recive que tipo de funcion tiene que realizar
  144.  
  145. int a;
  146. if (strcmp (buf,"1") == 0)//1 = InitCap
  147. {
  148. cont=0;//cuenta las lineas que va recibiendo el servidor
  149. send(newfd, "", 1, 0);//+++++++++
  150. recibir();// se recibe la cantidad de lineas que tiene el archivo que abrió el cliente
  151. printf("lineas a procesar: %sn",buf);
  152. loop = atoi(buf);//loop tiene la cantidad de lineas que tiene el archivo que abrió el cliente
  153. send(newfd, "", 1, 0);//+++++++++
  154. while(cont < loop)//el ciclo se repite el numero de lineas que tenga el archivo enviado por el cliente
  155. {
  156. cont++;//aumenta el contador de lineas
  157. recibir();//se reciben las lineas
  158.  
  159. /* AQUI NECESITO COGER LOS NUMEROS PASARLOS A UN VECTOR
  160. CUANDO HAYA PASADO TODAS LAS LINEAS Y TENGA TODOS LOS NUMEROS ORDENAR EL VECTOR*/
  161.  
  162. }
  163.  
  164. /*ESTO ORDENA EL VECTOR*/
  165. int temp;
  166. int j;
  167. for(i=0; i<(a-1); i++) {
  168. for (j=i+1; j<a; j++) {
  169. if(vector[j]<vector[i]) {
  170. temp=vector[j];
  171. vector[j]=vector[i];
  172. vector[i]=temp;
  173. }
  174. }
  175. }
  176. /* AQUI DEBO ENVIAR EL VECTOR AL CLIENTE SEPARANDO LOS NUMEROS POR ;*/
  177.  
  178. printf("Listo!!!nn");
  179.  
  180. close(newfd);
  181. exit(0);
  182. }
  183. close(newfd);
  184. }
  185. }
  186.  
  187.  

cliente:
Código: C
  1.  
  2. /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- C L I E N T E -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
  3.  
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <unistd.h>
  7. #include <errno.h>
  8. #include <string.h>
  9. #include <netdb.h>
  10. #include <sys/types.h>
  11. #include <netinet/in.h>
  12. #include <sys/socket.h>
  13. #include <iostream>
  14.  
  15. #define PORT 3490 // puerto al que vamos a conectar
  16.  
  17. #define MAXBUFLEN 100 // Maximo de caracteres para el buffer
  18. #define MAX 100
  19.  
  20. using namespace std;
  21.  
  22. char num[10],opcn[1];
  23. int sockfd, numbytes;
  24. char buf[MAXBUFLEN];
  25. struct hostent *he;
  26. struct sockaddr_in their_addr; // información de la dirección de destino
  27. size_t len;
  28.  
  29. FILE *archivo;
  30. FILE *archivo2;
  31. char name[MAX],name2[MAX];;
  32. char linea[MAX];
  33. int cont_line;
  34. char loop[100];
  35.  
  36. void crear_socket();
  37. void menu();
  38. void conectar();
  39. void atributos();
  40. void host_name(char *argv[]);
  41. void enviar_opcion();
  42. void enviar(char cadena[]);
  43. void recibir();
  44. void enviar_lineas();
  45.  
  46. void enviar_lineas()//enviar lineas del archivo, para que el servidor las procese
  47. {
  48. cont_line=-1;//contador de lineas del archivo
  49. while(!feof(archivo))//recorro el archivo, hasta llegar al final de este
  50. {
  51. fgets(linea,1000,archivo);//agarro cada linea del archivo
  52. cont_line++;//contador de lineas del archivo
  53. }
  54.  
  55. sprintf(loop,"%d",cont_line);//paso el valor entero de cont_line a loop, que es de tipo char[10]
  56. enviar(loop);//envío la cantidad de lineas al servidor, osea: tamaño que va a durar la conversación entre el servidor y el cliente
  57. recibir();//++++++++++
  58.  
  59. archivo=fopen(name,"r");//vuelvo a abrir el archivo pq el puntero quedó al final de este
  60.  
  61. archivo2=fopen(name2,"w+");//abro el archivo donde voy a guardar el resultado
  62.  
  63. while(!feof(archivo))//recorre todo el contenido del archivo
  64. {
  65. fgets(linea,1000,archivo);//agarra toda una linea del txt con un maximo de 1000 caracteres
  66. if(!feof(archivo))
  67. {
  68. enviar(linea);//envio las lineas al servidor
  69. recibir();//recibo las lineas ya modificadas por el servidor
  70. fprintf(archivo2,"%s",buf);//guardo en el archivo2 las lineas modificadas
  71. }
  72. }
  73. //se cierran los archivos
  74. fclose(archivo);
  75. fclose(archivo2);
  76. }
  77.  
  78. void menu()
  79. {
  80. int opc;
  81.  
  82. printf("***************n");
  83. printf("* 1. Archivos *n");
  84. printf("* 2. Salir *n");
  85. printf("***************nn");
  86. scanf("%d",&opc);
  87. switch(opc)
  88. {
  89. case 1://archivos
  90.  
  91. printf ("n Escriba el nombre del archivo que desea abrir: ");
  92. scanf("%s", &name);//se guarda en name el nombre del archivo de texto
  93. strcpy(name2,name);
  94. strcat(name2,"2");
  95. strcat(name,".txt");//se añade ".txt" en la última línea de name, para establecer la extensión
  96. strcat(name2,".txt");//se añade ".txt" en la última línea de name, para establecer la extensión
  97. archivo=fopen(name,"r");//se abre el archivo con el modo "r"(solo lectura y debe existir previamente)
  98. recibir();//+++++++++++
  99. enviar_lineas();
  100.  
  101. case 2://salir
  102. exit(1);
  103. break;
  104. }
  105. }
  106.  
  107. void host_name(char *argv[])//Se utiliza para convertir un nombre de un host a su dirección IP
  108. {
  109. if ((he=gethostbyname(argv[1])) == NULL)
  110. {
  111. perror("gethostbyname");
  112. exit(1);
  113. }
  114. }
  115.  
  116. void crear_socket()//se crea el socket para comunicarse con el servidor
  117. {
  118. if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
  119. {
  120. perror("socket");
  121. exit(1);
  122. }
  123. }
  124.  
  125. void conectar()// nos conectamos con el servidor
  126. {
  127. if (connect(sockfd, (struct sockaddr *)&their_addr,sizeof(struct sockaddr)) == -1)
  128. {
  129. perror("connect");
  130. exit(1);
  131. }
  132. }
  133.  
  134. void atributos()//definimos el tipo de transferencia,puerto y la ip con la que nos vamos a comunicar
  135. {
  136. len = sizeof(struct sockaddr_in);
  137. their_addr.sin_family = AF_INET; // Ordenación de bytes de la máquina
  138. their_addr.sin_port = htons(PORT); // short, Ordenación de bytes de la red
  139. their_addr.sin_addr = *((struct in_addr *)he->h_addr);// se pasa la direccion ip al socket
  140. memset(&(their_addr.sin_zero), 8, len); // poner a cero el resto de la estructura
  141. }
  142.  
  143. void enviar(char cadena[])//envio de datos
  144. {
  145. if ((send(sockfd, cadena, strlen(cadena), 0)) == -1)
  146. {
  147. perror("send");
  148. exit(1);
  149. }
  150. }
  151.  
  152. void recibir()//resibir datos
  153. {
  154. if ((numbytes=recv(sockfd, buf, MAXBUFLEN, 0)) == -1)
  155. {
  156. perror("recv");
  157. exit(1);
  158. }
  159. }
  160.  
  161. int main(int argc, char *argv[])//metodo principal del programa
  162. {
  163. if (argc != 2)
  164. {
  165. fprintf(stderr,"usaste solo: %d argumento, escribe también el nombre del servidorn",argc);
  166. exit(1);
  167. }
  168.  
  169. host_name(argv);
  170.  
  171. crear_socket();
  172.  
  173. atributos();
  174.  
  175. conectar();
  176.  
  177. menu();
  178.  
  179. close(sockfd);
  180. return 0;
  181. }
  182.  

9
C/C++ / es igual en c q c++
« en: Viernes 10 de Diciembre de 2010, 19:52 »
hola vi un programa en c++ y lo quiero pasar a c
y esto es lo que no se a que equivale:

Código:

cout << "Escriba el nombre del archivo que desea abrir: ";
cin >> name;//se guarda en name el nombre del archivo de texto

Código:

printf ("n Escriba el nombre del archivo que desea abrir: ");
scanf("%c",name);//se guarda en name el nombre del archivo de texto

10
C/C++ / Re: ordenar
« en: Miércoles 8 de Diciembre de 2010, 23:30 »
ok, lo que quiero es saber como paso los numeros del archivo a un vector, porque ordenarlos si que se, gracias

11
C/C++ / ordenar
« en: Miércoles 8 de Diciembre de 2010, 13:09 »
hola. haber si en este caso me pueden ayudar
tengo un programa en c, bajo linux
cojo un archivo en el que hay unos numeros separados por ;
y los quiero ordenar, como lo hago??
en el archivo por ejemplo viene asi:
4;65;67;
54;3;988;676;
23;986;

y los quiero ordenar, como lo hago??
AYUDAAA!!!!
gracias

12
C/C++ / cliente servidor
« en: Viernes 3 de Diciembre de 2010, 17:57 »
hola, me gustaria hacer un programa en el que un servidor atiende a 3 clientes(atencion por semaforos), cuand atiende a un cliente, el servidor le pide una serie de numeros y el cliente se los da o por teclado o por medio de un archivo, lueg el servidor los coloca por orden y le devuelve al cliente un fichero con los numeros colocados, hora y el tiempo que tardo en hacerlo.luego puede seguir con este cliente o atender a otro para hacer la misma operacion.

nunca he programado este tipo de cosas, cualquier idea o ejemplillo que me puedan dar para ir empezando, seria de gran ayuda.
muchas gracias

13
C/C++ / falla programa!!!
« en: Martes 9 de Noviembre de 2010, 20:12 »
hola hice un programa normal que calcula escanos y lo quiero simplificar usando funciones, punteros,etc, pero no se hacerlo he intentado lo siguiente, es la primera vez que uso funciones, espero q m puedan ayudar, gracias

codigo original, sin funciones:

Código: C
  1. [list]
  2. #include<stdio.h>
  3. #include <stdlib.h>
  4. #include <math.h>
  5.  
  6. main()
  7. {
  8.    
  9.     int partidos=0;
  10.        
  11.     printf("nn Bienvenido al sistema de calculo de escanos.n por favor siga las instrucciones, graciasn");
  12.  
  13.     while ( partidos <2 || partidos>16){
  14.         printf("n eliga el numero de partidos politicos que desea (numero entre 2 y 16)t");
  15.         scanf("%d",&partidos);
  16.     }
  17.     /*system('clear');*/
  18.     int mpartidos[17][50];
  19.    
  20.     float votos;
  21.    
  22.     int i;
  23.     int f;
  24.     int c;
  25.    
  26.     for (f=0;f<partidos;f++){
  27.         for (c=0;c<50;c++){
  28.  
  29.             mpartidos[f][c]=0;
  30.         }
  31.     }
  32.     int escanos=0;
  33.         while (escanos<7 || escanos>100){
  34.         printf("n numero de escanos:(numero entre 7 y 100)t");
  35.         scanf("%d",&escanos);
  36.     }
  37.     /*system('clear');*/
  38.     int a=0;
  39.     printf("n A continuacion meta los votos recibidos por cada partido:n");
  40.     for (i=0;i<partidos;i++){
  41.         a=i+1;
  42.         printf("n partido(%d)=t",a);
  43.         scanf("%f",&votos);
  44.         mpartidos[i][0]=votos;
  45.     }
  46.    
  47.     printf("nn Ahora el programa calculara los escanos segun estos 4 metodos:n n HAMILTON n n D'HONT n n LAGUE n n HILL-HUNTINGTON n n");
  48.      
  49.      int TAM=100;
  50.    
  51.     /*METODO DHONT*/
  52.     float mdhont[17][1000];
  53.     float aq;
  54.     int fil;
  55.     int col;
  56.     float cl;
  57.     for (fil=0;fil<partidos;fil++){
  58.         cl=0;
  59.         for (col=0;col<TAM;col++){
  60.             aq=(mpartidos[fil][0])/(cl+1);
  61.             mdhont[fil][col]=(aq);
  62.             cl++;
  63.         }
  64.         printf("n");
  65.     }
  66.     printf("n");
  67.    
  68.    
  69.     float mx=0;
  70.     int aa,bb;
  71.     for(i=0;i<escanos;i++){
  72.         for (fil=0;fil<partidos;fil++){
  73.             for (col=0;col<TAM;col++){
  74.                 if (mdhont[fil][col]>mx){
  75.                     mx=mdhont[fil][col];
  76.                     aa=fil;
  77.                     bb=col;
  78.                 }
  79.             }
  80.         }
  81.         mdhont[aa][bb]=0;
  82.        
  83.         mx=0;
  84.         mpartidos[aa][1]=mpartidos[aa][1]+1;
  85.     }
  86.            
  87.     /*system("clear");*/
  88.    
  89.     /*fin metodo DHONT*/
  90.    
  91.     int z;
  92.     for (i=0; i<partidos; i++) {
  93.                     z=i+1;
  94.                     printf("n partido%d  %d",z,mpartidos[i][1]);
  95.                 }
  96.    
  97.    
  98.     printf("n");
  99. }
  100.  
  101. [/list]
  102.  
-------------------------------------------------------------------------------------------------------------------------------
y este es con funciones, q estara fatal hecho:----------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------
Código: C
  1. [list]
  2. #include<stdio.h>
  3. #include <stdlib.h>
  4. #include <math.h>
  5.  
  6.     void traspaso(float *metodo1,float aux,int p,int T){
  7.    
  8.         int fil;
  9.         int col;
  10.         float cl=0;
  11.         for (fil=0;fil<p;fil++){
  12.             cl=0;
  13.             for (col=0;col<T;col++){
  14.                 *metodo1=(aux);
  15.                 cl++;
  16.             }
  17.             printf("n");
  18.         }
  19.     return ;
  20.     }
  21.    
  22.     void max_escans(float *metodo2,float mpart,int esca,int p,int T){
  23.         int fil;
  24.         int col;
  25.         int i;
  26.         float mx=0;
  27.         int aa,bb;
  28.         for(i=0;i<esca;i++){
  29.             for (fil=0;fil<p;fil++){
  30.                 for (col=0;col<T;col++){
  31.                     if (*metodo2>mx){
  32.                         mx=*metodo2;
  33.                         aa=fil;
  34.                         bb=col;
  35.                     }
  36.                 }
  37.             }
  38.             metodo2=0;
  39.        
  40.             mx=0;
  41.             mpart=mpart+1;
  42.         }
  43.    
  44.     }
  45.    
  46. main()
  47. {
  48.     int partidos=0;
  49.     printf("nn Bienvenido al sistema de calculo de escanos.n por favor siga las instrucciones, graciasn");
  50.  
  51.     while ( partidos <2 || partidos>16){
  52.         printf("n eliga el numero de partidos politicos que desea (numero entre 2 y 16)t");
  53.         scanf("%d",&partidos);
  54.     }
  55.     /*system('clear');*/
  56.     int mpartidos[17][50];
  57.     float votos;
  58.     int i;
  59.     int f;
  60.     int c;
  61.    
  62.     for (f=0;f<partidos;f++){
  63.         for (c=0;c<50;c++){
  64.             mpartidos[f][c]=0;
  65.         }
  66.     }
  67.     int escanos=0;
  68.         while (escanos<7 || escanos>100){
  69.         printf("n numero de escanos:(numero entre 7 y 100)t");
  70.         scanf("%d",&escanos);
  71.     }
  72.     /*system('clear');*/
  73.     int a=0;
  74.     printf("n A continuacion meta los votos recibidos por cada partido:n");
  75.     for (i=0;i<partidos;i++){
  76.         a=i+1;
  77.         printf("n partido(%d)=t",a);
  78.         scanf("%f",&votos);
  79.         mpartidos[i][0]=votos;
  80.     }
  81.     printf("nn Ahora el programa calculara los escanos segun este metodo:n n D'HONT n ");
  82.      
  83.      int TAM=100;
  84.     /*METODO DHONT*/
  85.     float mdhont[17][1000];
  86.     float cl;
  87.     float aux1;
  88.     int fil;
  89.     int col;
  90.     int aa;
  91.     int cc;
  92.     cc=1;
  93.     aux1=(mpartidos[fil][0])/(cl+1);
  94.     traspaso(*mdhont,aux1,partidos,TAM);
  95.     printf("n");
  96.     max_escans(*mdhont,mpartidos[aa][cc],escanos,partidos,TAM);
  97.    
  98.     /*system("clear");*/
  99.    
  100.     /*fin metodo DHONT*/
  101.     /*system("clear");*/
  102.    
  103.     int z;
  104.     for (i=0; i<partidos; i++) {
  105.                     z=i+1;
  106.                     printf("n partido%d  %d",z,mpartidos[i][1]);
  107.                 }
  108.    
  109.    
  110.     printf("n");
  111. }
  112.  
  113. [/list]
  114.  

14
C/C++ / Re: valores maximos de una matriz
« en: Lunes 8 de Noviembre de 2010, 18:49 »
ya lo hice, muchas gracias

15
C/C++ / Re: valores maximos de una matriz
« en: Domingo 7 de Noviembre de 2010, 12:05 »
yo tengo una matriz, por ejemplo de 10*5 y lo que yo quiero es saber cual es la posicion de los 12 valores maximos de esa matriz, gracias

16
C/C++ / Re: valores maximos de una matriz
« en: Domingo 7 de Noviembre de 2010, 12:02 »
se recorrer la matriz, pero no se como guardar los 10 valores maximos.
necesito ayuda por favor. gracias

17
C/C++ / valores maximos de una matriz
« en: Sábado 6 de Noviembre de 2010, 22:49 »
hola, tengo un pequeño problema en c, es que no se como sacar la posicion de los valores maximos en una matriz.
un programilla que me diga los valores maximos estan en la posicion m[2][3],m[5][1],etc.
si pueden ayudarme muchas gracias

Páginas: [1]