Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

179
Vistas
Imprimir una matriz con comas separadoras

Estoy tratando de imprimir los elementos de una matriz separados por comas.

Mi salida:

 5,6,7,8,9,

Necesito deshacerme de la última coma, ¿alguien sabe cómo hacerlo?

 #include <stdio.h> #include <stdlib.h> void print_array(int integers[], int elements); int main(){ int arr[5] = {5, 6, 7, 8, 9}; print_array(arr, 5); return 0; } void print_array(int integers[], int elements){ int j; for(j=0; j<elements; j++){ printf("%d,", integers[j]); } }
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

En realidad, este es un patrón frecuente en la programación: tiene una secuencia de elementos y desea hacer algo tanto para cada elemento como para cada par de elementos consecutivos, es decir, para cada espacio entre elementos consecutivos.

De todos modos, aquí hay algunas opciones:

  1. Iterar todos los elementos excepto el último (sabiendo que todos tienen un elemento posterior), tratar el último por separado
  2. Trate el primer elemento por separado, luego itere todos los elementos después del primero (sabiendo que todos tienen un elemento anterior).
  3. Itere todos los elementos, pero verifique si está en el elemento final
  4. Itere todos los elementos, use un valor booleano para recordar cuándo ya pasó el primer elemento (es decir, establece el valor booleano cuando encuentra que es falso).
  5. Itere todos los elementos, actuando como si todos tuvieran un elemento subsiguiente, luego realice una acción correctiva para deshacer el trabajo en el par inexistente de elementos subsiguientes al final.

Aquí tienes un ejemplo para tu caso de la primera opción:

 void print_array(int integers[], size_t num_elements) { if (num_elements == 0) { return; } for(size_t j = 0; j < num_elements - 1; j++){ printf("%d,", integers[j]); } printf("%d", integers[num_elements - 1]); }

Notas:

  • Es complicado evitar la duplicación de código por completo con este patrón.
  • elements es un nombre confuso (te hace pensar que variable tiene los elementos reales), lo reemplacé con num_elements .
  • Una pregunta similar sobre C++: ¿Cómo puedo imprimir una lista de elementos separados por comas?
over 4 years ago · Santiago Trujillo Denunciar

0

Se recomienda cambiar el separador después de imprimir.

 void print_array(const int integers[], int elements) { const char *separator = ""; for(int j=0; j<elements; j++) { printf("%s%d", separator, integers[j]); separator = ","; } printf("\n"); }

Tenga en cuenta que esto funciona bien incluso si los elements == 0 y no necesita ningún bloque if() especial o declaraciones ?: .

over 4 years ago · Santiago Trujillo Denunciar

0

Desarrollando la respuesta de einpoklum, así es como lo haría (opción 3):

 #include <stdio.h> #include <stdbool.h> void print_array(int integers[], size_t num_elements) { for(size_t j = 0; j < num_elements; j++) { bool is_last_element = (j + 1) == num_elements; printf("%d", integers[j]); if (!is_last_element) { printf(","); } } } int main(void) { int ints[4] = {1,2,3,4}; print_array(ints, 4); }

Esto tiene la ventaja de:

  • No tenemos que comprobar los elementos cero.
  • La variable de contador j permanece local para el bucle for (esto es posiblemente menor pero sigue siendo una ventaja)
  • Sin duplicación de código
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda