-
Posts
3.284 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Livros
Cursos
Análises
Fórum
Tudo que Ansi C postou
-
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?
-
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.
-
C como trabalhar com ponteiro nulo sem ele apontar para qlq lugar
Ansi C respondeu ao tópico de Jessé P. de Melo em C/C#/C++
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. -
C como trabalhar com ponteiro nulo sem ele apontar para qlq lugar
Ansi C respondeu ao tópico de Jessé P. de Melo em C/C#/C++
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. -
C comportamento inesperado ao comparar membro de struct com valor float
Ansi C respondeu ao tópico de Jessé P. de Melo em C/C#/C++
O quê? está errado exatamente. Qual é o resultado da saída e da entrada nos testes realizados? Estou sem computador para testar! -
Não sei!
-
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.
-
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.
-
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
-
@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.
-
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
-
@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
-
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. ~~/~~
-
é 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.
-
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!
-
@Jessé P. de Melo observe como raciocinei acima no poster #21, quem sabe lhe ajuda da próxima vez.
-
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;
-
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.
-
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
-
@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.
-
@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.
-
Olá ... ! @Leonardo0308 exatamente! e ainda fiquei pensativo com relação a: Mostra de que forma?
-
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.
-
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. ~~ / ~~
-
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