Mudanças entre as edições de "Mike Igor Camilo Domingues"
Ir para navegação
Ir para pesquisar
(5 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 31: | Linha 31: | ||
int desenhar_retang(int margem, int base, int altura) { | int desenhar_retang(int margem, int base, int altura) { | ||
− | + | ||
− | for (int i = 0; i < margem; ++i) { | + | for (int i = 0; i < margem; ++i) { // 1º Margem superior, um for para desenhar a margem |
printf("\n"); // Um simples "\n" para quebrar a linha | printf("\n"); // Um simples "\n" para quebrar a linha | ||
} | } | ||
− | + | ||
− | for (int i = 0; i < margem; ++i) { | + | for (int i = 0; i < margem; ++i) { // 2.1º Topo - Margem lateral |
printf(" "); | printf(" "); | ||
− | } | + | } |
− | + | for (int i = 0; i < base; ++i) { // 2.2º Topo - Linha de caracteres '#' | |
− | for (int i = 0; i < base; ++i) { | ||
printf("#"); | printf("#"); | ||
− | } | + | } |
− | + | for (int i = 0; i < base; ++i) { // 2.3º Topo - Margem Lateral | |
− | for (int i = 0; i < base; ++i) { | ||
printf(" "); | printf(" "); | ||
} | } | ||
Linha 52: | Linha 50: | ||
//Aqui temos um for para a quantidade de linhas repetidas e dentro dele a construção de cada linha! | //Aqui temos um for para a quantidade de linhas repetidas e dentro dele a construção de cada linha! | ||
for (int k = 0; k < altura - 2; ++k) { | for (int k = 0; k < altura - 2; ++k) { | ||
− | + | ||
− | for (int i = 0; i < margem; ++i) { | + | for (int i = 0; i < margem; ++i) { // 3.1° Meio do desenho - Margem lateral |
printf(" "); | printf(" "); | ||
− | } | + | } |
− | + | printf("#"); // 3.2° Meio do desenho - Caractere '#' | |
− | printf("#"); | + | for (int i = 0; i < base - 2; ++i) { // 3.3° Meio do desenho - Espaços em branco |
− | |||
− | for (int i = 0; i < base - 2; ++i) { | ||
printf(" "); | printf(" "); | ||
− | } | + | } |
− | + | printf("#"); // 3.4° Meio do desenho - Caractere "#" | |
− | printf("#"); | + | for (int i = 0; i < margem; ++i) { // 3.5° Meio do desenho - Margem lateral |
− | |||
− | for (int i = 0; i < margem; ++i) { | ||
printf(" "); | printf(" "); | ||
} | } | ||
Linha 71: | Linha 65: | ||
} | } | ||
− | + | ||
− | for (int i = 0; i < margem; ++i) { | + | for (int i = 0; i < margem; ++i) { // 4.1º Base - Margem lateral |
printf(" "); | printf(" "); | ||
− | } | + | } |
− | + | for (int i = 0; i < base; ++i) { // 4.2º Base - Linha de caracteres | |
− | for (int i = 0; i < base; ++i) { | ||
printf("#"); | printf("#"); | ||
− | } | + | } |
− | + | for (int i = 0; i < margem; ++i) { // 4.3º Base - Margem Lateral | |
− | for (int i = 0; i < margem; ++i) { | ||
printf(" "); | printf(" "); | ||
} | } | ||
− | + | ||
− | + | for (int i = 0; i < margem; ++i) { // 5º Margem superior | |
− | for (int i = 0; i < margem; ++i) { | ||
printf("\n"); | printf("\n"); | ||
} | } | ||
Linha 116: | Linha 107: | ||
{{collapse bottom}} | {{collapse bottom}} | ||
− | Ou podemos criar uma função que receba o caractere e a quantidade de vezes que ele deve aparecer | + | Ou podemos criar uma função que receba o caractere e a quantidade de vezes que ele deve aparecer: |
{{collapse top | Função desenha caractere}} | {{collapse top | Função desenha caractere}} | ||
Linha 128: | Linha 119: | ||
{{collapse bottom}} | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top | Código utilizando a função desenhaCaractere}} | ||
+ | <syntaxhighlight lang=c> | ||
+ | #include <stdio.h> | ||
+ | |||
+ | int desenhaCaractere(char caractere, int quantidade){ | ||
+ | for (int i = 0; i < quantidade; ++i) { //Loop para desenhar a quantidade de caracteres. | ||
+ | printf("%c", caractere); //Printa o caractere. | ||
+ | } | ||
+ | return 0; | ||
+ | } | ||
+ | |||
+ | int desenhar_retang(int margem, int base, int altura) { | ||
+ | |||
+ | |||
+ | desenhaCaractere('\n',margem); // 1º Margem superior | ||
+ | |||
+ | desenhaCaractere(' ',margem); // 2.1º Topo - Margem lateral | ||
+ | desenhaCaractere('#',base); // 2.2º Topo - Linha de caracteres '#' | ||
+ | desenhaCaractere(' ',margem); // 2.3º Topo - Margem Lateral | ||
+ | printf("\n"); | ||
+ | |||
+ | |||
+ | //Aqui temos um for para a quantidade de linhas repetidas e dentro dele a construção de cada linha! | ||
+ | for (int k = 0; k < altura - 2; ++k) { | ||
+ | desenhaCaractere(' ',margem); // 3.1º Meio do desenho - Margem lateral | ||
+ | printf("#"); // 3.2º Meio do desenho - Caractér '#' | ||
+ | desenhaCaractere(' ',base-2); // 3.3º Meio do desenho - Espaços em branco | ||
+ | printf("#"); // 3.4º Meio do desenho - Caractér "#" | ||
+ | desenhaCaractere(' ',margem); // 3.5º Meio do desenho - Margem lateral | ||
+ | printf("\n"); | ||
+ | } | ||
+ | |||
+ | desenhaCaractere(' ',margem); // 4.1º Base - Margem lateral | ||
+ | desenhaCaractere('#',base); // 4.2º Base - Linha de caracteres | ||
+ | desenhaCaractere(' ',margem); // 4.3º Base - Margem Lateral | ||
+ | |||
+ | desenhaCaractere('\n',margem); // 5º Margem superior | ||
+ | } | ||
+ | |||
+ | |||
+ | int main() | ||
+ | { | ||
+ | desenhar_retang(2,30,10); | ||
+ | return 0; | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | {{collapse bottom}} | ||
+ | |||
+ | = Desafio: Calcular desvio padrão utilizando C = | ||
+ | Fiz um video simples de 15 minutos da resolução do desafio. | ||
+ | |||
+ | Link: https://www.youtube.com/watch?v=ubFc30sC31M |
Edição atual tal como às 11h10min de 8 de outubro de 2021
Desenhando um retângulo no terminal utilizando C
Como estamos trabalhando com o terminal temos que programar a construção do retângulo pensando em linha por linha!
Exemplo de desenho
##### # # # # #####
Olhando para o exemplo acima e analisando linha por linha podemos desenhar ele em 5 etapas.
- 1º Margem superior.
- 2º Topo, que é composta por:
- margem lateral + (caractere '#')* tamanho_da_base + margem lateral.
- 3º Meio do desenho, composto por:
- margem lateral + caractere '#' + (espaços em branco)*(tamanho_da_base - 2) + caractere '#' + margem lateral.
- 4º Base, composta por:
- margem lateral + (caractere '#')* tamanho_da_base + margem lateral.
- 5º Margem Inferior.
Código simples |
---|
#include <stdio.h>
int desenhar_retang(int margem, int base, int altura) {
for (int i = 0; i < margem; ++i) { // 1º Margem superior, um for para desenhar a margem
printf("\n"); // Um simples "\n" para quebrar a linha
}
for (int i = 0; i < margem; ++i) { // 2.1º Topo - Margem lateral
printf(" ");
}
for (int i = 0; i < base; ++i) { // 2.2º Topo - Linha de caracteres '#'
printf("#");
}
for (int i = 0; i < base; ++i) { // 2.3º Topo - Margem Lateral
printf(" ");
}
printf("\n");//
//Aqui temos um for para a quantidade de linhas repetidas e dentro dele a construção de cada linha!
for (int k = 0; k < altura - 2; ++k) {
for (int i = 0; i < margem; ++i) { // 3.1° Meio do desenho - Margem lateral
printf(" ");
}
printf("#"); // 3.2° Meio do desenho - Caractere '#'
for (int i = 0; i < base - 2; ++i) { // 3.3° Meio do desenho - Espaços em branco
printf(" ");
}
printf("#"); // 3.4° Meio do desenho - Caractere "#"
for (int i = 0; i < margem; ++i) { // 3.5° Meio do desenho - Margem lateral
printf(" ");
}
printf("\n");
}
for (int i = 0; i < margem; ++i) { // 4.1º Base - Margem lateral
printf(" ");
}
for (int i = 0; i < base; ++i) { // 4.2º Base - Linha de caracteres
printf("#");
}
for (int i = 0; i < margem; ++i) { // 4.3º Base - Margem Lateral
printf(" ");
}
for (int i = 0; i < margem; ++i) { // 5º Margem superior
printf("\n");
}
}
int main()
{
desenhar_retang(2,30,10);
return 0;
}
|
Podemos melhorar esse código criando algumas funções:
Função para desenhar a margem lateral que se repete durante o código todo, ela recebe como parâmetro o tamanho da margem.
Função margem Lateral |
---|
int margemLateral(int margem){
for (int i = 0; i < margem; ++i) {
printf(" ");
}
}
|
Ou podemos criar uma função que receba o caractere e a quantidade de vezes que ele deve aparecer:
Função desenha caractere |
---|
int desenhaCaractere(char caractere, int quantidade){
for (int i = 0; i < quantidade; ++i) {
printf(caractere);
}
}
|
Código utilizando a função desenhaCaractere |
---|
#include <stdio.h>
int desenhaCaractere(char caractere, int quantidade){
for (int i = 0; i < quantidade; ++i) { //Loop para desenhar a quantidade de caracteres.
printf("%c", caractere); //Printa o caractere.
}
return 0;
}
int desenhar_retang(int margem, int base, int altura) {
desenhaCaractere('\n',margem); // 1º Margem superior
desenhaCaractere(' ',margem); // 2.1º Topo - Margem lateral
desenhaCaractere('#',base); // 2.2º Topo - Linha de caracteres '#'
desenhaCaractere(' ',margem); // 2.3º Topo - Margem Lateral
printf("\n");
//Aqui temos um for para a quantidade de linhas repetidas e dentro dele a construção de cada linha!
for (int k = 0; k < altura - 2; ++k) {
desenhaCaractere(' ',margem); // 3.1º Meio do desenho - Margem lateral
printf("#"); // 3.2º Meio do desenho - Caractér '#'
desenhaCaractere(' ',base-2); // 3.3º Meio do desenho - Espaços em branco
printf("#"); // 3.4º Meio do desenho - Caractér "#"
desenhaCaractere(' ',margem); // 3.5º Meio do desenho - Margem lateral
printf("\n");
}
desenhaCaractere(' ',margem); // 4.1º Base - Margem lateral
desenhaCaractere('#',base); // 4.2º Base - Linha de caracteres
desenhaCaractere(' ',margem); // 4.3º Base - Margem Lateral
desenhaCaractere('\n',margem); // 5º Margem superior
}
int main()
{
desenhar_retang(2,30,10);
return 0;
}
|
Desafio: Calcular desvio padrão utilizando C
Fiz um video simples de 15 minutos da resolução do desafio.