Ir ao conteúdo

Ansi C

Membro Pleno
  • Posts

    3.284
  • Cadastrado em

  • Última visita

Tudo que Ansi C postou

  1. Sou leitor e discordo disso que você tão amargamente escreve. Entretanto, pelo menos, essa minha postagem, que foi toda desqualificada, feita de fezes, atraiu você que me proporciona diversão. Por mim, tudfo bem.
  2. Ansi C

    C Erro em calculadora C

    Concertei o daqui, que agora pelo menos compila; c'11 - gcc'11.4 #include <stdio.h> #include <stdlib.h> typedef struct valores { float x; float y; float resultado; } Valores; int calculadora (Valores *pv) { int escolha= 0; while (escolha!=5) { printf ("\n Escolha operador + opcao 1"); printf ("\n Escolha operador - opcao 2"); printf ("\n Escolha operador * opcao 3"); printf ("\n Escolha operador / opcao 4"); printf ("\n digite 5 para sair"); printf ("\n\n Escolha uma opcao: "); scanf ("%d",&escolha); } switch (escolha) { case 1: { printf("\n\n Opcao escolhida: 1 "); pv->resultado= pv->x + pv->y; } break; case 2: { printf("\n\n Opcao escolhida: 2 "); pv->resultado= pv->x - pv->y; } break; case 3: { printf("\n\n Opcao escolhida: 3 "); pv->resultado= pv->x * pv->y; } break; case 4: { printf("\n\n Opcao escolhida: 4 "); pv->resultado= pv->x / pv->y; } break; default: printf("\n\n opcao invalida"); exit (1); break; } return 0; } void captura (Valores *pv) { printf ("Forneca dois numeros."); scanf (" %f%f",&pv->x,&pv->y); } void resultado (Valores *pv) { printf ("Resultado: %f", pv->resultado); } int main (void) { Valores sv; captura (&sv); calculadora (&sv); resultado (&sv); return (0); }
  3. A expressão estava sintaticamente correta; quero dizer, apesar de sintaticamente correta para a maioria dos compiladores, esta expressão em c talvez produza resultados errados, falhos ou alertas quando submetida em outros compiladores, e depois há, hipoteticamente, usuários que a utilizem erradamente, por exemplo, entrar com letra num campo númerico. c'11 - gcc'11.4 #include <stdio.h> typedef float NUMERO; int main () { NUMERO SalarioMensal ,Dias ,Resultado; printf ("Digite o salario mensal:\n"); scanf ("%f",&SalarioMensal); printf ("Digite a quantidade de dias:\n"); scanf ("%f",&Dias); Resultado= SalarioMensal/ 365* Dias; printf("O seu decimo é :R$ %.2f\n",Resultado); } Dependendo do exercício, interessa ou não! Digitar e entrar com palavras ao invés de número, num campo numérico (salario) e logicamente, observar o programa falhar até o resultado e pensar nisso.
  4. Por exemplo, c'11 - gcc'11.4 #include <stdio.h> /* Include the header file for input and output */ #define NUMERO " %lf" #define OPERADOR " %c" #define ADICAO '+' #define SUBTRACAO '-' #define MULTIPLICACAO 'x' #define DIVISAO '/' #define RESULTADO(r) "%.2f%c",r,'\n' typedef double Numero; typedef char Operador; int main (void) { Numero esquerdo ,direito; Operador operacao; int l= scanf (NUMERO,&esquerdo); int r= scanf (NUMERO,&direito); int u= scanf (OPERADOR,&operacao); if (l!=1 || r!=1 || u!=1) { perror ("Falhou na solicitação"); return 1; } switch (operacao) { case ADICAO : esquerdo+= direito; break; case SUBTRACAO : esquerdo-= direito; break; case MULTIPLICACAO : esquerdo*= direito; break; case DIVISAO : if (direito==0.0) { printf ("%s%c","Divisão por zero",'\n'); operacao= 0; } else esquerdo/= direito; break; default: /* * Operação Inválida */ printf ("%s%c","Operador Inválido",'\n'); operacao= 0; break; } if (operacao) printf (RESULTADO(esquerdo)); return 0; } ...
  5. Bom Dia! Tem o básico de expressões lógicas, aritmética e condicionais. If else | == eq | switch | ?: ternário | scanf | printf Como Resolver ? Escanear-se o dado composto de 2 double como números, 1 char como símbolo da operação (o operador), checa-se com instruções condicionais e fluxo de controle o símbolo\sinal da operação. Deste modo, redireciona-se o programa para os comandos designados pelo símbolo conforme o enunciado no problema (do exercício). Sugerem o uso do switch para expressar o fluxo das operações.
  6. Simplesmente mais um exercício sobre vetores iniciantes das matrizes. Outro exemplo, /* declarar, definir matriz como números pseudoaleatórios */ double snumero[2][100]; size_t znumeroi= sizeof snumero/ sizeof(snumero[0]); size_t znumeroj= sizeof snumero[0]/ sizeof(snumero[0][0]); for (size_t i= 0 ; znumeroi>i ; ++i) for (size_t j= 0 ; znumeroj>j ; ++j) { snumero[i][j]= (double) 1000+ rand ()% (9999- 1000)+ 1; } /* declarar, definir os maiorais */ double smaior[znumeroj]; for (size_t j= 0 ; znumeroj>j ; ++j) smaior[j]= (snumero[0][j]>snumero[1][j])?snumero[0][j] :snumero[1][j]; /* produzir os maiorais no simulador */ int sep= 0; size_t m= 0; while (znumeroj>m) { printf ("%c%.f",sep,smaior[m]); sep= ((++m)% 10UL)?' ':'\n'; } c'11 - gcc'11.4
  7. @devair1010 |@phinky88 Boa Noite! Suponho que é um exercício sobre vetores, então, onde está o vetor? — Acredito ser por meio dum vetor que se faz isso; o programa determina tuas mentiras ao verificar quais elementos no vetor de 1 a 100 estão logicamente excluídos. É nesse mesmo vetor, que está sinalizado um elemento que simboliza o número inicialmente escolhido por você. Não sendo, a lógica permanece com 3 variáveis: os extremos e o valor escolhido pelo usuário. Deste modo, teu número estará entre os limites inferior e superior necessários aos 'palpites' aleatórios\pseudoaleatório no programa que se aproximam do número escolhido a cada ciclo e definem as mentiras: porque tudo além ou aquém dos limites é mentira.
  8. Boa Noite @pedroedumendes Esses eram alguns dos os avisos, se não todos. a.c:7:13: aviso: formato ‘%c’ espera argumento do tipo ‘char *’, mas argumento 2 tem tipo ‘char (*)[20]’ [-Wformat=] 7 | scanf("%c", &NomeNovela); | ~^ ~~~~~~~~~~~ | | | | | char (*)[20] | char * a.c:15:12: aviso: muitos argumentos para o formato [-Wformat-extra-args] 15 | printf("\nPelo que você já assistiu de", "%c", NomeNovela, "\n"); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ a.c:16:12: aviso: muitos argumentos para o formato [-Wformat-extra-args] 16 | printf("\nPodemos concluir que você terminará em: ","%d", previsao, " dias"); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Teu programinha agora compila #include <stdio.h> int main (void) { int capitulos ,tempoEmDias ,totalCaps; char nomeNovela[20]; printf ("%s","Olá! Qual novela esta assistindo? "); scanf ("%19[^\n]",&nomeNovela[0]); printf ("%s","Adoro essa novela!! Qual o total de capítulos? "); scanf ("%d",&totalCaps); printf ("%s","Já está em qual capítulo? "); scanf ("%d",&capitulos); printf ("%s","Há quantos dias esta assistindo? "); scanf ("%d",&tempoEmDias); int previsao= totalCaps/ (capitulos/ tempoEmDias); printf("%s%s%c","Pelo que você já assistiu de ",nomeNovela,'\n'); printf("%s%d%s%c","Podemos concluir que você terminará em: ", previsao," dia(s)",'\n'); return 0; }
  9. @Samuel Fortes Brasil Boa Tarde! Tem relação com a expressão lógica dessa instrução. Lá, quando expressamos, por exemplo, enquanto a<b faca; isso diz ao algoritmo que pare os comandos quando a não é menor que b, por consequência, o temos 1 comando a menos. Para executar esse último comando, expressa-se a≤b Veja: Faça um teste rápido, rescreva o operador < para <=
  10. Boa Tarde Aparentimente, é mais um exercício de iteração sobre vetores das matrizes. /* definir números como pseudoaleatórios 1-10 */ int snumero[5] ,ssorteio[10]; size_t s= sizeof ssorteio/ sizeof(ssorteio[0]); for (size_t a= 0 ; s>a ; ++a) ssorteio[a]= (int) a; for (size_t a= 0 ; s>a ; ++a) { int rs= rand ()% s; int an= ssorteio[--s]; ssorteio[s]= ssorteio[rs]; ssorteio[rs]= an; } for (size_t a= 0 ; sizeof snumero/ sizeof(snumero[0])>a ; ++a) snumero[a]= ssorteio[a]; /* solicitar e checar 3 inteiros como palpites */ int spalpite[3]= {0}, check= -3; printf ("Informe 3 inteiros como palpites do sorteio? "); for (size_t a= 0 ; sizeof spalpite/ sizeof(spalpite[0])>a ; ++a) { int palpite= 0; if (scanf ("%i",&palpite)==EOF) { perror ("Falhou na solicitação do palpite"); return 1; } for (size_t a= 0 ; sizeof snumero/ sizeof(snumero[0])>a ; ++a) check+= snumero[a]==palpite; spalpite[a]= palpite; if ('\n'==getchar ()) break; } /* produzir estatus do apostador no simulador */ char sordinal[] [9]= { {"Primeiro"} , {"Segundo"} , {"Terceiro"}}; for (size_t a= 0 ; sizeof spalpite/ sizeof(spalpite[0])>a ; ++a) { printf ("%s%s",sordinal[a]," número informado pelo usuário foi: "); spalpite[a]?printf ("%d",spalpite[a]):0; putchar ('\n'); } /* ... */ if (!check) printf ("%s%c","GANHOU! Você acertou os 3 números",'\n');
  11. Aqui tua suposta matriz: #include <stdio.h> #include <stdlib.h> int main (void) { FILE *file= fopen ("grafo.csv", "w"); int linha= 5, coluna= 5; int matriz[linha] [coluna]; for (int i= 0 ; linha>i ; i++) for (int j= 0 ; coluna>j ; j++) { matriz[i] [j]= rand()% 2; matriz[j] [i]= matriz[i] [j]!=1; } for (int i= 0 ; linha>i ; i++) { for (int j= 0 ; coluna>j ; j++) { fprintf (file,"%d",matriz[i] [j]); fprintf (file,","); } fprintf(file,"\n"); } for (int i= 0 ; linha>i ; i++) { for (int j= 0 ; coluna>j ; j++) { printf ("%d",matriz[i] [j]); printf (","); } printf ("\n"); } fclose (file); return 0; }
  12. Desconheço, mas, talvez em circuito, /* calcular suas vogais */ int a ,e ,i ,o ,u; a= e= i= o= u= 0; for (size_t ai= 0 ; lin>ai ; ++ai) for (size_t aj= 0 ; col>aj ; ++aj) { int r= tolower (A[ai][aj]); a+= (r=='a'); e+= (r=='e'); i+= (r=='i'); o+= (r=='o'); u+= (r=='u'); } /* produzir soma no simulador */ int soma= a+ e+ i+ o+ u; printf ("%s%d%c","soma é: ",soma,'\n');
  13. Boa Dia! Uma análise Tamanho ¹ Não existe 'o tamanho de uma matriz' em linguagem c, o que acertadamente existem são abstrações como o tamanho de uma matriz, são configurações limitadas de modo que é um risco defina-las com base exclusivamente no que o usuário digita. Aleatório ² Já na declaração ela é aleatória, haja vista que supostamente os seus usuários declaram o seu tamanho com base em critério nenhum: que depende das circunstâncias, casualmente, cujo a definição está num espaço da memória repleta (ou não) de configurações binárias acidentais. Logo, sendo um exercício para iniciante das matrizes, e a partir da solução no post#2 Tenho por exemplo, c'11 - gcc'11.4 /* ... */ #include <ctype.h> /* ... tolower () */ #include <stdlib.h>/* ... rand () */ #include <stdio.h> /* Include the header file for input and output */ int main (void) { /* ler e declarar tamanho */ size_t col= 1; (void) scanf ("%zu",&col); size_t lin= 1; (void) scanf ("%zu",&lin); size_t const LIMIT= 100UL; /* definir e atribuir cordas pseudoaleatórias */ char A[lin%= LIMIT][col%= LIMIT]; printf ("%s%zu%c%zu%c","... declarou-se: ",lin,'x',col,'\n'); for (size_t ai= 0 ; lin>ai ; ++ai) for (size_t aj= 0 ; col>aj ; ++aj) { int num= rand ()% 26+ 65; A[ai][aj]= (char) num; } /* calcular suas vogais */ int a ,e ,i ,o ,u ,outros= 0; a= e= i= o= u= 0; for (size_t ai= 0 ; lin>ai ; ++ai) for (size_t aj= 0 ; col>aj ; ++aj) { int r= tolower (A[ai][aj]); switch (r) { case'a': ++a; break; case'e': ++e; break; case'i': ++i; break; case'o': ++o; break; case'u': ++u; break; default: ++outros; break; }} /* produzir soma no simulador */ int soma= a+ e+ i+ o+ u; printf ("%s%d%c","soma é: ",soma,'\n'); return 0; } e talvez ainda, /* calcular suas vogais */ int h[255]= {0}; for (size_t ai= 0 ; lin>ai ; ++ai) for (size_t aj= 0 ; col>aj ; ++aj) ++h[tolower (A[ai][aj])]; /* produzir soma no simulador */ int soma= h['a']+ h['e']+ h['i']+ h['o']+ h['u']; printf ("%s%d%c","soma é: ",soma,'\n'); ...
  14. Boa Dia! Como diz post #2 e eu reforço: suas variáveis `maior` e `menor` são do tipo int; e a `numeros` de tipo char[], que, com a extração, faz de seus valores aleatórios uma corda aleatória. Resolve: Declare tipo int em `numeros` e expresse a leitura num laço.
  15. Eu sei, às vezes chama os ponteiros de referência e os endereços (valores neles) de passagem. A propósito, isso não é novidade, é a primeira vez que tenho que explicar. Até os iniciantes conhecem esses termos. Claro que é. Funções, ponteiros, gerador de números pseudoaleatórios, tudo de uma vez para uma discussão de iniciantes das matrizes; Ajuda pouco ou quase nada no cerne da questão, e repito são as matrizes e não funções, ponteiros etc, Mas essa é somente a minha opinião. Se parece pedante, é porque te falta leitura. É fácil de resolver, leia mais que termos e palavras deixam de ser pedantes. ****
  16. Pseudoaleatório. Sim, porém, para aqueles que continuam compreendendo matrizes, não ajudará em nada, pelo contrário confundirá ainda mais com todas essas passagens por referência, ponteiros e nomes curtos e funções complicantes. E demais para um exercício iniciante das matrizes, mas se a intenção foi demonstrou conhecimento, então… boa resposta parabéns
  17. @Hello_World Boa Noite! Compila! c'11 - gcc'11.4 #include <stdlib.h> #include <math.h> #include <stdio.h> int main (void) { int n= 2; printf ("Entre com um decimal como quantidade de alunos? "); for ( ; ; ) { int r= getchar (); if (r=='\n' || '-'==r) continue; ungetc (r,stdin); r= scanf ("%d",&n); if (r==EOF) { perror ("Falha na leitura da quantidade"); return 1; } if (r==1) break; while (EOF!=(r= getchar ()) && '\n'!=r); } printf ("%s%d%s%c","... registar ",n," aluno(s)",'\n'); int matricula[n]; double vetor2[n] ,vetor3[n] ,vetor4[n] ,mediaDireta[n] ,vetorRecu[n]; double soma= 0; for (int i= 0 ; i<n ; i++) { printf("Qual e a matricula do aluno? \n"); scanf("%d", &matricula[i]); printf("\nQual foi a nota da primeira prova? \n"); scanf("%lf", &vetor2[i]); printf("\nQual foi a nota da segunda prova? \n"); scanf("%lf", &vetor3[i]); printf("\nQual foi a nota da terceira prova? \n"); scanf("%lf", &vetor4[i]); mediaDireta[i]= (4* vetor2[i]+ 3* vetor3[i]+ 3* vetor4[i])/ 10; if (mediaDireta[i] < 7 && mediaDireta[i] >= 4){ printf("Qual a nota da Prova Final do aluno %d? \n\n", matricula[i]); scanf("%lf", &vetorRecu[i]); mediaDireta[i]= (mediaDireta[i]+ vetorRecu[i])/ 2; } soma= mediaDireta[i]+ soma; } for (int i= 0 ; i<n ; i++) { if (mediaDireta[i]>=6) printf("\n%d Aprovado %f \n\n", matricula[i], mediaDireta[i]); else printf("\n%d Reprovado %f \n", matricula[i], mediaDireta[i]); } double maior= mediaDireta[0]; for (int i= 0 ;i <n; i++ ) if (mediaDireta[i]>maior) maior = mediaDireta[i]; double mediaTurma= soma/ n; printf("A media da turma e %.2f \n",mediaTurma); printf("A maior nota foi %.2f \n",maior); return 0; }
  18. E esta expressão: #include <stdio.h> int main (void) { int d= 100 ,q= 0; int n= 0; scanf ("%d",&n); long sum= 0; while (n) { q= n/ d; n-= d* q; sum+= q; d/= 10; } printf ("%ld%c",sum,'\n'); return 0; }
  19. @907467 Boa Tarde O Problema ... le as idades de 10 alunos, eu preciso ter funções nesse código e não estou conseguindo fazer (...). Uma sugestãp Funções e programas são semelhantes e existem para produzir uma resposta a uma pergunta em 3 etapas (pelo menos): entrada, processamento e saída. Aqui está suas 3 funcões >Ler >Calcular >Mostrar Por exemplo, C'11 - gcc11.4 #include <stdio.h> typedef int idade; /* solicita e captura n idade's */ int ler (idade alunos[], size_t n); int main (void) { idade alunos[10]; size_t n= sizeof alunos/ sizeof(alunos[0]); int r= ler (alunos,n); printf ("%s%d%s%c","Leu: ",r," aluno(s)",'\n'); return 0; } int ler (idade alunos[], size_t n) { int answer= 0; printf ("%s","Informe "); int w= printf ("%zu",n); printf (" decimais como idades dos alunos\n"); for (size_t i= 0 ; i<n ; ++i) { alunos[i]= -1; printf ("idade do aluno %*zu: ",w,i+ 1); int r= scanf ("%d",&alunos[i]); if (r==EOF) { perror ("Falhou na informação de alunos"); return 0; } if (r==1) ++answer; while (EOF!=(r= getchar ()) && '\n'!=r); } return answer; }
  20. Boa Tarde! O Problema Crie um programa onde o usuário digita três valores e imprima na tela o maior valor devendo para isso, criar uma função Maior do tipo int que retorna o maior dos três valores. Criar uma função maior, e não somente uma, função do tipo int (…) A ideia do autor do tópico funciona, porém, suponho que o exercício não seja somente sobre fluxos, é muito mais sobre funções. Logo, sem pensar muito (ou fetichismo), defina uma função que resolva para 2 inteiros e reutilize para 3. Por exemplo, #include <stdio.h> int Maior (int a1, int a2, int a3); int main (void) { int v1 , v2 , v3; int r; printf ("Entre 3 inteiros: "); _1: if (EOF==(r= scanf ("%i",&v1))) return 1; if (1!=r) { getchar (); goto _1; } _2: if (EOF==(r= scanf ("%i",&v2))) return 1; if (1!=r) { getchar (); goto _2; } _3: if (EOF==(r= scanf ("%i",&v3))) return 1; if (1!=r) { getchar (); goto _3; } int m= Maior (v1,v2,v3); printf ("%s%d%c","Maior é: ",m,'\n'); return 0; } int maior (int a1, int a2) { if (a1>a2) return a1; return a2; } int Maior (int a1, int a2, int a3) { return maior (maior (a1,a2),a3); } ***
  21. @Polaris Boa Tarde O que é subrotina? — chatbot Agora que entendemos uma definição de subrotina (função ou método). Iteração sobre vetores. Operações com expressões lógicas. E modulação de programa: esses são alguns dos temas do exercício. Estudou isso, ou algo semelhante?
  22. Isso é complicado para não dizer ilógico, porque para distinguir os números é necesário ler, porém se ler números iguais, então não satisfará o algoritmo que exige leitura de números diferentes. Como definir uma repetição sem ler? — Garanta não haver valores iguais entre 4 valores diferentes.
  23. Somente para aqueles que não são capazes e que dizem coisas como essa frase acima. A solução é condizente com enunciado. Aquela matriz por definição é aleatório! Ainda é impossível saber ou identificar os critérios e processos lógicos/químicos/físicos que acontecem no meu cérebro enquanto escolhia os valores para defini-la (a matriz). Por razão disso, aleatório. E não confunde aleatório com pseudoaleatório. Sei de tudo isso! São temas lidos nos tópicos de apontamentos de matrizes e demonstram-se nos exercícios conforme o exemplo que proponho (de boa fé) a essa discussão. ***
  24. @CarlosMagnos Boa Dia! Veja. Em tese, a linguagem é somente uma ferramenta (de expressão). Logo, defina uma função que permute. Por exempo: Seja a,b duas variáveis Se a<b Então troque seus valores Seja c um novo valor Se a<c Então troque Se b<c Então troque Seja c um novo valor Se a<c Então troque Se b<c Então troque *** Por exemplo C++ #include <iostream> int main() { //1 2 float a; std::cin>>a; float b; std::cin>>b; if (a<b) { float v= a; a= b; b= v; } // 3 float c; std::cin>>c; if (a<c) { float v= a; a= c; c= v; } if (b<c) { b= c; } // 4 std::cin>>c; if (a<c) { float v= a; a= c; c= v; } if (b<c) { b= c; } std::cout<<a<<'e'<<b<<std::endl; return 0; }
  25. @arfneto Defina aleatório, por favor? Observe com materialidade, sem fetiches: notará que é um exercício das matrizes. E que suas palavras não fazem sentido. E da? Explique-me, o que significa isso? "No fundo"? O que isso diz? Explique-se por favor!

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!