Ir ao conteúdo
  • Cadastre-se

Ansi C

Membro Pleno
  • Posts

    3.257
  • Cadastrado em

  • Última visita

Tudo que Ansi C postou

  1. @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; }
  2. 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; }
  3. @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; }
  4. 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); } ***
  5. @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?
  6. 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.
  7. 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. ***
  8. @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; }
  9. @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!
  10. @itstalisson Boa Terde! Nessa sua tentativa, a matriz perdeu sentido, acredito em guardar os índices da matriz e não copiar seus valores. Por exemplo C'11 - gcc'11.4 #include <stdio.h> /* Include the header file for input and output */ int main (void) { size_t a[2]= {0}/* sendo o suposto maior elemento dum unitário */; int matriz [] [4]= { {1,2,3,4} , {5,-6,7,8} , {9,0,-1,2} , {6,5,7,8}}; for (size_t ai= 0 ; ai<sizeof matriz/ sizeof(matriz[0]) ; ++ai) { for (size_t aj= 0 ; aj<sizeof matriz[0]/ sizeof(matriz[0][0]) ; ++aj) { if (matriz[ai][aj]>matriz[a[0]][a[1]]) a[0]= ai , a[1]= aj; }} size_t aij= 0; for (size_t aj= 0 ; aj<sizeof matriz[0]/ sizeof(matriz[0][0]) ; ++aj) { if (matriz[a[0]][aj]<matriz[a[0]][aij]) aij= aj; } putchar ('\n'); printf ("%s%d%c","O maior elemento da matriz é: ",matriz[a[0]][a[1]],'\n'); printf ("%s%d%c","O menor elemento na linha do maior elemento é: " , matriz[a[0]][aij], '\n'); /* ... */ return 0; } AQUI são os índices que auxiliam a produção. Para mim, isso confere com enunciado — se conhece algum refinamento, então aplique-o.
  11. Caso não fique satisfeito com o uso da função e biblioteca strings, tudo bem. Compare após casting: já que nos sistemas atuais, 4 bytes são a estrutura de um “int”! Mas, suponho que esse não seja o exercício da questão. O exercício é de strings.
  12. @Eduardo_Braz Bom dia! Resolveu? Spostamente, é um exercício de expressões lógicas–em laço sobre strings; mas subverteste a operações aritméticas sobre inteiro (“int”). O Problema João tem um irmão mais novo, José, que começou a ir à escola e já está tendo problemas com números. Para ajudá-lo a pegar o jeito com a escala numérica, sua professora escreve dois números de três dígitos e pede a José para comparar esses números. Mas em vez de interpretá-los com o dígito mais significativo à esquerda, ele deve interpretá-lo com o dígito mais significativo à direita. Ele tem que dizer à professora qual o maior dos dois números. Escreva um programa que irá verificar as respostas de José. Uma análise No sistema os números são strings. O fato tem 2 termos e cada termo 3 elementos, que sugere uma comparação de conjuntos. Sem pensar muito: Solicitar um decimal, depois capturarr strings com duas iterações de índice decrescente, em seguida, chamar a função strcmp e elas nos argumentos que definirão a valorosa e imprimir. O decimal é o quantia de testes; cada teste é duas capturas, uma compração e uma impressão, ou seja, é um laço. char numeros[] [4]= {{0} , {0}};/* Os números da professora */ Capturar: um exemplo de laço size_t i= 3UL; while (i) { int r= getchar (); if (EOF==r) break; if (isgraph (r)) numeros[0][--i]= (char) r; } Talvez isso inspira o suficiente para uma solução. ***
  13. Isso mesmo, igualmente, notei essa pouca precisão dos alertas. Ficam no entorno do problema. Exige adaptação, exige análise do alerta e dos elementos entorno do alerta: por exemplo, tem-se a expressão lógica: Os operadores: ( ) > Os operandos: Nota MaiorNota Os comandos: MaiorNota <- nota Os operadores dos comandos: <- Os operandos dos comandos: nota MaiorNota [ ! ] Observe que o nome de um dos operandos é **`nota`, porém em ***VAR o N é maiúsculo. ***VAR **Comandos de Se ... Então — Atenção!
  14. @Samuel Fortes Brasil Boa Terde! Aparentemente, esqueceu a declaração da variável `MaiorNota`, pois exatamente esse o problema. Corrija: declare sua variável faltosa. Correção: Var turma:Inteiro N1,N2,N3,N4,N5:Inteiro Nota,MaiorNota:Real Produz: Início da execução ----------------------------------- Quantos alunos a turma possui: 1 ----------------------------------- Qual é o nome do(a)Aluno(a): 0 Nota: 9.0000000000 ----------------------------------- Fim da execução. Captura:
  15. @rafaznj Boar Terde! Essa dificuldade está em definir o valor que desencadeia o fluxo de comparações e produz o maior e o menor valor\número. Essa talvez seja a questão. — Como definir inicialmente o referêncial de maior e o menor? Alguns suponha não haver limites, então, o primeiro e o único valor de uma lista é simultaneamente o maior e o menor dessa lista de um valor. Esse é caso que inspira a solução acima (#3) e por exemplo: C++ #include <iostream> #include <locale.h> using namespace std; int main () { int lista= 0, n, cont, menor, maior; cout << "Digite o tamanho da lista: "; cin >> lista; for (int i= 1; i<=lista ; i ++) { int n; cout << "Digite o numero " << i << ": "; cin >> n; switch (i) { case 1: maior= menor= n; break; default: if (n<menor) menor= n; if (n>maior) maior= n; break; }} if (lista) cout << "menor: " << menor << endl , cout << "maior: " << maior << endl; return 0; }
  16. Por exemplo: C'11 - gcc'11.4 #include <stdio.h> int main (void){ int i ,j ,m[4][4]= {0} ,menor[2]= {0} ,maior[2]= {0}; printf ("%s","Informe até 16 valores como inteiro: "); for (i= 0 ; i<4 ; i++) { for(j= 0 ; j<4 ; j++) { int c= scanf ("%i",&m[i][j]); if (c==EOF || c!=0x1) i= 4 , j= 4; else { if (m[i][j]<m[menor[0]][menor[1]]) menor[0]= i , menor[1]= j; if (m[i][j]>m[maior[0]][maior[1]]) maior[0]= i , maior[1]= j; }}} printf ("%s%d%c%c","O menor valor é: {",m[menor[0]][menor[1]],'}','\n'); printf ("%s%d%c%c","O maior valor é: {",m[maior[0]][maior[1]],'}','\n'); return 0; } Se há algum refinamento de código, então, aplique-o, porque para mim esse código confere com enuciados.
  17. Porém, fez um que insinua produzir e talvez ler uma matriz enquanto determina o maior e o menor valor entre as leituras. Assim, faz com que o serviço da matriz bi fique abaixo do enunciado, quase inútil. Interprete, ipo — Entrada, processamento e Saída. Verá que o processo excluiu a matriz. Corrija: Invés do valor, memorize o índice de maior... ***
  18. @ningumx Bom dia! Notei que maioria das falhas são de especificadores, tipos de dados e atribuir entre tipos diferentes. C'11 - gcc'11.4 #include <stdio.h> int main() { float v[10]; int i; for (i= 0 ; i<10 ; i++) { printf ("%c%s%d%s",'\r',"Digite o ",i+ 1,"° valor: "); int c= scanf ("%f",&v[i]); if (c== EOF) { perror ("Falha na leitura"); return 1; } if (c!=1) --i; while ('\n'!=(c= getchar ()) && EOF!=c); } int maior= 0; for (i= 0 ; i<10 ; i++) { if (v[i]>v[maior]) maior= i; } float soma= 0; for (i= 0 ; i<10 ; i++) { soma= soma+ v[i]; } float media= soma/ 10; printf ("O maior valor eh: %.2f.\n",v[maior]); printf ("A media dos valores eh: %.2f.\n",media); printf ("Valores maiores que a media: \n"); for (i= 0 ; i<10 ; i++) { if (v[i]>media) printf ("%.2f\n",v[i]); } return 0; } Sugestão: dê-se a oportunidade de aprender mais com o compilador, ative todos os alertas (todos, inclusive os pedantes). Dica: utilize gcc'11 e chame-o com estas opções
  19. Boa Noite! Notei que suas mensagens são iguais "Todos Elementos Com Indice Maior Que O Maior Numero" Sigam a sugestão Por exemplo C'11 gcc'11.4 #include <stdio.h> #define TAM 10 int main (void){ int valor[TAM] , i/* sendo contadora de laços */, maior ,posMaior; for (i= 0; i<TAM; ++i) { printf("Informe o valor %i ",i+ 1); int c= scanf("%i",&valor[i]); if (c==EOF) return 1; } maior= valor[0]; posMaior= 0; for (i= 0 ; i<TAM ; i++) if (valor[i]>maior) maior= valor[posMaior= i]; putchar ('\n'); printf ("%s%d%s%d%c","Valor máximo = ",maior,", com índice = ",posMaior,'\n'); if (posMaior>0) { printf ("%s%d%s","Elementos com índices menor que ",posMaior," são: "); for (i= 0 ; i<posMaior ; ++i) { printf ("%d",valor[i]); printf ("%s",posMaior==i+ 1? "." : ", "); } putchar ('\n'); } if (posMaior<TAM- 1) { printf ("%s%d%s","Elementos com índices maior que ",posMaior," são: "); for (i= posMaior+ 1; i<10 ; ++i) { printf ("%d",valor[i]); printf ("%s",10==i+ 1? "." : ", "); } } putchar ('\n'); return 0; } ***
  20. @Samuel Fortes Brasil Boa Tarde! Aplique a seguintes correções Apague os parenteses que isolam as sentenças. Identifique as declarações do bloco com recuou. Deste jeito: Enquanto valorInicial < valorFinal faca Escreval(valorInicial) valorInicial <- valorInicial + contPersonalizada FimEnquanto ... Enquanto valorFinal >= valorInicial faca Escreval(valorFinal) valorFinal <- valorFinal - contPersonalizada FimEnquanto Produz Início da execução ----------------------------- CONTADOR INTELIGENTE ----------------------------- Qual o valor inicial da contagem? 10 Até quando o contador deverá contar? 15 ----------------------------- Pretende fazer uma contagem(normal ou regressiva) de quanto em quantos números? Por exemplo: 1 + 2 ao invés de 1 + 1. Resposta.: 1 10 11 12 13 14 Fim da execução. visualg 3.0.7.0
  21. @Dafne Guimarães Olá! O Problema Escreva uma função (bem como um programa que exercite tal função) que receba 3 números informados pelo usuário no programa principal. A função deverá retornar o maior e o menor número. Posteriormente, o programa principal deverá imprimir essas informações. Essa função não possui o comando printf. Chamam de passagem por referência, nisso maior e menor são ponteiros para maior e menor no escopo da função main. Por exemplo C'11 -gcc'11.4 #include <stdio.h> int proceed (float array[3], float *max, float *min); int main (void){ float array[3]; for (int count= 3 ; count ; --count) { printf ("%c%s%d%s",'\r',"entre com ",count," números: "); int c= scanf ("%f",&array[count- 1U]); if (c==EOF) { perror ("Falha na leitura"); return 1; } if (c==1) continue; getchar (); ++count; } float maior ,menor; int c= proceed (array,&maior,&menor); if (!c) printf ("%c%s%f%c%f%c",'\r',"O maior e menor número é: ",maior,' ',menor,'\n'); return 0; } int proceed (float A[3], float *a1, float *a2){ if (NULL==A || NULL==a1 || NULL==a2) return 1; *a1= *a2= *A; for (float const *LIMIT= A+ 3U ; A<LIMIT ; ++A) if (*A>*a1) *a1= *A; else if (*A<*a2) *a2= *A; return 0; } O processo (função `proceed`) tem 3 argumentos, sendo ela do tipo (float *, float *, float *) Às vezes, as ponteiros são ditas referências!
  22. Olá @Ray12 O Problema Faça um programa que receba do usuário um vetor com 10 posições, em seguida deverá ser impresso o maior e o menor elemento do vetor. O dado é um vetor (com 10 posições) *Nada disso! É "Entre com 10 números ..."; e não até 10 números. O programa não cede enquanto não obter/receber/ler o vetor, e somente o vetor. printf ("%s","Entre com 10 números decimais (separe-os com a Enter ou a Espaço): "); Por exemplo. #include <stdio.h> int main (void){ int C[10], i= 0; printf ("%s","Entre com 10 números (separe-os com a Enter ou a Espaço): "); for ( ; i<10; i++) { int c= getchar (); if (EOF==c) { perror ("Falha na leitura"); return 1; } if ('\n'==c) printf ("%2d%c",i+ 1,'>'); else ungetc (c,stdin); c= scanf("%d",&C[i]); if (1==c) continue; while ('\n'!=(c= getchar ()) && EOF!=c); ungetc ('\n',stdin); --i; } /* ... */ return 0; } Suponha que o dado é vetor, somente ele satisfaz.
  23. Não! — Expressamos a checagem e adaptamos um laço de repetição. Assuma que o primeiro elemento é o menor e continue no laço. Por exemplo C'11 - gcc'11.4 #include <stdio.h> int main (void){ float numeros[]= {1,2,3,10,-1200,0.12}; float menor= numeros[0]; for (size_t i= 1 ; i<sizeof numeros/ sizeof(*numeros) ; ++i) if (numeros[i]<menor) menor= numeros[i]; printf ("%s%.1f%c","O menor número é: ",menor,'\n'); return 0; }
  24. Olá! O Problema Tem-se um conjunto de dados contendo a altura e o sexo (masculino, feminino) de N pessoas. Faça um algoritmo que calcule e escreva: a) A maior altura entre os homens; b) A média de altura das mulheres. Uma análise Supostamente, nada se conhece das informações, além de dado e formato de dado. Daí ... É pouco ou quase nada racional solicitar a quantidade de homens. Imagine que os dados são uma corda composta de altura e sexo. Sabidamente, as cordas terminam em 0 ('\0'). ***Note os verbos: calcular e escrever Assuma que não é implícito carregar, ler ou solicitar, porque aqueles dados já existem no sistema. Suponha que numa corda #include <stdio.h> int main (void){ char dados[]= {"160 feminino 175 masculino 150 masculino 165 feminino"}; /* ... */ return 0; }
  25. Olá O Problema 1 vetor com 04 elementos; O programa necessita encontrar o maior e o menor elemento do vetor; Aplicar a função recursiva e imprimir os números entre o maior e menor número encontrado (em ordem decrescente). ***A suposta tentativa de solução é distante do problema. Comecei pelo vetor; ele supostamente existe — não há indicação de carregar, solicitar ou ler os seus 4 elementos. #include <stdio.h> int main (void){ int vetor [4]= {1,3,2,4}; ... return 0; } Daí, assuma-se o primeiro elemento, sendo maior e menor, e continua num laço. #include <stdio.h> int main (void){ int vetor [4]= {1,3,2,4} ,menor ,maior; maior= menor= vetor[0]; for (int i= 1 ; i<4 ; ++i) if (vetor[i]>maior) maior= vetor[i]; else if (vetor[i]<menor) menor= vetor[i]; /* ... */ return 0; } @Luan Nicoluzzi ***Confundiu histórias quando imprime ou solicita cada dado no laço.

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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!