Veja se dá certo assim:
#include <stdio.h> #include <string.h> #include <stdlib.h> #define MAX_BUFF 256 enum BOOL { FALSE, TRUE }; typedef int BOOL; BOOL isNumeric(char* arg) { BOOL hasDigit = FALSE; char* ptr = arg; while(*ptr!='\0' && *ptr!='\n') { if(*ptr<'0' || *ptr>'9') return FALSE; else hasDigit = TRUE; ptr++; } return hasDigit; } int main (int argc, char** argv) { char* linha_completa; char buffer[MAX_BUFF]; int i, j, n; // ler input do utilizador e testar se é válido buffer[0] = '\0'; while(!isNumeric(buffer) || atoi(buffer)<5 || atoi(buffer)>80) { printf( "\nIntroduza um numero entre 5 e 80: "); fgets(buffer, MAX_BUFF, stdin); } n = atoi(buffer); linha_completa = (char*) malloc(n+1); memset(linha_completa, '*', n); linha_completa[n] = '\0'; // primeira linha puts(linha_completa); // linhas do meio for (i=1; i<=n-1; i++) { for (j=0; j<=n; j++) { if(j==i || j==n-i-1) putchar('*'); else putchar(' '); } putchar('\n'); } // última linha puts(linha_completa); return 0; }
Como faço uma ampulheta utilizando asterisco na linguagem C?
#linguagem c
Para a resolução desta tarefa foram utilizados conhecimentos sobre a linguagem de programação C.
Primeiramente é necessário definir um comprimento lateral máximo (N), lido do usuário por exemplo, após isto implementar uma estrutura de repetição com uma variável i que vai de 0 a N, para que seja impresso uma linha com asterisco na posição i e na posição N-1, esse ciclo irá formar uma cruz. Finaliza-se com a impressão de uma linha de N asteriscos.
Resumindo:
1 - Lê um inteiro N;
2 - Imprime uma linha com N asteriscos;
3 - Imprime N-2 linhas com asteriscos nas posições I e N-1;
4 - Imprime uma linha com N asteriscos.
A implementação do programa é dividida em 4 etapas que resultam na impressão de uma ampulheta de asteriscos.
Para a resolução desta tarefa foram utilizados conhecimentos sobre a linguagem de programação C.
Primeiramente é necessário definir um comprimento lateral máximo (N), lido do usuário por exemplo, após isto implementar uma estrutura de repetição com uma variável i que vai de 0 a N, para que seja impresso uma linha com asterisco na posição i e na posição N-1, esse ciclo irá formar uma cruz. Finaliza-se com a impressão de uma linha de N asteriscos.
Resumindo:
1 - Lê um inteiro N;
2 - Imprime uma linha com N asteriscos;
3 - Imprime N-2 linhas com asteriscos nas posições I e N-1;
4 - Imprime uma linha com N asteriscos.
A implementação do programa é dividida em 4 etapas que resultam na impressão de uma ampulheta de asteriscos.
Para escrever sua resposta aqui, entre ou crie uma conta
Compartilhar