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

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Punto y coma
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Punto y coma  (Leído 3,334 veces)
@synthesize
Wiki

Desconectado Desconectado

Mensajes: 640


Another Brick in the Wall


Ver Perfil WWW
Punto y coma
« en: 9 Julio 2010, 05:53 am »

Estudiando métodos de ordenación, em quedé en Radix. Ví el código de ejemplo que ponene en Wikipedia para implementar, hasta ahí todo bien

Ví que en varias sentencias, ponían ; en una linea, siendo el único contenido de la misma. Pensaba que es un error, así que probé a compilar, pero funciona perfectamente. ¿Alguien me dice que hace ahí ese punto y coma?

Código
  1. #include <math.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #define NUMELTS 20
  5.  
  6. void radixsort(int x[], int n)
  7. {
  8.  int front[10], rear[10];
  9.  struct {
  10.    int info;
  11.    int next;
  12.  } node[NUMELTS];
  13.  int exp, first, i, j, k, p, q, y;
  14.  
  15.  /* Inicializar una lista vinculada */
  16.  for (i = 0; i < n-1; i++) {
  17.    node[i].info = x[i];
  18.    node[i].next = i+1;
  19.  } /* fin del for */
  20.  node[n-1].info = x[n-1];
  21.  node[n-1].next = -1;
  22.  first = 0; /* first es la cabeza de la lista vinculada */
  23.  for (k = 1; k < 5; k++) {
  24.    /* Suponer que tenemos números de cuatro dígitos */
  25.    for (i = 0; i < 10; i++) {
  26.      /*Inicializar colas */
  27.      rear[i] = -1;
  28.      front[i] = -1;
  29.    } /*fin del for */
  30.    /* Procesar cada elemento en la lista */
  31.    while (first != -1) {
  32.      p = first;
  33.      first = node[first].next;
  34.      y = node[p].info;
  35.      /* Extraer el kâsimo dÁgito */
  36.      exp = pow(10, k-1); /* elevar 10 a la (k-1)ésima potencia */
  37.      j = (y/exp) % 10;
  38.      /* Insertar y en queue[j] */
  39.      q = rear[j];
  40.      if (q == -1)
  41. front[j] = p;
  42.      else
  43. node[q].next = p;
  44.      rear[j] = p;
  45.    } /*fin del while */
  46.  
  47.    /* En este punto, cada registro está en su cola basándose en el dígito k
  48.        Ahora formar una lista única de todos los elementos de la cola.
  49.        Encontrar el primer elemento. */
  50.    for (j = 0; j < 10 && front[j] == -1; j++);
  51.      ;
  52.    first = front[j];
  53.  
  54.    /* Vincular las colas restantes */
  55.    while (j <= 9) { /* Verificar si se ha terminado */
  56.      /*Encontrar el elemento siguiente */
  57.      for (i = j+1; i < 10 && front[i] == -1; i++);
  58. ;
  59.      if (i <= 9) {
  60. p = i;
  61. node[rear[j]].next = front[i];
  62.      } /* fin del if */
  63.      j = i;
  64.    } /* fin del while */
  65.    node[rear[p]].next = -1;
  66.  } /* fin del for */
  67.  
  68.  /* Copiar de regreso al archivo original */
  69.  for (i = 0; i < n; i++) {
  70.    x[i] = node[first].info;
  71.    first = node[first].next;
  72.  } /*fin del for */
  73. } /* fin de radixsort*/
  74.  
  75.  
  76. int main(void)
  77. {
  78.  int x[50] = {NULL}, i;
  79.  static int n;
  80.  
  81.  printf("\nCadena de números enteros: \n");
  82.  for (n = 0;; n++)
  83.    if (!scanf("%d", &x[n])) break;
  84.  if (n)
  85.    radixsort (x, n);
  86.  for (i = 0; i < n; i++)
  87.    printf("%d ", x[i]);
  88.  return 0;
  89. }
  90.  


En línea

carlitos_jajajajaja

Desconectado Desconectado

Mensajes: 30


Ver Perfil
Re: Punto y coma
« Respuesta #1 en: 9 Julio 2010, 07:13 am »

cuando solo hay un punto y coma quiere decir sentencia vacia, o sea que literalmente ese punto y coma no hace nada

Supongo que es cuestion del estilo del codigo, lo hace para enfatizar - separar del resto del codigo los bucles terminados en punto y coma, seguramente como una forma de decir "Notese que este bucle no tiene ninguna otra sentencia asociada"


En línea

Merodeo los foros, esperando el momento de decir algo inteligente...

Se necesita paciencia
@synthesize
Wiki

Desconectado Desconectado

Mensajes: 640


Another Brick in the Wall


Ver Perfil WWW
Re: Punto y coma
« Respuesta #2 en: 9 Julio 2010, 07:17 am »

En caso de ser eso que dices, es la técnica mas rara para enfatizar que he visto en mucho tiempo XD
En línea

nicolas_cof


Desconectado Desconectado

Mensajes: 348


Into the Wild


Ver Perfil WWW
Re: Punto y coma
« Respuesta #3 en: 9 Julio 2010, 08:17 am »

Al margen de que a mi tambien me parece una tecnica muy oscura :P ( oscura = rara ), cabe mencionar que no afecta en nada el uso de sentencias vacias ( ; ).

Salu10.
En línea

do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: Punto y coma
« Respuesta #4 en: 9 Julio 2010, 10:25 am »

Es lo que se ha comentado hasta ahora. La primera y unaica vez que he visto codigo de este estilo, fue algo diferente. Aqui realizan el for sin cuerpo poniendo un punto coma justo despues de la estructra de repeticion, y luego añaden fuera del cuerpo, pero indexada, una unica sentencia vacia.

Yo normalmente utilizo la primera forma (el for sin cuerpo), pero en el que vi, dejaban el for como siempre y luego añadian en el cuerpo la sentencia vacia:
Código
  1. for(... ; ... ; ...)
  2.    ; /* aqui la sentencia vacia */
  3.  

Para gustos hay colores...

¡Saludos!
« Última modificación: 9 Julio 2010, 10:27 am por do-while » En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con la utilización del punto y coma
Foro Libre
Tokes 4 6,626 Último mensaje 13 Diciembre 2011, 04:29 am
por Unbr0ken
Entero por coma flotante
Programación General
psycho248 4 2,532 Último mensaje 15 Mayo 2014, 05:50 am
por psycho248
coma en division en c
Programación C/C++
lucas59 1 1,983 Último mensaje 1 Octubre 2014, 07:59 am
por BlackM4ster
Cambiar coma por punto en un archivo .txt « 1 2 »
Programación C/C++
fafafa01 17 10,966 Último mensaje 17 Mayo 2016, 15:32 pm
por fafafa01
Poner coma en vez de un punto
.NET (C#, VB.NET, ASP)
Meta 2 3,114 Último mensaje 4 Abril 2022, 07:14 am
por Meta
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines