Jmc2020 Posted November 19, 2020 at 07:46 PM Report Share #620252 Posted November 19, 2020 at 07:46 PM Boas pessoal, espero que estejam bem! Problema, preciso de programar em C um programa que tenha o seguinte output: https://prnt.sc/vme70d O problema é que quando peço ao utilizador para inserir o numero de ramos o programa não para de adicionar asteriscos... Este é o meu código: #include <stdio.h> int main() { int linha; int ramos; int espacos; int asteriscos; int i; printf("Introduza um numero para os ramos: "); scanf("%d", &ramos); for(linha=0;linha<ramos;linha++){ for(i=0; i<espacos; i++){ printf(" "); } for(i=0; i<asteriscos; i++){ printf("*"); } for(i=0;i<espacos;i++){ printf(" "); } printf("\n"); } return 1; } Poderiam ajudar me a entender o que estou a fazer mal, tendo em conta que não podemos usar arrays? O outro problema é o seguinte: Tenho de imprimir a tabela ASCII da seguinte forma: https://prnt.sc/vmeans O problema é que no 8 desconfigura a "formatação"... Fica com este output: https://prnt.sc/vmecv1 Este é o código que tenho: #include <stdio.h> #include <stdlib.h> void main() { int i; printf("\t|CHR\tDEC\tHEX|\t|CHR\tDEC\tHEX|\t|CHR\tDEC\tHEX|\t|CHR\tDEC\tHEX|\n"); for(i=0; i<=255; i++){ printf("\t|%c - %03d - 0x%02xh|\t |%c - %03d - 0x%02xh|\t|%c - %03d - 0x%02xh|\t|%c - %03d - 0x%02xh|\n", i, i, i, i, i, i, i, i, i, i, i, i); } return 0; } Se me puderem ajudar agradecia imenso Cumprimentos, Jmc2020 Link to comment Share on other sites More sharing options...
jmta_92 Posted November 19, 2020 at 11:08 PM Report Share #620253 Posted November 19, 2020 at 11:08 PM (edited) No teu primeiro exemplo que valor tem a variavel asteriscos e espacos? Pela logica tens de inicializar as variaveis int espacos=2; int asteriscos=1; e neste caso os asteriscos dependem das linhas, por isso deve ser algo assim , o for dos asteriscos for(i=0; i<asteriscos+linha; i++){ printf("*"); } Edited November 19, 2020 at 11:11 PM by jmta_92 Link to comment Share on other sites More sharing options...
maluco-123 Posted November 20, 2020 at 12:50 AM Report Share #620254 Posted November 20, 2020 at 12:50 AM Boas, O primeiro não percebi muito bem, pelo que se calhar pedia que esclarecesses (não percebi bem o objetivo). O segundo é tricky em duas situações: 1. As colunas não são todas iguais, umas vão de 0-63, outras de 64-127, etc... Tens que adicionar (0,) 64, 128 ou 192 respetivamente; 2. Alguns caracteres são manhosos para a formatação, isto é não ocupam propriamente 1 espaço. É o caso o 8 (backspace) que está a meter para trás o cursor, o 9 (horizontal tab) que mexe o cursor para a frente (até) 8 espaços e o 10 (line feed, ou newline) que mete o cursor no início da linha seguinte. Tens que tratar estes casos e imprimir apenas um espaço (' ') Boa sorte com isso Link to comment Share on other sites More sharing options...
Jmc2020 Posted November 20, 2020 at 06:22 PM Author Report Share #620269 Posted November 20, 2020 at 06:22 PM 19 horas atrás, jmta_92 disse: No teu primeiro exemplo que valor tem a variavel asteriscos e espacos? Pela logica tens de inicializar as variaveis int espacos=2; int asteriscos=1; e neste caso os asteriscos dependem das linhas, por isso deve ser algo assim , o for dos asteriscos for(i=0; i<asteriscos+linha; i++){ printf("*"); } Obrigado pela sugestão, mas acabei por fazer de outra forma que também resultou... Retirei as variáveis espacos e asteriscos, e deixei a outras 3... desta forma, retirei os dois for respetivos a essas variaveis que removi. Até notei que estava a imprimir 1 minha linha a menos do que o utilizador pedia, porque tinha linha < ramos, foi só trocar por <= e já funcionou. De qualquer das maneiras obrigado pela ajuda. Cumprimentos Link to comment Share on other sites More sharing options...
Jmc2020 Posted November 20, 2020 at 06:24 PM Author Report Share #620270 Posted November 20, 2020 at 06:24 PM 17 horas atrás, maluco-123 disse: Boas, O primeiro não percebi muito bem, pelo que se calhar pedia que esclarecesses (não percebi bem o objetivo). O segundo é tricky em duas situações: 1. As colunas não são todas iguais, umas vão de 0-63, outras de 64-127, etc... Tens que adicionar (0,) 64, 128 ou 192 respetivamente; 2. Alguns caracteres são manhosos para a formatação, isto é não ocupam propriamente 1 espaço. É o caso o 8 (backspace) que está a meter para trás o cursor, o 9 (horizontal tab) que mexe o cursor para a frente (até) 8 espaços e o 10 (line feed, ou newline) que mete o cursor no início da linha seguinte. Tens que tratar estes casos e imprimir apenas um espaço (' ') Boa sorte com isso Fiz como sugeriste e ajudou, obrigado pela ajuda :) Cumprimentos Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now