Ir ao conteúdo

Ansi C

Membro Pleno
  • Posts

    3.284
  • Cadastrado em

  • Última visita

Tudo que Ansi C postou

  1. Ansi C

    C Jogo jan-ken-pon em C

    Boa Dia! Quando diz 'Digite o número da sua jogada' fica impreciso porque não há informação (mensagem) que auxilie o usuário na associação de números e símbolos, mas se escrevesse mensagens mais amigáveis e com entendimento no jogo essa imprecisão acabaria. /****************************************************************************** Exercicio --------- [...] • Lê jogada (sem parâmetros, retorna um inteiro) — Informa ao usuário quais são as opções de jogada que ele pode fazer, lê a opção selecionada pelo usuário e verifica se ele informou uma jogada válida (1, 2 ou 3). Ao final retorna o número da jogada feita pelo usuário. [...] Atenção ------- O programa deverá obrigatoriamente usar funções." *******************************************************************************/ #include <stdio.h> //simbolos de mao comuns na competicao jan-ken-pon enum sinais_de_mao {NENHUM= 0x0, PEDRA, PAPEL, TESOURA}; //constantes // ler jogada (sinal de mao) do usuario enum sinais_de_mao ler_jogada(void) { //declarar variaveis e iniciar com prodrao enum sinais_de_mao do_usuario= NENHUM; //explicar a jogada printf("%s", "JAN-KEN-PON\n" "As regras da jogada sao as seguintes, voce tem 3 opções PEDRA, PAPEL e " "TESOURA. Para agilizar a jogada um numero foi associado ao sinais de mao. " "Escolha apenas um numero, digite-o e depois ENTER [para CONFIRMAR].\n" "\n"); //jogar do { //enquanto invalida printf("%s", "JAN-KEN-PON\n" "Pedra, papel e tesoura sao as jogadas, siga as regras do jogo.\n" "\n"); printf("%s", " Por favor, digite o numero de sua jogada? 1)PEDRA 2)PAPEL 3)TESOURA\n" " USUARIO . . . . . . . . . . . . . . . . ? " ); scanf("%u", &do_usuario); //linha estetica printf("\n"); //expressao para fora do intervalo de 1 ate 3 } while ((do_usuario < PEDRA) || (TESOURA < do_usuario)); //fim printf("%s", "JAN-KEN-PON\n" "Obrigado e Boa Sorte!"); return do_usuario; } int main(void) { ler_jogada() //do usuario; //fim return 0; }
  2. Bom Dia! Existe programa que busca o maior e o menor valor em um escalar, já fez algo desse tipo? Repense uma solução, poste seu código, diga sua dúvida e como ajudar.
  3. @Jonathan Lira A expressão booliana na declaração condicional IF decide se o ‘número’ é ou não par, que resolveu metade do problema, para mais é preciso condicional que decide se o ‘ímpar’ é ou não primo e quando sim soma-lo. //Soma de n numeros primos #include <stdio.h> //tipo de dado descritivo typedef int primos; typedef int quantidade; typedef int decimal_int; int main (void){ //declarar variaveis e inicializar com padrão primos soma= 0; quantidade n= 0; decimal_int numero= 0; //pegar quantidade 'n' printf ("Quantidade de numeros: "); scanf ("%d", &n); //pegar 'n' numeros e 'somar' somente se primo for (quantidade i= 1; i <= n; i++) { //pegar numero printf ("Digite um numero: "); scanf ("%d", &numero); //se numero e par 'continue' pegue o proximo if ((numero % 2) == 0) { continue; } //senao else { //teste de primalidade e somar puts ("Teste"); } } //mostra soma printf("Soma dos numeros primos e: %d\n", soma); //fim return 0; } A implementação de um teste de primalidade é parte crucial do problema, seu compromisso e deveras fácil, exemplo, complemente a partir da definição matemática.
  4. @Battata Reagiu mais não falou nada! Ficou claro que pedido é vetor de int? Que os índices (1 a 7) em pedido corresponde a variável de valor da quantidade de 'item' pedidos? Por exemplo, //adicionar 'quantidade' de 'item' no 'pedido' pedido [item]= quantidade; break;
  5. @Battata Teve ideia de como armazenar os dados dos pedidos? #include<stdlib.h> #include<stdio.h> #include<locale.h> //tipo de dado tipo descritivo typedef int refeicao; typedef float reais; int main (void) { //declarar variaveis e inicializar com padrão refeicao quantidade= 0, item= 0; reais total= .0f; //permitir acentuação setlocale(LC_ALL, "Portuguese"); //menu de lanches; variavel ponteiro [indexavel] de tipo char e strings literais enum lanches {B_S= 0x0, CAB, I01, I02, I03, I04, I05, I06, I07, B_I};//constantes char *menu_lanches [0xA]= { [B_S]= " ___________________________________________________ \n", [CAB]= "| Item| Produto | Código | Preço Unitário |\n", [I01]= "| 1 | Cachorro-quente | 100 | 5,00 |\n", [I02]= "| 2 | X-Salada | 101 | 8,79 |\n", [I03]= "| 3 | X-Bacon | 102 | 9,99 |\n", [I04]= "| 4 | Misto | 103 | 6,89 |\n", [I05]= "| 5 | Salada | 104 | 4,80 |\n", [I06]= "| 6 | Água | 105 | 3,49 |\n", [I07]= "| 7 | Refrigerante | 106 | 4,99 |\n", [B_I]= "|_____|__________________|________|_________________|\n", }; //exibir menu printf("\n"); printf("%s", menu_lanches [B_S]); //borda superior printf("%s", menu_lanches [CAB]); //cabecalho printf("%s", menu_lanches [I01]); //item 01 printf("%s", menu_lanches [I02]); printf("%s", menu_lanches [I03]); printf("%s", menu_lanches [I04]); // ... printf("%s", menu_lanches [I05]); printf("%s", menu_lanches [I06]); printf("%s", menu_lanches [I07]); //item 07 printf("%s", menu_lanches [B_I]); //borda inferior //permitir escolha de varios itens while ((1 <= item) && (item <= 7)) { //escolha do pedido e quantidade printf("Escolha um item: "); scanf_s("%d", &item); //armazenar os dados dos pedidos [## COMO ???????] switch (CAB + item) Cada refeição ou ‘item’ de 'menu' é um número inteiro entre 1 e 7, como armazenar um pedido? Pedido é a quantidade solicitada para de cada uma das refeições, se existe sete refeições como contabilizar separadamente cada um? Sugestão: use um vetor de refeição.
  6. @Giovanna Moreira Excelente e ficou sabendo qual é a resposta a pergunta. O que seria uma variável 3D? Conte-nos!
  7. Bom Dia, Parece que sou a pessoa má e moralista (ultimamente) do fórum, mas gostaria que entendesse que todos os colegas desse fórum resolveriam esse exercício dê os olhos fechados, porém o exercício é na medida certa para VOCÊ. Se frequentou todas as aulas de Física, anotou e ainda não está seguro é porque precisa estudar mais um pouquinho esse é um dos objetivos do exercício: mostrar para você o que não sabe e precisa estudar. Essa é só uma opinião e existem outras, inclusive se a moderação entender diferente pode apagar. " Realmente está travado em algum assunto qual é?
  8. @Julia_Lucia Bom dia, Escolheu minha sugestão como "solução", obrigado. Não seria interessante você deixar o teu programa? Faz sentido que o autor da discussão seja também da resposta, não se sinta obrigada a provar nada, é somente mais um encerramento que ajudaria outros leitores assim como fizeram nossos colegas. "
  9. Agora que entendeu o problema pode ajuda dando sua resposta no final dessa discussão assim ajudará outros, que igual a mim, vierem em busca do resultado e não a conversa toda.
  10. Bom dia, Porque a chamada da função printf falha na conversão de dados Perceba que 'soma_primos' é tipo int, porém o especificador no argumento da função espera um tipo float. printf("Soma dos numeros primos e: %.2f\n", soma_primos); Só precisa especificador certo correspondente ao dado. " Extra: E quais seriam esses resultados? Qual é a entrada certa, a saída certa? "
  11. @Giovanna Moreira Notei que leu os palpites e opiniões da discussão, por causa da "mãozinha" para cima. 'Crie Variável 3D' é um elemento subjetivo e cabe algumas suposições e nada mais, será para sempre inconclusivo em outros fóruns essa pergunta seria cancelada. Particularmente, quando a pergunta é subjetiva questiono o meu professor porque prevalece a opinião dele, que é o autor do elemento. Agora, se você também faz dessa maneira e necessitou da opinião de outros é porque precisa otimizar a comunicação entre seus professores e você. " Na próxima, se não for pedir muito; comunique, intervenha e questione. Você pode ser a autora e a melhor resposta. "
  12. Boa Tarde, Profetizo que é exatamente o que imaginou, uma matriz de 3Dimensoes. tipo nome [z][y][x] "
  13. Canso de ver e nunca perguntou o porquê do estilo, rapaz!!! O único manual de estilo na vida que precisei The Elements of Programming Style by Kernighan. Acredito que são indicadores, para uso e com mais atenção as recomendações do programador (es) ou da linguagem no caso. Geralmente se não é uma palavra reservada deve ser vista como uma, foram definidas para se diferenciar de outra, e também, há casos de uso interno. Exemplos __func __ stdbool.h _Bool tem sinônimo bool. Extra: Não se cria um novo tipo. "
  14. Eu também pensei isso, porém; se seguir a riscas o enunciado é algo importante, e geralmente é quando se trada de exercício de escalares, esse raciocino para por aqui. Veja: Talvez essa parte do enunciado não esteja aberto para interpretações somente se admite o mais certo quando se segue a 'receita do bolo', que nesse caso é o enunciado mesmo. Além disso, por qual ração as direções estão justamente escritas em literal char. Eu fiz as correções, veja char funcao1 (void) { int num; char direcao; // srand(time(NULL)); <-- essa funcao na primeira linha de main // depois apague esses e outro comnetario num= rand() % 2; if (num == 0) { direcao= 'D'; } else { direcao= 'E'; } //printf("%c", direcao); <-- aqui nao imprime nada return direcao; } Funciona! Opinião: Acredito que antes de propor novos meios ou no caso mais grave impor uma solução; é necessário explorar a lógica e a programação apresentada pela autora como @AdrianoSiqueira., afinal de conta é da autora o exercício. "
  15. Boa Noite, Passar srand para corpo da main deveria ser o bastante, pelo menos no teste rápido aqui ocorreu como esperado, e no final a função ficou com essa cara, int sorteio (void) { return ((rand () % 30) + 1); } Ainda assim, pode ter sorteios iguais (repetidos) isso é normal, é uma característica das funções randômicas repetir valores principalmente quando envolve aritmética modular. Se esse é o problema então esta discussão talvez ajude: "
  16. Boa Tarde, Seja sincera, realmente essa é a única "dúvida" que tem? Sua vontade é parar o 'loop' que há na sub-rotina. int inserir (int tamanhoReal, int tamanhoTotal, struct produto *p){ // int x; setlocale(LC_ALL,""); // for (x = 0; x < tamanhoReal; x++){ printf ("Digite o nome do produto: "); scanf ("%s", p->nome); setbuf (stdin, 0); printf ("Digite a quantidade: "); scanf ("%d", &p->quantidade); printf ("Digite o setor: "); scanf ("%s", &p->setor); printf ("Digite o preço: "); scanf ("%f", &p->preco); // } } Note que há mais coisas necessárias, só isso não basta para lógica ter completo sentido; pense o porquê dos dois primeiros (tamanhoReal e tamanhoTotal) argumentos. "
  17. *Anteriormente é dito que a palavra reservada é útil para: definir, criar outros nomes (sinônimos), simplificar sintaxe de declaração de tipos e estruturas, esconder, ou melhor, agrupar e esconder outras palavras reservadas (encapsulamento). Menos 'criar um novo tipo', que não é só desnecessário como é errado de várias maneiras, a informação importante é: typedef e outros especificadores, não criam tipos. "
  18. Bom dia, Os sinais do operador estão trocados. contador += 1 Qual a versão de Python?
  19. Bom dia, Muito legal a discussão (alto nível), mas fiquei curioso com afirmação no primeiro 'post', curioso no sentido de como chegou aquela conclusão, e no final qual é a sua nova (e correta) conclusão, porém endorfinas foram liberadas e cada um para o seu lado, naturalmente. " Ainda assim, meu palpite para sua conclusão original... é que veio de uma redação como esta Perceba que mesmo com a tradução ruim no final, ainda é possível notar, uma certa clareza, que existem categorias de falhas. Falha de entrada e Falha de correspondência, são duas categorias de falhas já discutidas; minha atenção foi para o equivoco que se comente ao enxergar duas como uma. "
  20. Não mesmo, desculpas. É um ponteiro que não é declarado constante (ponteiro variável) ou local na memória reservada para o ponteiro. " Passagem por valor? Tem-se a cópia do valor entre variáveis ao chamar uma função que permite usar dentro dela o valor da variável original (argumento) e somente a cópia pode ser modificada. Agora, depende do que é 'valor', pois é costume há anos dizer que quando as variáreis são ponteiros a passagem é por referência. Essa parte explica bem, segundo você, porque não existe passagem por referência: no caso dos ponteiros o valor é um endereço. Endereço esse que se refere ao parâmetro. Mas não é uma referência. Apenas semântica. E as referencias em java a arrays e objetos também são isso. Se chamam references mas são apenas valores que por acaso se referem a alguma coisa. E declarar algo como int& em C++ também é um valor. Que por acaso se lê como referência a int, mas é um valor. E um ponteiro também é um valor. . E declarar algo como var em Pascal também deve ser uma passagem por valor, apesar de ser uma referência. Imagino que seja isso que você estava tentando nos explicar nesse tópico. C++ tem sim um dado da "família" dos ponteiros com este nome: 'Reference'. É um ponteiro mais seguro que não permite as operações comuns de ponteiros. Por exemplo. Depois que a Reference é criada ela não pode ser modificada. C não tem esse dado, somente ponteiro (outro tipo referência) são alegorias das referências que existem em C++. Sejam ponteiros ou references (C++) é tudo dado referência, são variáveis cujo valor é um endereço de outra. Um parâmetro de função que é escrito com a mesma nomenclatura que autor do tópico escreve, não cria uma references, ou ponteiro constante: que o mais próximo da reference (C++), mas sim um ponteiro variável sem restrições. " Quadro de sugestão, semanticamente, certo. Legal! int y[] = {0, 2, 3, 4}; test(int testt[]) --> test (int *testt) | ^----------> é só outro nome para int *testt | +--------> test(y): test (int *tesst= 0x100407000) ^-----= &(y[0]) +-------+-------+-------+-------+ y | 0 | 2 | 3 | 4 | ^ +-------+-------+-------+-------+ | ^ | | +-----+---> 0x100407000 | +------> &(y[0])= 0x100407000 | +------> &(y[1])= 0x100407004 | +------> &(y[2])= 0x100407008 | +------> &(y[3])= 0x10040700c " E contribuições para o quadro serão bem-vindas, outra coisa, é bom para discussão alguém deixa um glossário. "
  21. Ansi C

    Python eval, int ou float?

    Ou seja, não precisa declara o tipo da variável que Python infere (sabe) o tipo com base no valor. Muito legal.
  22. Acredito que o objetivo é demostrar, por simples acesso, que o parâmetro da função quando citado na maneira que fora: é variável de ponteiro e não contaste. Enfim, O mais importante; A matriz (propriamente dita com os elementos e seus valores) não é copiada, porém, sim o endereço é copiado, mais precisamente, o do primeiro elemento. Quadro de sugestão, sematicamente, certo. Legal! int y[] = {0, 2, 3, 4}; test(int testt[]) --> test (int *testt) | ^----------> é só outro nome para int *testt | +--------> test(y): test (int *tesst= y) ^-----= &(y[0]) +-------+-------+-------+-------+ y | 0 | 2 | 3 | 4 | ^ +-------+-------+-------+-------+ | ^ | | +-----+---> 0x100407000 | +------> &(y[0])= 0x100407000 | +------> &(y[1])= 0x100407004 | +------> &(y[2])= 0x100407008 | +------> &(y[3])= 0x10040700c E contribuições para o quadro serão bem-vindas, outra coisa, é bom para discussão alguém deixa um glossário. "
  23. Ansi C

    C++ Matrizes em C++ !!!!!!! C++

    Boa noite, Algumas culturas expõem os mais novos no meio da mata ou ***** eles com 200 formigas enquanto se molda o caráter. São ritos ancestrais que ainda hoje ocorrem, não como antes, em algumas comunidades. Na "era" em que esse exercício para fixação de aprendizado de C surgiu pela primeira vez, historicamente, todos usaram o equivalente ao bloco de notas, livro, anotações e giz no quadro de madeira em Harvard e (Foto: Professor Cain) Stanford, etc. Paralelamente, os ritos ancestrais indígenas para iniciação da juventude estão as festas de debutantes ou as farras de cabaré na vida moderna. Do mesmo modo que um bloco de notas está para code::block ou mais precisamente a toda moderna MS e o seu Visual Studio. Pensar que tudo isso um dia começou com picadas de formigas. " Matrizes em C++, se diferem das matrizes que conheço em C. Dê um exemplo, ou melhor, uma tentativa de solução que sirva de base para discussão? "
  24. Boa Noite, Meio Freudiano, ate chato de dizer, mas, a melhor forma de cessar os conflitos é (conversando) encarando. Desconheço os conflitos, mas, já que foste tu que escreveu às metades, tua "interpolação" é um terceiro que a soma dos dois primeiros já conhecidos por nós. Logo a sugestão é, preserva o (dois) código(s) e escrever um terceiro com os comandos logicamento aos pares e compartilhar os primeiros conflitos dessa prática, racionável. " Os mais experientes na linguagem ajudam, evidentemente, na discussão dos erros e nas soluções. Particularmente, só um pouco. "
  25. Mentira não é então só pode ser verdade. Na minha opinião, não importa o quanto fiquem agradecidos, a política de ajudar existe e acho legal, mas, tem horas que desanda de fato para um faniquito, destarte, pela carência d'aquele sentimento, da felicidade do outro, do agradecimento, da ajuda e da empatia etc, nada racional (recompensadas pela Endorfina + Ocitocina) é tudo pelo prazer. " @NhemonF Entre outras definições; escolher entre opiniões diversas ou várias possibilidades de ação é está com dúvidas. Fora a demagogia dos que "advoga" em nome da Ocitocina; VOCÊ não está simplesmente com dúvida, você não sabe como fazer. Foi só um comentário porque rachei de engraço e não resisti; e não vi maldade. " Espanta que a essa altura ninguém teve um 'faniquito' que maldade só você focou sem um, mas se precisa de ajuda com dúvidas, e não de UM FANIQUITO, eu posso tentar um pouco. Pergunte? E verei uma resposta para ti, sempre ética. "

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!