Ir ao conteúdo

Algoritmos e programação de computadores


Ir à solução Resolvido por louissanabio,

Posts recomendados

Postado

Formas geométricas

O objetivo desta atividade é utilizar caracteres simples para desenhar figuras geométricas simples: retângulos e triângulos retângulos isósceles. Essas figuras podem ser preenchidas ou não. O programa deve desenhar as figuras especificadas pela entrada até que uma opção de término do programa seja especificada.

Tipos de Figuras

Retângulos preenchidos: serão dados como entrada a altura e a largura do retângulo. Deve-se desenhar um retângulo com a altura e largura especificada usando apenas o caractere '*'. Um exemplo de retângulo preenchido com altura 3 e largura 5 está abaixo:

***** ***** *****

Retângulos não preenchidos: serão dados como entrada a altura e largura do retângulo. Deve-se desenhar um retângulo com a altura e largura especificada, mas agora o contorno do retângulo dever ser feito com os caracteres '-' (horizontal) e '|' (vertical), e as pontas devem ser feitas com '*'. Os demais pontos internos deverão ser preenchidos com espaços. Um exemplo de retângulo não preenchido de altura 4 e largura 5 está abaixo:

*---* | | | | *---*

Triângulos retângulos preenchidos: será dado como entrada apenas um número que corresponde ao número de caracteres dos catetos. O triângulo deve ser desenhado apenas com o caractere '*'. Um exemplo de triângulo preenchido para a entrada 5 está abaixo:

* ** *** **** *****

Triângulos retângulos não preenchidos: será dado como entrada apenas um número que corresponde ao número de caracteres dos catetos. O primeiro caractere de um lado é sempre um '*' (as pontas são '*'). O cateto mais à esquerda deve ser desenhado com o caracter '|' (barra vertical), o cateto da base com '-' (hífen) e a hipotenusa pela barra '\'. Os pontos internos deverão ser preenchidos com espaços. Um exemplo de triângulo para a entrada 5 está abaixo:

* |\ | \ | \ *---*

Entrada

O programa deve ler primeiramente um caracter como comando inicial. Os caracteres válidos como entrada inicial são 'R', 'r', 'T', 't' ou 's'.

Caso a entrada inicial seja 'R' o programa deverá ler então dois números inteiros positivos e imprimir um retângulo preenchido com altura igual ao valor do primeiro número e largura igual ao valor do segundo número.

Caso a entrada inicial seja 'r' o programa deverá ler então dois números inteiros positivos e imprimir um retângulo não preenchido com altura igual ao valor do primeiro número e largura igual ao valor do segundo número.

Caso a entrada inicial seja 'T' o programa deverá ler então um número inteiro positivo e imprimir um triângulo preenchido com tamanho dos catetos igual ao valor do número digitado.

Caso a entrada inicial seja 't' o programa deverá ler então um número inteiro positivo e imprimir um triângulo não preenchido com tamanho dos catetos igual ao valor do número digitado.

Caso a entrada inicial seja 's' o programa deverá encerrar a execução.

Todos os números inteiros lidos estarão no intervalo de 2 a 50.

Saída

Para cada entrada inicial válida ('R', 'r', 'T', 't') deverá ser impressa a figura geométrica correspondente, seguida de uma linha em branco ('\n'). A entrada 's' não deve imprimir nada na tela.

Exemplos

Teste 01

Entrada

R 5 5 s

 

Saída

***** ***** ***** ***** *****

Teste 02

Entrada

r 3 3 T 2 s

 

Saída

*-* | | *-* * **

Teste 03

Entrada

t 7 s

 

Saída

* |\ | \ | \ | \ | \ *-----*

Observações

O número máximo de submissões é 15;

O seu programa deve estar completamente contido em um único arquivo denominado lab07.c;

Para a realização dos testes do SuSy, a compilação se dará da seguinte forma:
gcc -std=c99 -pedantic -Wall -o lab07 lab07.c;

Você deve incluir, no início do seu programa, uma breve descrição dos objetivos do programa, da entrada e da saída, além do seu nome e do seu RA;

Indente corretamente o seu código e inclua comentários no decorrer do seu programa.

Critérios importantes

Independentemente dos resultados dos testes do SuSy, o não cumprimento dos critérios abaixo implicará em nota zero nesta tarefa de laboratório.

O único header aceito para essa tarefa é o stdio.h.

Postado

Po valeu pela atenção cara kkkk to desesperado nessa atividade

eu por enquanto fiz isso

 

#include <stdio.h>
int main () {
    int altura, largura, i, j;
    char letra;

    while (letra!='s'){
        scanf ("%c",&letra);

        if (letra == 'R'){
            scanf ("%d %d", &altura, &largura);
            for (i=1;i<=altura;i++){
                for (j=1; j<=largura; j++){
                printf ("*");
                }
            printf("\n");
            }
            printf("\n");
        } else if (letra=='T'){
                scanf ("%d",&altura);
                for (i=1; i<=altura; i++){
                    for (j=1; j<=largura; j++){
                    if(j<=i)
                    printf ("*");
                    }
                    printf("\n");
                    } printf("\n");
        } else if (letra=='r') {
                scanf ("%d%d", &altura, &largura);
                for (i=1; 1<=altura; i++){
                    for(j=1;j<=largura; j++){
                    if (((i==1)&&(j==largura))||((i==1)&&(j==1))||((j==1)&&(i=altura))||((i==altura)&&(j==largura)))
                    printf("*");
                    if (((i==1)&&(j>1)&&(j<largura))||((i==altura)&&(j>1)&&(j<largura)))
                    printf("-");
                    if (((1<i)&&(i<altura)&&(j==1))||((1<i)&&(i<altura)&&(j==largura)))
                    printf("|");
                    else
                    printf(" ");
                    }
            printf("\n");
            }
            printf("\n");
        } else if (letra=='t') {
               scanf ("%d%d", &altura, &largura);
               for(i=1; 1<=altura; i++) {
                   for(j=1;j<=largura;j++){
                   if (((i==1)&&(j==1))||((j==1)&&(i==altura))||((i==altura)&&(j==largura)))
                   printf("*");
                   if ((j==1)&&(i>1)&&(i<altura))
                   printf("|");
                   if ((i==altura)&&(j>1)&&(j<largura))
                   printf("-");
                   if ((i==j)&&(i!=1)&&(i!=altura))
                   printf("\\");
                   else
                   printf(" ");
                   }
               }printf ("\n");
        } printf ("\n");
    }

return 0;}

@louissanabio esqueci de te mencionar

 

um dos problemas q encontro é q não sai do looping infinito

 

  • Curtir 1
  • Solução
Postado

@Victor Bonilha olha as alterações que fiz, complete o que pedi e posta novamente para eu corrigi-lo se precisar, claro! :D

 

#include <stdio.h>
int main () {
    int altura, largura, i, j;
    char letra,continuar='C'; // aqui você coloca a LETRA valendo C e acrencesntei a variavel CONTINUAR
    
    //CRIE UM MENU COM
    //ESCOLHA A OPÇÃO ESCOLHIDA ENTRE 'R' para retangulo,'T' para trapesio...
    //ATRIBUA A ESCOLHA A VARIAVEL letra
    
    while (continuar=='C'){ // aqui mudei  condição para igual a C e mudei a variavel para CONTINUAR
        scanf ("%c",&letra);
        if (letra == 'R'){
            scanf ("%d %d", &altura, &largura);
            for (i=1;i<=altura;i++){
                for (j=1; j<=largura; j++){
                printf ("*");
                }
            printf("\n");
            }
            printf("\n");
        } else if (letra=='T'){
                scanf ("%d",&altura);
                for (i=1; i<=altura; i++){
                    for (j=1; j<=largura; j++){
                    if(j<=i)
                    printf ("*");
                    }
                    printf("\n");
                    } printf("\n");
        } else if (letra=='r') {
                scanf ("%d%d", &altura, &largura);
                for (i=1; 1<=altura; i++){
                    for(j=1;j<=largura; j++){
                    if (((i==1)&&(j==largura))||((i==1)&&(j==1))||((j==1)&&(i=altura))||((i==altura)&&(j==largura)))
                    printf("*");
                    if (((i==1)&&(j>1)&&(j<largura))||((i==altura)&&(j>1)&&(j<largura)))
                    printf("-");
                    if (((1<i)&&(i<altura)&&(j==1))||((1<i)&&(i<altura)&&(j==largura)))
                    printf("|");
                    else
                    printf(" ");
                    }
            printf("\n");
            }
            printf("\n");
        } else if (letra=='t') {
               scanf ("%d%d", &altura, &largura);
               for(i=1; 1<=altura; i++) {
                   for(j=1;j<=largura;j++){
                   if (((i==1)&&(j==1))||((j==1)&&(i==altura))||((i==altura)&&(j==largura)))
                   printf("*");
                   if ((j==1)&&(i>1)&&(i<altura))
                   printf("|");
                   if ((i==altura)&&(j>1)&&(j<largura))
                   printf("-");
                   if ((i==j)&&(i!=1)&&(i!=altura))
                   printf("\\");
                   else
                   printf(" ");
                   }
               }printf ("\n");
        } printf ("\n");
        // crie um codigo para ler a opção de escolha
        //DESEJA CONTINUAR OU SAIR? S para sair e C para continuar
        //armazene o dado na variavel CONTINUAR
    }
return 0;}

  • Curtir 1
Postado
1 minuto atrás, Victor Bonilha disse:

Cara muito obrigado viu,vou tentar fazer isso aqui,se por a caso eu tiver algum problema eu te peço mais ajuda,mas vou tentar não te atrapalhar :D valeu mesmo @louissanabio

@Victor Bonilha não é atrapalhar não, ao contrario, é um prazer ajudar quem precisa, e o melhor ainda é o conhecimento que adquiro aqui no forum.

 

precisando, chama a gente aqui. caso tiver off, manda msg privada que assim que possivel te chamo e mando a resposta :D

  • Curtir 1
Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!