Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

112
Views
¿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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!