Ir ao conteúdo

Ansi C

Membro Pleno
  • Posts

    3.284
  • Cadastrado em

  • Última visita

Tudo que Ansi C postou

  1. Achei interessante porque temos classe animal, e outras subclasses? Por exemplo macaco e coelho são subclasses? Se sim então não tão simples como parece pois a gestação, número de filhotes e a maturidade reprodutiva dos animais são diferentes, logo o número de coelhos tem de subir mais que macacos pois obedecer uma função diferente do de macacos isso sim seria um problema animal. adicionado 3 minutos depois Porém ao que parece tudo foi pragmaticamente resumido em um simples Progressão Geometrica. adicionado 6 minutos depois Para população atual é progressão de 2, e para os que morreram? adicionado 9 minutos depois A questão é mais que uma, é três. * resolvida. adicionado 12 minutos depois E agora? quero só ver adicionado 17 minutos depois y@Pedro Novais Como foi resolveu?
  2. Com estrutura de dados, pode ser listas se for capaz de aprender. Tem muito conteúdo na web para quem gosta de estudar Boa Sorte.
  3. Aqui nada tem de ponteiros, o que temos é um comparação de tipos int com char, neste ponto: encontrados[x].titulo[0]!=0 Qual é a sua intenção? E Você já se perguntou para que serve a variável z no algoritmo for(int x=0;x<5;x++){/*Operação de copia dos titulos encontrados */ char *ret=NULL; ret=strstr(livros[x].titulo,pesquisar); if(ret!=0){ encontrados[z]=livros[x]; z++; } Eu já sei a resposta para seu problema, vou esperar você a perceber também. Aparte do algoritmo /*Operação de copia dos titulos encontrados */ está totalmente correta.
  4. Do Ponteiro Ponteiro nulo é um ponteiro que não aponta, ou seja, ponteiro de valor 0, porque um ponteiro somente aponta quando seu valor é diferente de 0. Esse é conceito fechado em ciência da computação, pois não existe outro valor diferente de zero para ponteiro nulo. https://www.geeksforgeeks.org/few-bytes-on-null-pointer-in-c/ Da Função strstr( char * str1, char * str2 ) A função retorna ponteiro nulo se; o conjunto str2 não está contido em str1, acredito que isso você já sabe! Se str2 e subconjunto de str1, ou seja, str2 está contido em str1 então a função retorna um valor inteiro sem sinal diferente de 0 (ou ponteiro) que é o local na memória da primeira ocorrência de str2 em str1. http://www.cplusplus.com/reference/cstring/strstr/ Está sabendo errado, ao atribuir 0 a um ponteiro ele aponta para lugar nenhum, ou melhor, ele não aponta. Até aqui consegui entender que ... for(int x=0;x<5;x++){ char *ret=0; ret=strstr(livros[x].titulo,pesquisar); if(ret!=0){ encontrados[z]=livros[x]; z++; } Variável do tipo char point: ret; inicializada com null point e está corretamente inicializada. Se quiser existe outras forma de fazer isso: for(int x=0;x<5;x++){ char * ret = NULL; ret=strstr(livros[x].titulo,pesquisar); if(ret!=0){ encontrados[z]=livros[x]; z++; } o resultado é o mesmo que antes. Caso queira expandir o conceito ainda poderia fazer assim: for(int x=0;x<5;x++){ void * ret = ((void *)NULL); ret=strstr(livros[x].titulo,pesquisar); if(ret != ((void *)NULL)){ encontrados[z]=livros[x]; z++; } ret é um ponteiro genérico que foi inicializado apontando para lugar nenhum, ou é ponteiro que não aponta.
  5. O quê? está errado exatamente. Qual é o resultado da saída e da entrada nos testes realizados? Estou sem computador para testar!
  6. Não sei!
  7. Este é o erro mais obvio conforme a tradução para o português, se existe outro erro eu não sei. Conforme a tradução esse é um dos erros. O outro erro se exite e onde existe eu não estou vendo.
  8. Você por acaso considera certo? adicionado 3 minutos depois Esta é a tradução do Google Tradutor para Output: Saída Para cada caso de teste, imprima uma linha contendo um único inteiro que represente o ônus orçamento de muitos, que será sempre um número inteiro. Não imprima linhas em branco. Output For each test case output one line containing a single integer that holds the summed burden for Ger- many's budget, which will always be a whole number. Do not output any blank lines.
  9. Eu somente verifiquei as mensagens. Todas essas mensagens de texto vão aparecer no aquivo de saída, isso não deve acontecer, a saída deve ser apenas os resultados, sem texto extra. adicionado 3 minutos depois conforme Sample Output
  10. @Schubert M. Cara! Não existe pedido no exercício dessas mensagens na Entrada/Saída: printf("Casos de teste >> "); printf("Numero de fazendeiros >> "); printf("Premio para o caso %d: %.0f\n", I, tot); No Final do arquivo p10300.pdf tem exemplos de entrada (Sample Input) e de saída (Sample Output), você deve de fazer da maneira que indicam os exemplos.
  11. Ok! Não faz diferença se pré ou pós. Entretanto, pós-incremento exige em qualquer situação mais um local de memória para Recall, é um processo extra sem utilidade. Daí o motivo de pré-incremento. Normal cada código diz muito da personalidade de seu programador; você tem o seu, eu tenho o meu, da mesma forma que adaptei o teu para meu, adaptou o meu para teu! Com relação aos ponteiros, eu penso que vem antes de estrutura de dados, pelo menos, a maioria dos autores indexa; vetores, matrizes e ponteiros no mesmo capítulo do livro. valeu
  12. @Jessé P. de Melo Sim, você pode atribuir assim como faz com as variáveis primitivas. Editei seu código, teste para ver se agora estar fazendo próximo de ideal. #include <stdio.h> #define SIZE_DB 5u int main( void ) { struct lista_tel { char nome [98]; char tel [16]; char endereco [30]; }; struct lista_tel lista [SIZE_DB]; char scanner [] = { " %99[^\n]" }; char * printer [] = { "%s, %s\n" , "%s" }; char * message [] = { "Digite um nome: " , "Digite um numero: " , "Digite um endereco: " , "Nome, Telefone" }; for( unsigned x = 0; x < SIZE_DB; ++x ){ printf( printer [1], message [0] ); scanf( scanner, lista [x].nome ); printf( printer [1], message [1] ); scanf( scanner, lista [x].tel ); printf( printer [1], message [2] ); scanf( scanner, lista [x].endereco ); putchar( '\n' ); } unsigned teste; struct lista_tel troca; do{ teste = 0; for( unsigned x = 1; x < SIZE_DB; ++x ){ if( lista [x].nome [0] < lista[x-1].nome [0] ){ troca = lista [x]; lista [x] = lista [x-1]; lista [x-1] = troca; teste = 1; } } } while( teste != 0 ); unsigned index = 0; puts( message [3] ); do{ printf( printer [0], lista [index].nome, lista [index].tel ); } while( ++index != SIZE_DB ); return 0; } Qualquer dúvida é só perguntar
  13. Olá ... @Estudante0123 ! Matrizes possuem limites, caso a quantidade de dados seja maior que esse limite então use memória dinâmica. lista.c #include <stdio.h> int main( void ) { int lista_de_numeros [100u];// limite de ~10e8 elementos {// BLOCO DE TAREFAS #1 // Captura conjunto de valores inteiros, interrompe quando o valor // EOF foi encontrado ou digitado, // para interromper entre com a combinação Ctrl+Z no prompt. char scanner [] = {" %d "", "}; char printer [] = {"%u ""%s "}; unsigned index = 0; int input = scanf( scanner, lista_de_numeros + index ); while( EOF != input ){ ++index; input = scanf( scanner, lista_de_numeros + index ); } printf( printer, index, "numero(s) foram carregados.\n" ); }// #1 return 0; } Você pode copiar e colar o conteúdo direto na linha de comando do prompt ou pode usar o comando inputs. Para usa o comando inputs faça assim no prompt: C:\desenvolviment\programac\lista.exe < minha_lista.txt Caso o arquivo minha_lista.txt esteja no mesmo diretório que lista.exe Se o programa de erro, é provável que o limite de vetores é ainda menor. ou ainda é necessário que o arquivo minha_lista.txt tenha seu layout regular desta maneira; 1, 2, 3, 4, 5, note que existe uma vírgula marcando o final de cada valor. Qualquer dúvida fica a vontade para comentar. ~~/~~
  14. é caso especial, então testemos fora o loop e deixa dentro do loop o caso geral da maneira correta como já feito. if ((item[k].phrase[0] == 'd') && (item[k].phrase[1] == 'e') && (item[k].phrase[2] == ' ') { vezes++; } for (i = 0; i < strlen(item[k].phrase); i++) { if ((item[k].phrase[i - 1] == ' ') && (item[k].phrase[i] == 'd') && (item[k].phrase[i + 1] == 'e') && (item[k].phrase[i + 2] == ' ')) { vezes++; } } deixa essa parte para auto do tópico ter alguma coisa para fazer kkk, é muito folga dele se tu responder tudo kkkk.
  15. Olá ... ! Por exemplo: Ou seja, o que buscamos não é somente o DE, mais sim, DE com espaços. " DE " << esse é o elemento da busca assim como idealizado. " Estou de volta pro meu aconchego ... " << esse é o conjunto onde faremos a busca pelo elemento. 1 resultado!
  16. @Jessé P. de Melo observe como raciocinei acima no poster #21, quem sabe lhe ajuda da próxima vez.
  17. O que me ocorrerá é que: 5 dígitos são consecutivos se apresentarem certo grau de sucessão positivo ou negativo, porém absolutos iguais. Exemplo: 79811: está parcialmente correto porque se ordenado temos: 7891'1' esse último 1 é que está errado. Pois o maior valor de sucessão é 9 na sequência de grau +1 ao adicionar +1 na sucessão o resultado deveria ser 0. ficaria assim: 78901 CORRETA 67881: estrá parcialmente correto porque se ordenado temos: '1'678'8' esse 1 é que está errado. Pois o maior valor de sucessão é 9 e o menor é 0. na sequência de grau +1 ao adicionar +1 na sucessão o resultado deveria ser 5, porém se no lugar de '8' temos 9 ficaria assim: 67890 CORRETA ou 56789 CORRETA. 12456: está perfeita! Ou seja, no meu entender você quase consegue;
  18. Ai que está @Jessé P. de Melo eu acredito que você poça resolver porque na minha opinião a solução ficou parcialmente certa, já que o enunciado apela para subjetividade.
  19. Por questão de pragmatismo, eu considero a interpretação de @isrnick 'a ideal', tanto quanto a solução introduzida por @Jessé P. de Melo
  20. @Jessé P. de Melo Você está assumindo que os números são progressivos, crescentes e de razão igual a 1. No mínimo foi o que tirei do código acima. Porém isso não foi dito aqui: Só para entender a complexidade: [2 5 8 11 14], [2 6 18 24], [segunda terça quarta quinta sexta]. O último exemplo são palavras que representa números consecutivos, o índice da lista representa uma sucessão entre os números que se posicionam na lista de forma progressiva conforme o índice, inclusive essa é a solução que propõe@isrnick . Na minha opinião estão os dois apenas na metade do caminho, ou para facilitar o enunciado mal informado, pois números podem ser consecutivos tanto crescente quando decrescente e a ordem de sucessão não precisa ser necessariamente de grau 1. Salvo os casos em isso seja especificado.
  21. @Leonardo0308 Correto! E o banco de dados poderia ser também um álbum dos elemento mais suas informações periódicas, ou imagem mais texto informativo, enfim exites tantas forma de exibir / mostrar.
  22. Olá ... ! @Leonardo0308 exatamente! e ainda fiquei pensativo com relação a: Mostra de que forma?
  23. Olá ... @MatheusINF ! Quando penso no problema, a primeira ideia que vem é implementar um algoritmo de busca genérico, porque futuramente você poderá reutilizar tanto essa implementação quanto o seu conceito.
  24. Ola ... ! Como mencionado, o vetor permanece com seus valores inalterados porque 'um novo vetor' recebe o produto de vetor [ ] por 2. Ponteiros não são vetores e vetores não são ponteiros; cada tipo com sua aritmética apropriada, contudo não são vetores (array), mas desempenha maior parte de suas funções. Principal diferença é que quando bem definido um vetor (array) tem tamanho fixo de dados. Fragmento_de_Código Analisando função com relação seguração de dados um risco é a inexistência de parâmetro Size Length que costumeiramente acompanha esse tipo de protótipo. De modo geral visto desta forma: //Protótipos mais comuns para se declara com segurança rotinas de vetores int * copiar_( int vetor [], unsigned len ); int * copiar_( unsigned len, int vetor [len] ); int * copiar_( int vetor [static 10] ); essa última você encontrará em alguns compêndios clássicos de C' de boa qualidade. De maneira bastante criteriosa a rotina do professor fica também assim: int * funcao( unsigned tam, int vetor [tam] ) { int * n; n = malloc( (sizeof * n) * tam ); for(unsigned i = 0; i < tam; i++) { * (n + (i)) = vetor [i] * 2; } return n; } Observe que para ressaltar as devidas notações busquei deixar bem claro que n é um ponteiro dando-lhe a escrita mais correta que pude aprender, tudo com parenteses fazendo alusão aos vetores. Enquanto vetor faço o mesmo deixando da maneira correta encontrada na função do professor. ~~ / ~~
  25. Eu imagino que basta selecionar 5 números consecutivos e multiplicar todos eles um pelo outro, depois repetir até o fim da lista sempre guardando o índice do primeiro número da sequência que gerar o maior produtor. Por fim apresenta-la

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!