- Altere o programa anterior para imprimir a figura abaixo:
****1
***22
**333
4444
55555
Dica: ao invés de usar printf(""); use printf("%d",i); onde i é a variável de contagem. Perceba que você deve gerar as sequências 12345 (para números) e 43210 (para *).
Sugestão: como no anterior, faça primeiro um programa que, dado um número pelo teclado, imprime asteriscos e o número. Por ex.: o usuário digita 3 e o programa imprime **333 (2 *'s e 3 números 3).
****1
***22
**333
4444
55555
Dica: ao invés de usar printf(""); use printf("%d",i); onde i é a variável de contagem. Perceba que você deve gerar as sequências 12345 (para números) e 43210 (para *).
Passo 1
O enunciado pede um programa em C que imprima o seguinte padrão de 5 linhas, onde o número de asteriscos (*) decresce de 4 a 0 e o dígito da linha se repete de 1 a 5 vezes:
****1
***22
**333
*
Conteúdo: estruturas de repetição (laços) e nested loops.
****1
***22
**333
*
Conteúdo: estruturas de repetição (laços) e nested loops.
Passo 2
Para resolver, generalizamos o padrão para um valor
. Em cada linha
(de
a
):
- imprimimos
asteriscos, - em seguida imprimimos
cópias do dígito , - depois pulamos para a próxima linha.
Passo 3
Em C, usamos um laço externo para
de
até
. Dentro dele temos dois laços internos:
- um para gerar os
asteriscos com printf("*")
, - outro para gerar as
repetições de i
comprintf("%d", i)
.
Ao final de cada linha, usamosprintf(" ")
.
Passo 4
Agora, o programa completo em C que lê um valor de
e imprime o padrão desejado:
#include <stdio.h>
int main() {
int n, i, j;
scanf("%d", &n);
for (i \(=1\); i <= n; i\(++\)) {
for (j \(=1\); j <= n - i; j\(++\)) {
printf("*");
}
for (j \(=1\); j <= i; j\(++\)) {
printf("%d", i);
}
printf("
");
}
return 0;
}
Resposta
#include <stdio.h>
int main() {
int n, i, j;
scanf("%d", &n);
for (i \(=1\); i <= n; i\(++\)) {
for (j \(=1\); j <= n - i; j\(++\)) {
printf("*");
}
for (j \(=1\); j <= i; j\(++\)) {
printf("%d", i);
}
printf("
");
}
return 0;
}