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

99
Vistas
¿Cómo puedo agregar un + como una cadena usando C Language?

Estoy tratando de generar números del 1 al 5 usando for loop y mostrar su suma. Mi objetivo es tener una salida que se vea así:

1 + 2 + 3 + 4 + 5 = 15

Pero en cambio, obtengo la salida:

+ 1 + 2 + 3 + 4 + 5 = 15

 #include <stdio.h> void main() { int a, sum = 0; for (a = 1; a <= 5; a++) { printf("+\t%d\t",a); sum = sum + a; } printf("=\t%d", sum); }
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Esto se encuentra con mucha frecuencia cuando se generan listas separadas por algún valor. El problema es que tiene 5 valores para generar, pero solo 4 separadores. Si no hace nada especial, generará 5 separadores, que es exactamente lo que está sucediendo en su ejemplo. Incluso si mueve el separador después de su valor, todavía tendrá uno de más.

La forma en que prefiero hacerlo es esta:

 for (a = 1; a <= 5; ++a) { if (a > 1) printf("\t+\t"); printf("%d", a); sum += a; }

La razón por la que prefiero este enfoque, en lugar de generar algún valor fuera del bucle, es que, a menudo, lo que se genera es más complicado, lo que posiblemente involucre cálculos adicionales o llamadas a funciones, y no me gusta duplicar ese código.

Entonces, solo saco un separador si sé que estoy a punto de sacar la otra cosa. Eso significa, generar un separador para cada iteración de ciclo excepto la primera.

También me gusta hacerlo en estilo prefijo porque, por lo general, la condición para el primer elemento de un ciclo es más simple que la condición para el último elemento. También es compatible con un enfoque diferente que involucra una bandera:

 int first = 1; for (a = 1; a <= 5; ++a) { if (!first) printf("\t+\t"); first = 0; printf("%d", a); sum += a; }

Hay muchas otras formas en las que verá que se produce este tipo de patrón. Y puede haber varias formas de optimizarlo que reducen la legibilidad. Pero este enfoque es simple y fácil de seguir.

over 4 years ago · Santiago Trujillo Denunciar

0

Puede tomar un puntero de tipo char y asignarle una cadena vacía como separador para la primera iteración y, después de imprimir el primer número, asigne la cadena separadora, al puntero, que desea imprimir entre dos números en iteraciones posteriores.

Implementación:

 #include <stdio.h> int main (void) { int a, sum = 0; char * str = ""; for (a = 1; a <= 5; a++) { printf("%s%d\t", str, a); sum = sum + a; str = "+\t"; } printf("=\t%d\n", sum); return 0; }

Producción:

 # ./a.out 1 + 2 + 3 + 4 + 5 = 15

Adicional:

  • El uso de void como tipo de retorno de la función main() no cumple con los estándares. El tipo de retorno de la función main() debe ser int .
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