Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

190
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda