Ir ao conteúdo
  • Cadastre-se

Ansi C

Membro Pleno
  • Posts

    3.300
  • Cadastrado em

  • Última visita

Tudo que Ansi C postou

  1. Boa noite! Refatorarei essa solução, é somente isso mesmo, embelezei o máximo que pude! Veja que lindinho: erro_em_exercicio_de_algoritmo_de_uma_entrevista.c /* erro em exercício de algoritmo de uma entrevista. */ #include <stdio.h> #include <limits.h> int main () { printf ("%s%d%s","Digite a quantidade de pessoas [max.",INT_MAX,"]: "); int n= -1; /* valor negativo sendo uma não quantidade */ scanf ("%d",&n); if (n<=0) return 1; int outros= 0; int femnao= 0 , mascnao= 0; int femsim= 0 , mascsim= 0; char sexo , resp; for (int i= 0 ; i<n ; i++) { int r= scanf (" %c %c",&sexo,&resp); if (r==EOF) break; if (sexo=='f') { if (resp=='1') femsim++; if (resp=='2') femnao++; } else if (sexo=='m') { if (resp=='1') mascsim++; if (resp=='2') mascnao++; } else outros++; } putchar ('\n'); int resps= mascsim+ femsim; int respn= mascnao+ femnao; int fem = femsim + femnao; int masc = mascsim+ mascnao; printf ("O número de pessoas que responderam sim e: %d.\n" "O número de pessoas que responderam não e: %d.\n" "A percentagem de pessoas do sexo feminino que responderam sim e: %f.\n" "A percentagem de pessoas do sexo masculino que responderam não e: %f.\n" , resps , respn , (femsim*100.0)/ (fem>0?fem:1) , (mascnao*100.0)/ (masc>0?masc:1)); putchar ('\n'); } c'11 - gcc'11.4 Uma belezinha assim, inicialmente, já me satisfaz!
  2. @arfneto Pedi, por favor, que cite a fonte de: Só isso: A Fonte? São essas as minhas dúvidas: Uma fonte daquela afirmação; Um programa conforme o enunciado com mesma pergunta e resposta; E que compila. Se puder responder acertadamente com o texto do enunciado, responda, senão tudo bem! *** Desde agora, obrigado Antecipadamente!
  3. @devair1010 Boa noite! Seu programa tem duas falhas: #1 ac:6:5: erro: variável não utilizada ‘x’ [-Werror=unused-variable] c'11 - gcc'11.4 #2 Pergunta, porém, não escreva a resposta! Acho que revisei essas duas falhas acima: #include <stdio.h> #include <string.h> int main () { int contador = 0; int i = 0; char frase[100] = {""}; puts("Digite uma frase :"); /// putzgrila fgets(frase , sizeof(frase) , stdin); frase[strlen(frase) - 1 ] = 0; while (frase[i] != 0 ) { contador++; i++; } printf ("%s%d%c","|---> ",contador,'\n'); putchar ('\n'); } Ainda há outra, ele responde (,) e (!) como letras.
  4. Quem disse que não é um inteiro? Cite a fonte, por favor! @arfneto Boa tarde! Não compilou, você falhou nos especificadores de formato ou argumento. c'11 - gcc11.4 a.c:31:28: erro: formato ‘%x’ espera argumento do tipo ‘unsigned int *’, mas argumento 3 tem tipo ‘int *’ [-Werror=format=] 31 | res = sscanf(valor, "%8x", (int*)&v_float); | ~~^ ~~~~~~~~~~~~~~ | | | | | int * | unsigned int * | %8x a.c:36:43: erro: formato ‘%x’ espera argumento do tipo ‘unsigned int *’, mas argumento 3 tem tipo ‘int *’ [-Werror=format=] 36 | res = sscanf(ansi, "%8x", (int*)str); | ~~^ ~~~~~~~~~ | | | | | int * | unsigned int * | %8x Seu programinha, supostamente, também não responde e não pergunta conforme o enunciado: além de não compilar. Estou insatisfeito
  5. ESCAPE Sabe, sim, é porque esse caractere está além de somente barra invertida, ele tem a função especial de anunciar a posição duma sequência 'escape'. Por exemplo, a nova linha (\n) é uma das que escapam. Aqui mais algumas: Experimente: Erro_ao_compilar_o_caractere_barra_invertida_no_printf.c /* Erro ao compilar o caractere \ no printf */ #include <stdio.h> int main () { printf ("Hello, World!\n"); /* ^s. escape para quebra de linha */ printf ("Hello, World!\ "); /* ^s. escape propositalmente errada */ } c'11 - gcc'11.4
  6. Bom dia! A Inversão Iteração sobre vetor Notei que, apesar de reconhecer que essas strings são terminadas com null ('\0') zero, usou múltiplas notações: de vetores, ponteiro para char e/ou arranjo, intercambialmente. Não sei se para exemplificar que é possível, ou se é pura confusão. Por último, fez pouco caso dos recursos utilizáveis na função do exercício (pressuponho) sua 'inversao'. Testei o programa dela, e editei sua expessão. Veja: Com- dar-printf- em-uma-frase.c /* Como dar "printf" em uma frase */ #include <stdio.h> #include <string.h> int inversao (char *s); int main (void) { char texto[100]; printf ("Escreva uma frase [max. 99 caracteres]: "); scanf(" %99[^\n]",texto); int len= inversao (texto); if (len) { printf ("%s%s%i%s",texto," => ",len," caractere"); if (len>1) putchar ('s'); } putchar ('\n'); } int inversao (char *s) { if (NULL==s) return 0; char *s0= s; while (*++s)/* nul block */; int len= s - s0; while (s0<s) { char c= *--s; *s= *s0; *s0= c; ++s0; } return len; } c'11 - gcc'11.4 c'17 - Pelles C'12.0 Algo assim, inicialmente, já me satisfaz. Se o momento é dos ponteiros, então NÃO PENSE D+, fique com os ponteiros.
  7. Boa noite! Acho que entendo você! TABUADA DA ADIÇÃO c será uma soma de todos os números naturais de a sobre b até 10 tal que a = 0 e b = 0. soma-de-dois-numeros-em-laco-for.c /* Soma de Dois Números em Laço For */ #include <stdio.h> int main () { /* A Tabuada da Adição */ for (int a= 0 ; a<10 ; ++a) { for (int b= 0 ; b<10 ; ++b) { int c= a + b; printf ("%i%s%i%s%i%c",a," + ",b," = ",c,'\n'); } putchar ('\n'); } putchar ('\n'); } c'11 - gcc'11.4
  8. Boa noite. Essa pergunta é/foi mais um exemplo, como muitos outros que li até agora, do porquê devo ativar todas as opções de alerta do compilador e aprender com isso. Veja (máximize a tela para visão completa) : Olha aí, ele diz o mesmo que os colaboradores do fórum: bom d+ Agora seu programinha compila. #include <stdio.h> #define ALUNO 2 struct identidade { char nome[32] , sobrenome[32]; }; struct aluno { float nota; struct identidade id; }; int main () { struct aluno classe[ALUNO]; for (int aluno= 0 ; aluno<ALUNO; ++aluno) { printf ("Digite o nome do Aluno\n"); scanf ("%s%s",classe[aluno].id.nome,classe[aluno].id.sobrenome); printf ("Digite a nota do Aluno\n"); scanf ("%f", &classe[aluno].nota); } for (int aluno= 0; aluno<ALUNO; ++aluno) { if (classe[aluno].nota >= 5.0f) printf ("O Aluno %s %s tem foi aprovado.",classe[aluno].id.nome, classe[aluno].id.sobrenome); } putchar ('\n'); }
  9. @Geraldo Cavalcante Boa Noite! Aquilo que descreveu como problema é a função scanf fazendo seu trabalho, espaços em branco também são caracteres, é necessário sinalizar para não quando não; faz assim, acrescenta um espaço no início da corda de formato. " %c" Seu programinha compilou, deste jeitinho aqui: #include <stdio.h> #define ALUNO 5 #define questão 10 int main () { char matrizNotas[ALUNO][questão], vetorGabarito[questão]; int resultado[ALUNO], i, j; for (i = 0; i < questão; i++) { printf("\n Informe a resposta correta da %dº questão: ",i); scanf(" %c", &vetorGabarito[i]); } for (i = 0; i < ALUNO; i++) for (j = 0; j < questão; j++) { printf(" Informe a resposta do %dº aluno para a questão %d: ",i,j); scanf(" %c", &matrizNotas[i][j]); } for (i = 0; i < ALUNO; i++) for (j = 0; j < questão; j++) { if (matrizNotas[i][j]==vetorGabarito[j]) resultado[i]++; } for (int aluno= 0 ; aluno<ALUNO ; ++aluno) printf ("%d ",resultado[aluno]); } ***
  10. Boa tarde. Concordaria com as duas interpretações, mas o termo retorna é normal em função. FUNÇÕES Com Matrizes e talvez alocação dinâmica Geralmente, lê-se escreva ou mostre até imprima e informe para saídas, porém aqui o enunciado usa retorne (retornar), mais o quê? A chamada da função. Deste jeitinho fofo aqui: Que lindo, não é? Maravilhoso! Fica fácil agora? O dado aluno é uma linha com duas notas, ou seja, duas notas é um aluno i de n alunos. Sim gafanhoto, médias parciais é uma dado composto, uma matriz de n médias calculadas no laço n. — Não é para você? Tudo bem, porque para mim é! Agora, expresse-se conforme o enunciado (a questão).
  11. Boa tarde Parece uma pergunta nível bebê; São primeiros passos, fica entre o básico dos operadores aritméticos, de comparação, lógicos e comandos IF-ELSE. Ou seja, DECISÕES Somente isso já ajudou. Agora, sabes a revisão para expressar uma tentativa honesta de solução, talvez resolução. A propósito, no seu primeiro programa de exercício assuma entradas ideias, ou seja, sem falhas. Não pense de mais, ponha de lado o tratamento de erros, mau uso, otimização, etc. Foco no enunciado do problema, fatio-o em 3 partes: entrada, processamento e saída; continue até não poder mais e daí... EXPRESSA-SE Por exemplo, isto abaixo é o enunciado indentado. Escreva um programa que, { Leia (duas notas obtidas por um aluno) Leia (o número de aulas ministradas) Leia (o número de aulas assistidas) Calcule (a média final deste aluno) Decida Se (ele foi aprovado ou reprovado) Considere que para um aluno ser aprovado ele deve obter média final igual ou maior a 6 e ter no mínimo 75% de frequência. Mostre () } Se alguém puder me ajudar, agradeço Muito comum nas linguagens, esse destaque produz um texto semelhante ao pseudocódigo quando aplicado nos enunciados e ajuda — um pouquinho — o entendimento. Sinceramente, não parece uma expressão para computador, um programa? Na C, associo LEIA e MOSTRE a respectivamente SCANF e PRINTF. Calcule e Decida Se são expressas como comandos no bloco da main, isso é uma exigência do nível do exercício, que ainda não expressa função, só usa as existentes no padrão (biblioteca padrão). Fim da revisão!
  12. Bom dia! MATRIZES O problema. Pede para comparar valores nas posições dos vetores (ou vetor); gabarito, a primeira linha, aluno, a segunda e as colunas como questionário. Os ponteiros do exercício como escalares/índice de colunas. Parece fácil? Tavez seja mesmo. Por exemplo, Expresse a leitura do valor como quantidade de quesitos no exame; ... a alocação de memória e atribua os ponteiros gabarito e aluno; ... a leitura com laço da linha para gabarito; ... laço da linha para aluno; ... a reposição dos ponteiros para os endereços iniciais; ... a alocação de acertos; ... o laço que compara os valores em gabariro e aluno, ... que teste os valores para iguais, se verdadeiro, adicione 1+ acerto; ... se acerto tem valor não nulo, ... e é maior que 1, escrava "acertos", ... senão escreva "acerto" Fim da expressão Pense deste modo: assuma que a linha (ou dado) é ideal, ou seja, não haverá linhas sem formato, por exemplo, não haverá letras em campo numérico, e não haverá erros de entrada, internos ou qualquer além do enunciado. NÃO PENSE D+ Em algumas perguntas do fórum, regularmente, sugere e/ou argumentam que 2 arrays em situações semelhantes são desnecessários, porque acessa um durante a extração do outro e assim economiza alguma coisa… BOBAGEM!!! O momento é delas! Por exemplo, com arranjos estáticos, c'11 - gcc'11.4 #include <stdio.h> typedef int questão; int main () { /* isto define a memória */ questão quesito[BUFSIZ]; /* isto solicita n */ size_t n= 0; scanf ("%zu",&n); /* isto define memória de ... */ questão *gabarito= quesito; questão *aluno= quesito + n; /* isto ler ... */ for (questão *ultima= gabarito + n ; gabarito<ultima ; ++gabarito) scanf (" %i",gabarito); for (questão *ultima= aluno + n ; aluno<ultima ; ++aluno) scanf (" %i",aluno); /* isto reposiciona agaba...e determina acerto's */ gabarito= quesito; aluno= quesito + n; questão acert= 0; for (questão *ultima= gabarito + n ; gabarito<ultima ; ++aluno , ++gabarito) if (*aluno==*gabarito) ++acert; /* isto exibe acerto's */ if (acert) { printf ("%d%s",acert," acerto"); if (acert>1) putchar ('s'); } putchar ('\n'); } — Uma expressão assim inicialmente já me satisfaz! A outros nem tanto, então, faça a sua você mesmo!
  13. Boa tarde! A calculadora com C. Falhou ao compilar com pelo menos dois alerta, sendo um crítico e outro relacionado. a.c: Na função ‘main’: a.c:13:9: aviso: formato ‘%i’ espera argumento do tipo ‘int *’, mas argumento 2 tem tipo ‘int’ [-Wformat=] 13 | scanf("%i",operação); | ~^ ~~~~~~~~ | | | | | int | int * a.c:13:1: aviso: ‘operacao’ é usado não inicializado [-Wuninitialized] 13 | scanf("%i",operação); | ^~~~~~~~~~~~~~~~~~~~ Linha 13 exige o endereço! No programa, não expressou um caso para operador inválido, sendo senso comum nesse exercício e outro que também não fez é o “Divisão por zero”, que acrescentei. Agora sua calculadora compila! c'11 - gcc11.4 #include <stdio.h> int main () { int operacao , n1 , n2 , resultado; printf ("Digite um numero: "); scanf ("%i",&n1); printf ("Digite outro numero: "); scanf ("%i",&n2); printf ("Digite [1] para somar\n"); printf ("Digite [2] para multiplicar\n"); printf ("Digite [3] para dividir\n"); printf ("Digite [4] para subtrair\n"); scanf ("%i",&operacao); switch (operacao) { case 1: resultado = n1 + n2; printf("%i",resultado); break; case 2: resultado = n1 * n2; printf ("%i",resultado); break; case 3: if (n2) { resultado = n1 / n2; printf ("%i",resultado); } else { printf ("%s%c","Divisão por zero!",'\n'); } break; case 4: resultado = n1 - n2; printf ("%i",resultado); break; default:/* * Operador Inválido */ printf ("%s%c","Operação inválida",'\n'); break; } }
  14. Boa tarde! A calculadora com C. No teste, noto um último 'probleminha', ela não consegue interagir de fato com o usuário, porque não instrui, não lista suas operações, e essa instrução é de bom senso nesta atividade. Custa um printf E não tem o "Divisão por zero!" e sua expressão lógica.
  15. Bom Dia! Apliquei as sugestões e/ou correções e acho que não esqueci nada. c'11 - gcc'11.4 #include <stdio.h> int main () { float term1= 0 , term2= 0; int r= 0; char operador= 0; do { /* isto solicita e escanea um 1x termo */ printf ("Digite um número: "); scanf ("%f",&term1); printf ("Digite outro número: "); scanf ("%f",&term2); /* ... um operador aritmético */ printf ("Qual operação você deseja fazer:\n[1]+\n[2]-\n[3]x\n[4]/\n?"); scanf (" %c",&operador); /* isto seleciona o 'circuito' dum dos cinco resultados */ switch ((int)operador) { case '1':/* soma */ term1+= term2; break; case '2':/* diferença */ term1-= term2; break; case '3':/* produto */ term1*= term2; break; case '4':/* quociente */ if (term2>0.0f) term1/= term2; else { printf ("%s%c","Divisão por zero.",'\n'); term1= 0; } break; default: /* não é uma operação */ printf ("%s","Operador inválido"); /* isto lava uma linha: um extração de texto */ while ((r= getchar ())!=EOF && r!='\n'); term1= 0; break; } /* escreve o resultado */ printf ("O resultado é %f",term1); printf ("%c%s",'\n',"Continuar [s para sim]? "); r= scanf (" %c",&operador); } while (EOF!=r && 's'==operador); putchar ('\n'); } obrigado!
  16. @Endmmans Boa Dia Testei seu programinha, ele tem uma falha comum nessa categoria de expressões, essa falha fica na escolha do operador antes de um escaneamento do segundo valor. A falha aqui consiste na extração dum caractere em branco por razão da combinação com o especificador 'c'. Esse caractere extraido é o quebra de linha (nova linha) e/ou entrar (enter). Observe o que ele fez: Qual o primeiro valor? 2022 Qual o segundo valor? 12 Qual a operação desejada? (+ para somar, - para subtrair)O resultado é 0.000000 Sabe-se que a função scanf absorve inicialmente os “em branco” quando há espaço na corda de formato (para mais detalhes, confirme/confira na documentação). Basta um espaço à frente do especificador, assim no início da formato " %c", que resolvemos esse problema, especificmente. c'11 - gcc'11.4 #include <stdio.h> int main () { float valor1 , valor2 , resultado; char sinal; printf ("Qual o primeiro valor? "); scanf ("%f", &valor1); printf ("Qual o segundo valor? "); scanf ("%f", &valor2); printf ("Qual a operação desejada? (+ para somar, - para subtrair)"); scanf (" %c", &sinal); if (sinal == '+') resultado = valor1 + valor2; else if (sinal == '-') resultado = valor1 - valor2; printf ("O resultado é %f", resultado); }
  17. @DanielC4 Bom Dia Para mim, teu programa falhou já no início, isso mesmo, meu mestre! Ao solicitar um termo… alguém entrou com ele e o programa escreveu isto: 0 0 0 ... É coluna densa de valores desconexos. A propósito, o número que alguém entrou era um inteiro. Veja: Digite um termo inicial: 0xff Digite uma razão: Digite um número a ser pesquisado na sequência: 0 ... 145003 ... 0 -13008 7 ... Ele informou, 0xff um inteiro, né? Deu nisso, sequer tem a oportunidade dum segundo. ... O especificador nos argumentos da scanf não concorda com a mensagem na solicitação, que também não está de acordo com enunciado. Parece bobagem, eu sei! @devair1010 tua expressão também falhou no valor para termo.
  18. Boa Noite! Para mim, já falha no começo, isso mesmo no LEIA... porque do jeitinho fofo que está ..., talvez o programa não leia o dado inteiro (15). O programa escreve: Insira os valores do vetor- _ O enunciado diz: 15 posições de números inteiro Alguém Entra Insira os valores do vetor 034 0xff 0 9 8 7 6 5 4 3 2 1 20 22 02 Sim, meu bem! Acima, alguém entrou com seus 15 números no escaneamento, que apesar de enunciar inteiro, extrai em decimal, sendo 1/3 das bases que normalmente se estuda antes dessa categoria de exercício. Não chegará ao ranqueamento, mas se chegar terá resultado duvidoso, né? Daí adicione ao fato `maior_valor` que matou o sentido de usar matriz no exercício que é de matrizes - cultura deste fórum (CdH) Enfim, com uns ajustes até compila: c'11 - gcc'11.4 #include <stdio.h> int main ( ) { int vet [15]= {0}; int i= 0 , maior= 0; /* isto ler inteiro (15) */ printf("Insira valores do vetor (15)\n"); for(i= 0 ; i<15 ; i++) { int r= scanf ("%i", &vet[i]); if (EOF==r) return 1; if (1==r) continue; getchar (); --i; } /* isto ranquea o maior */ for (i= 0 ; i<15 ; i++) if (vet[maior]<vet[i]) maior= i; /* isto faz o produto */ for (i= 0 ; i<15 ; i++) vet[i]*= vet[maior]; /* isto escreve int... */ for (i= 0 ; i<15 ; i++) printf ("%i ",vet[i]); putchar ('\n'); }
  19. Boa Noite Já é um Padrão do Fórum Com certeza, exercícios de nível iniciante sobre vetores (de n-milhares) que insinua na resposta a inutilidade dos vetores num exercício dos vetores. c'11 - gcc'11.4 a.c: Na função ‘main’: a.c:9:10: erro: comparação entre ponteiro e inteiro 9 | soma == soma + n; | ^~ a.c:9:10: erro: instrução sem efeito [-Werror=unused-value] 9 | soma == soma + n; | ~~~~~^~~~~~~~~~~ a.c:13:17: erro: operandos inválidos para binário / (possuem ‘int’ e ‘int *’) 13 | media = (soma / n); | ^ | | | int * a.c:14:22: erro: formato ‘%f’ espera argumento do tipo ‘double’, mas argumento 2 tem tipo ‘int’ [-Werror=format=] 14 | printf("A media é %f.", media); | ~^ ~~~~~ | | | | | int | double | %d cc1: todos os avisos sendo tratados como erros Então moço!? A última falha é atentar contra a vida do vetor no exame de vetor! Em fim, com algumas correções, seu programinha até compila, assim: #include <stdio.h> int main () { int n= 20; int termo[n]; int i= 0; /* isto solicita os termos */ do { printf ("Insira um termo: "); scanf ("%d",&termo[i]); i= i + 1; } while (i < n); /* isto faz um somatório */ int soma= 0; i= 0; do { soma = soma + termo[i]; i= i + 1; } while (i < n); /* isto faz uma média */ float media= (float)soma / n; printf("A media é %f\n",media); return 0; } /* isto retorna ao sistema operacional rsrsrs :D */
  20. @Samuel Fortes Brasil Boa Terde! Ocorre por razão da instrução, seu comportamento e a ordem dos comandos no seu bloco de comando. Esses comandos e sua ordem exata estão escritos logo abaixo: ordem. comandos 0. repita 1. Escreval 2. contador <- contador + 1 3. Ate (contador = 10) Acompanhe o ritual comigo… O que acontece depois do incremento (2), vem a expressão lógica (3), a sua condição é? Até 10, ou seja… 1. escreve 9 2. adiciona 1 3.10 é igual a 10 pare A propósito, se queres a simulação até 10, incluso; expresse desta maneira: Algoritmo "Conte Ate 10 (inclusive)" var contador: Inteiro Inicio contador <- 0 repita contador <- contador + 1 Escreval(contador) Ate (contador = 10) Fimalgoritmo
  21. Hoje tenho uma filosofia diferente. Na C, string é um valor como texto, e não um tipo como int. Ou seja, a string “Hello W...” está para char [] da mesma maneira que 2022 está para int. Sei que parece tolice, mas, “de” e “para”, essas palavras que mudam o significado têm capacidade para cortar o raciocínio. E a pergunta foi: como 'criar' um vetor para receber varias strings? Suponho que para você existiu a opção estática, nela, declare-se o seu comprimento, depois declarem-se variáveis da definição. Deste modo, o processo ficaria um pouquinho mais documental. Assim: #include <stdio.h> typedef char Tinta [128]; int main () { Tinta paleta [132];/* Cores ... */ /* ... */ }
  22. Ansi C

    C Tirar scanf do loop

    @kgin Boa Tarde Tua expressão joga da velha não abriu. E esse exercício do jogo é de nível intermediário nas MATRIZES, sendo que essas são as únicas abstrações necessárias à solução. E MATRIZES!!!
  23. @FLASHLEGENDS Boa Dia! Disso Tem-se, simplesmente isso: int divisivel3 (int i,int j,int matriz[5][5]) { return matriz[i][j] % 3; } Ou ainda... inline int divisivel3 (int i,int j,int matriz[5][5]) { return matriz[i][j] % 3; } ... Ao avaliar a pergunta da função, ela é bem sucedida com retorno de valor 0, sendo, a propósito, apenas por curiosidade o valor na constante EXIT_SUCCESS. Por último, não notou que há uma na declaração e outra na definição a.c: Na função ‘main’: a.c:18:9: erro: declaração implícita da função ‘divisivel’; você quis dizer ‘divisivel3’? [-Wimplicit-function-declaration] 18 | if( divisivel ( i , j , matriz ) == 1 ) | ^~~~~~~~~ | divisivel3 ac:7:14: aviso: parâmetro não utilizado ‘argc’ [-Wunused-parameter] 7 | int main(int argc, char const *argv[]) | ~~~~^~~~ ac:7:32: aviso: parâmetro não utilizado ‘argv’ [-Wunused-parameter] 7 | int main(int argc, char const *argv[]) | ~~~~~~~~~~~~^~~~~~ c'11 - gcc'11.4 Compilável #include <stdio.h> int divisivel3 ( int i, int j , int matriz[5][5] ); int main () { int j , i; //Matriz com valores fixo para não fazer a leitura int matriz[5][5] = {{15,9,23,43,49}, {3,36,55,53,18}, {12,42,51,57,34}, {6,32,28,25,62}, {72,91,81,16,41} }; for(i=0; i<5; i++) for(j=0; j<5; j++) if( divisivel3 (i, j, matriz) ) // Atenção: re avaliar a pergunta printf("O Numero %3d e divisivel por 3\n",matriz [i][j]); return 0; } inline int divisivel3 ( int i, int j , int matriz[5][5] ) { return matriz[i][j] % 3; }
  24. @devair1010 Boa Noite! De fato, não precisa de um vetor para resolver esse problema. Foi um desejo que tive de momento. Minha solução é a tua solução: nela também o extremo inferior cresce a cada palpite ⇒escolha⇐ e o extremo superior diminui até que a diferença entre eles (isuperior - inferior) gera palpites próximos do número escolhido e por último ele. Obrigado!
  25. Boa Noite! ... MATRIZES É matriz na leitura, processo e saída. Sinto que existe um complô entre os editores de apontamento ou apostila das escolas e universidades furrecas, suspeito que combinaram de neutralizar ou inutilizar as matrizes nos exercícios que são das matrizes. Opinião Alguns alunos não querem usar e ousar nas matrizes a trava, suponho que não tenham consciência ou tenham medo de errar, acabam por pensar além da conta. O Problema Sem pensar muito, são 5 dados compostos de 3! É o que me diz, "3 notas de 5 alunos" ou cada aluno no programa é um dado composto de 3 notas, 3 notas é (abstração) um aluno ... Logo, Ai Está! minha opinião é outra! O contratado é: Informe as notas %i Aluno: * * * Por exemplo, nesse rascunho C'11- gcc'11.4 #include <stdio.h> #include <ctype.h> typedef float Aluno; int main () { /* solicitar a turma de 5 alunos */ Aluno turma[5] [3]= {0}; for (size_t a= 0 ; 5>a ; ++a) { int r; printf ("%s%zu%s%c","Informe as notas ",a+ 1,"º Aluno",'\n'); for (size_t n= 0 ; 3>n ; ++n) { r= getchar (); if (EOF==r) { perror ("Falha na solicitação"); a= 5; break; } if ('\n'==r) { ungetc (r,stdin); break; } if ('-'==r || ' '==r) { --n; continue; } ungetc (r,stdin); r= scanf (" %f",&turma[a][n]); if (1!=r) { getchar (); --n; } } while (EOF!=(r= getchar()) && '\n'!=r); putchar ('\n'); } printf ("%c%s%c",'\n',"Turma Notas",'\n'); for (size_t a= 0 ; 5>a ; ++a) { printf ("%zu%s",a+ 1,"º Aluno: "); for (size_t n= 0 ; 3>n ; ++n) { printf ("%.1f ",turma[a][n]); } putchar ('\n'); } /* ... */ } Sendo uma solicitação e não uma leitura, os escaneamentos terminam sempre na nova linha, de modo que cada linha é um aluno (para mim). A proposito, se fosse uma leitura, o programa ficaria preso até pegar turma. RASCUNHE UMA SOLUÇÃO SEM PENSAR MUITO! Porque pensam d+

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!