Ir para conteúdo
Fórum Script Brasil

britivaldo

Membros
  • Total de itens

    198
  • Registro em

  • Última visita

Tudo que britivaldo postou

  1. Olá, então percebo primeiro que variável ope não é declarada array! Por consequência, a função de leitura/gravação extrapola o limite da variável. Veja o exemplo: /* OPERADOR * Solicitar informacao no formato caractere */ printf("%s", "\nDigite operador [A - Adic M - Mult] > "); /* ler-gravar na memoria o valor 1 caractere */ int ok_operador = scanf(" %c", &operador); assert(("Falha ao gravar operador.", ok_operador == 1)); Observe a strings de formato no primeiro argumento da função scanf (" %c", …), quando escrito assim, os processos ignoram caracteres não gráficos (espaço branco, nova linha, etc.) e grava o caractere seguinte. — Uma interpretação do exercício sugere que o programa continua solicitação de informações (números e operadores) enquanto o acumulo dos resultados é menor ou igual a 10000.0; entende-se que tudo processo está em um bloco de loop, exceto a printf que exibirá a quantidade de operações antes de acumular 10000.0; Ex.: #include <stdio.h> #include <assert.h> /* Exercício * * Fonte * Autor: @FEBRAZ Forum SCRIPT BRASIL * https://forum.scriptbrasil.com.br/topic/218153- * algu%C3%A9m-pode-me-ajudar-com-script-a-seguir/ */ int main(int argc, char *argv[]) { float numero1 = 0.f, numero2 = 0.f, resultados = 0.f; char operador = 0; int qtd_operacoes = 0; do { // Entradas e o processamento [operacoeso e contagem ] ficam aqui /* NUMERO 1 * solicitar informacao no formato numerico e flutuante */ /* ler-gravar na memoria o valor real do usuario */ /* NUMERO 2 * solicitar informacao no formato numerico flutuante */ printf("%s", "\nDigite numero real [ex.: 3.44] > "); /* ler-gravar na memoria o valor real do usuario */ /* OPERADOR * solicitar informacao no formato caractere */ /* ler-gravar na memoria o valor 1 caractere do usuario */ /* PROCESSAMENTO * Acumular resultados enquanto menor ou igual 10000.0 */ } while (resultados <= 10000.0f); /* INFORMACAO * Exibir a quantidade de operacoes relalizadas */ printf("%s%d", "\n#Total de operacoes realizadas: ", qtd_operacoes); return(0); } //Fim do Programa
  2. Para excluir dúvidas, sugiro dar, pelo menos, um exemplo ou ilustração dessa situação, porque aparenta trivial; confunde-se com quociente [inteiro].
  3. Olá! @marimariiii, em "\nlapis %12.2f", os números depois de % dizem para escrever no máximo sua saída numérica com 12 caracteres e reservar 2 destes na apresentação para fração de decimais, com tudo à direita. Por exemplo: O número 10 apresentará 10,00; número 12,234390 apresentará 12,23. C'11 #include <stdio.h> int main() { printf("Exemplo~"); double doub = 0.0; scanf("%lf",&doub); printf("|%12.2f|",doub); return 0; }
  4. Olá, @4ng3lo: Geralmente acontece quando se proíbe o software grava/lê segmentos de memória que não lhes pertence. C.: int buscarProduto(Produto* produtos, const char* nome_Produto){ int encontrado = 0; while(produtos != NULL){ /*-[!] Seguido pela programação de cadastro para produtos, o arranjo produtos não garante o produto nulo. Enquanto irregularmente continua até uma falha-*/ if(strcmp((produtos)->nome, nome_Produto)){ }else{ encontrado = 1; break; } produtos++; } return encontrado; } — Siga o raciocínio: A exceção é o parâmetro nulo (endereço 0), isto é, para valores diferentes de 0 seu laço 'while' continua até uma falha, porque nunca será = 'null'. Suponho que, confundiu-se entre duas estratégias de listar dados [os arranjos e os nós]; sendo didático, escolha arranjos [vetores] e efetue (você mesmo) a correção na programação.
  5. Olá, @gustavoibiapinafh: Note em tua função que, os argumentos são respectivamente um destino para os dados [*buffer] e quantidade de bytes que suportam no destino ['lenght']. — Quando invocar essa função atribua parâmetros correspondentes aos tipos dos parâmetros na função. C.: Não compara literais strings diretamente/declaradamente. char escala[50]; double fahrenheit, celsius; printf("Voce vai digitar a temperatura em qual escala(C/F)?: "); ler_texto(escala, sizeof escala); /*-[!] Fiz correção de parametros-*/ /*-[!] if ("escala = "F"){ Impossivel declaradamente comparar strings, usa-se uma função na biblioteca string.h -*/ if () { printf("Digite a temperatura: "); scanf("%lf", &fahrenheit); celsius = (fahrenheit - 32) / 1.8; printf("Temperatura equivalente em celsius: %.2f", celsius); } Sendo didático, elabore (você mesmo) tua correção.
  6. Ola tudo bem, espero que esteja bem. Então, é difícil associar a construção/código acima com o que diz o enunciado. Para responder a questão é necessário observar/ler: função rand da biblioteca stdlib.h função com algoritmo de ordenação, recomendo insert sort porque é um fácil de implementar.
  7. Ainda é uma pergunta subjetiva, seja mais específico, contribuiria se demostrar o problema com exemplos de entrada e saída.
  8. SETLOCALE Olá, tudo bem? Espero que esteja bem. A função setlocale mais os argumentos LC_ALL, 'Portuguese' alteram os padrões C, em específico, o formato do dado real (flutuante ou dobro). Antes de chamar a função considera o (.) ponto o seu separador de inteiro e fração após chamada passa a considerar (,) vírgula. Veja Então Essa mudança, no entanto, tem efeito somente para os inputs|outputs. Isso é, a sintaxe c permanece com separação padrão: por (.) ponto. Exemplo #include"stdio.h" #include"locale.h" //setlocale LC_ALL localeconv struct lconv int main(void){ // Demonstracao dos efeitos na entrada com uso da funcao selocale com os argumentos // LC_ALL e "Portuguese" struct lconv * pattern = localeconv(); printf("Entre com valor real(d%sdd)\n",pattern->decimal_point); double valor0 = 0.0; scanf("%lf",&valor0); printf("Valor0: %f\n",valor0); puts(setlocale(LC_ALL,"pt_BR.UTF-8")); // altera os padroes c para Portuguese pattern = localeconv(); printf("Entre com valor real(d%sdd)\n",pattern->decimal_point); double valor1 = 0.0; scanf("%lf",&valor1); printf("Valor1: %f\n",valor1); puts("Fim da demonstracao"); return 0; } Se reler a documentação dessa função terá mais informações para determinar a melhor solução do problema. 🙂
  9. Olá, refatore|use o operador condicional (ternário), pois não existem mudanças de fluxo e sim seleção de valor padrão. Veja: #include"iostream" using namespace std; int main(void){ int codigo; cout<<"Digite o codigo dos produto:\n"; cin>>codigo; int qtd; cout<<"Digite a quantidade comprada:\n"; cin>>qtd; double valor = (codigo==1001) ? 5.32: (codigo==1324) ? 6.45: (codigo==6548) ? 2.37: (codigo==1987) ? 5.32: (codigo==7623) ? 6.45:0.00; if(valor>0.00){ cout<<"Total: $"<<valor*qtd<<endl; } else{ cout<<"Error!"<<endl; } return 0; } Se nenhum dos códigos na instrução ternária resultar VERDADEIRO, o valor 0.00 será atribuído à total. Em seguida uma verificação de total: a instrução decide que valor não positivo é um Error! 🙂
  10. Olá, tudo bem? Seja bem-vindo ao fórum! Para auxiliar a discussão na melhor forma, descrevas seu objetivo, exponhas quais eram|são as etapas|rotinas|operações do programa e os valores ideais de entrada e a saída. Caso seja um exercício, compartilhas 'print screen' do enunciado, descrevas as etapas para solução ou assunto estudado.
  11. Ola, tudo bem com você? Seja bem-vindo ao fórum. Para ajudar na melhor maneira possível, preciso que me diga quais assuntos estudou antes do exercício para o exercício. 🙂 OK
  12. @Yumeiro TheoryTudo bem! Espero que esteja bem. Sua dúvida é escrever os tipos em 'struct'? Soou estranho porque a princípio e algo fácil, já para a categoria de dado abstrato precisará das operações na forma de funções. {C} typedef struct _dupla{ union {float r, x;}; union {float a, y;}; } Dupla, Polar, Cartesiano; Dupla get_dupla (char *mensagem); Cartesiano converta_polar (Dupla p); #include"string.h" #include"math.h" #include"stdio.h" int main (void) { Polar pol = get_dupla ("Entre com as coordenadas polares: "); Cartesiano car = converta_polar (pol); printf ("Coordenadas cartesianas: (%.2f, %.2f)\n", car.x, car.y); printf ("Coordenadas Polares ...: (%.2f, %.2fπ)\n", pol.r, pol.a); return 0; } Cartesiano converta_polar (Dupla p) { Cartesiano c; c.x = p.r * cos(p.a); c.y = p.r * sin(p.a); return c; } Dupla get_dupla (char *mensagem) { struct _dupla ret; printf ("%s", mensagem); (void) scanf ("%f%f", &ret.x, &ret.y); return ret; } No caso a função de conversão;
  13. Não! A intenção do exercício é o contrário de procurar uma solução ou função pronta. Se está complicado é porque precisa de revisão dos fundamentos: * variáveis * loops * operadores aritméticos (% /) * função de entrada saída Extra: operadores bitwise
  14. @Lyudmila Pavlichenkobem-vindo Teu programa é um exemplo de “app” console/terminal. Os ‘softwares’ dessa categoria, em tese, são executados na janela de comando do prompt. Entre na pasta do programa Abra uma janela do prompt Digite o nome do programa exemplo: examinar_numero Tecla ENTER [🙂] — espero que ajude
  15. Bem-vindo. Divida o problema em partes fundamentais e comece, as partes fundamentais são as frações do problema que necessita identificar. Se por acaso está difícil é porque precisa de mais exercício dos fundamentos da linguagem C. [🙂]
  16. Bem-vindo @Hacker_em_treinamento Nota-se alguns erros lógicos e outras elementos. #1 int lucro_energetico(int s, int x, int n){ int c=0; int c2=0; int y=0; int t=0; int t2=0; int m=0; int xc=0; scanf("%d", &n); scanf("%d", &x); ... As variáveis x e n são parâmetros na função; é logicamente errado sobrescrever seus dados. #2 if () { printf("Reacao não finalizada %d\n", x); } Nessa instrução de fluxo de controle falta a expressão na condição. e.g. if (condition) { /*code block*/ } #3 for (; c == n;) { if (x >= t) { printf("Reacao finalizada: %d\n", x); break; } } Em tese... se c é igual a n, x é menor que t; terá um ‘loop’ infinito. Pense no porque disso! Acredito que com uma boa revisão da linguagem e do problema, resolverá numa próxima tentativa. [🙂] — espero que ajude.
  17. Bem-vindo @mob sters C é uma linguagem case-sensitive, ou seja, nomes iguais, porém com letras maiúsculas e minúsculas são interpretados diferentes. Dito isso saiba que a notação correta para nome da função principal é int main() { /* corpo do função */ return 0; } com m minúscula. [🙂] espero que ajude.
  18. Ola! Quase lá! Só um detalhe..., que você mesmo tente descobrir qual. Para isso, observe o fragmento abaixo escolha a alternativa certa e atualize o ninho de ‘loop’. /* Ate aqui atendeu suficientemente bem a questão | Demostrou compreender bem a transposta de A e sabe que: | | t-linhas = A-colunas (col) | t-colunas = A-linhas (lin) | Agora... | X Qual a ordem dos limites dos índices da transposta (t) ? | a)[ ] i < lin e j < col | b)[ ] i < col e j < lin */ printf("\nElementos da matriz transporta:\n"); for (i = 0;/*complete*/; i++) { for (j = 0;/*complete*/; j++) { printf (" %.2f ", t[i][j]); } printf ("\n"); } [🙂] — Ajudou?
  19. Olá Sim! Eu suponho ser um exercício para você, tentou resolvê-lo? Mostre sua tentativa para eu determinar como posso ajudar. [🙂]
  20. Olá @Bruno Nery Além dos projetos acima, existem outros caminhos análogas que usam uma variável estática para contar a quantidade de linhas. É possível também escrever outra função recursiva que chamaria a primeira e, assim, definir as linhas de gráfico. Exemplo — Aqui eu uso o primeiro caso, uma função recursiva que empilha cópias de si mesma n vezes para depois executar a sua segunda etapa de n por n; ou as linhas de gráfico C Language /> _ #include"stdio.h" void print_graph (int n) { static int times = 1; if (times) { if (n > 0) print_graph (n - 1); else return; times = 0; //desliga a pilhagem //basicamente -- empinha as linhas de grafico //equivalente à chamar a função print_graph (n,...,1) } if (n > 0) { printf ("*"); print_graph (n - 1); } else printf ("\n"); times = 1; // religa pilhagem. return; } int main (void) { print_graph (5); // escrever ... return 0; } [🙂] — Entendeu?
  21. Olá! Eu falei! É muita mais fácil e produtivo falar o que certou do que gastar minutos / horas concentrado no que errou. Além disso, visto que destaquei o que está certo tudo que sobrou está errado. — A única porção de código com uma intenção/lógica visível é a rotina que faz cópia invertidamente da entrada, pois de tudo escreveu somente essa parte da lógica indica uma solução; comparar a cópia invertida com a entrada e se forem iguais é palíndromo. [🙂] Ficou claro?
  22. Olá Deu entender que a parte da programação que utiliza a regra é escrita o mais próximo possível da maneira usual, ou seja, do modo que se faz com papel e lápis. Algo possível já que a notação de listas (vetor/matriz) tem semelhanças com aquelas que usamos na matemática, acredito que também notou/notará isso. Com relação à leitura, precisa de uma ninho de laços para percorrer os índices da matriz. Por isso, aprenda "tudo" que puder acerca de laços em C e depois faça uma tentativa sincera.
×
×
  • Criar Novo...