Exercício 13: Escrever um programa no qual o usuário fornece um valor inteiro n e um caractere ch1 e outro caractere ch2 e uma função meio(int n, char1 ch, char2 ch) desenha um quadrado cuja metade superior e a diagonal principal é preenchida com o caractere ch1 e a metade inferior com o caractere ch2. Um exemplo de execução é dado a seguir:
Digite n: 5
Digite ch1:*
Dgite ch2: #
*****
#****
##***
###**
####*
Digite n: 5
Digite ch1:*
Dgite ch2: #
*****
#****
##***
###**
####*
Passo 1
Neste exercício, queremos escrever um programa em C que leia um inteiro n e dois caracteres ch1 e ch2, e desenhe um quadrado de tamanho n×n em que a parte acima da diagonal principal (incluindo a diagonal) usa ch1 e a parte abaixo da diagonal usa ch2.
Passo 2
Vamos criar uma função com o protótipo
que será responsável por imprimir esse quadrado.
Dentro de meio, usamos dois loops aninhados: o loop externo percorre as linhas de 0 até
e o loop interno percorre as colunas
de 0 até
.
Em cada iteração verificamos se . Se for verdade, chamamos
, caso contrário
.
Após completar o loop de colunas, chamamos para iniciar a próxima linha.
Dentro de meio, usamos dois loops aninhados: o loop externo percorre as linhas
Em cada iteração verificamos se
Após completar o loop de colunas, chamamos para iniciar a próxima linha.
Passo 3
Na função main, basta ler interativamente os valores de n, ch1 e ch2 com
e depois chamar
para imprimir o quadrado.
Resposta
#include <stdio.h>
void meio(int n, char ch1, char ch2) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (j >= i)
printf("%c", ch1);
else
printf("%c", ch2);
}
printf("\n");
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (j >= i)
printf("%c", ch1);
else
printf("%c", ch2);
}
printf("\n");
}
}
int main() {
int n;
char ch1, ch2;
int n;
char ch1, ch2;
printf("Digite n: ");
scanf("%d", &n);
printf("Digite ch1: ");
scanf(" %c", &ch1);
printf("Digite ch2: ");
scanf(" %c", &ch2);
meio(n, ch1, ch2);
return 0;
}