-
Posts
105 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Livros
Cursos
Análises
Fórum
posts postados por Reberth Siqueira
-
-
Certo. Muito interessante essa declaração de escopo dentro dos métodos switch, while e for... Vou começar a utilizar, sempre que possível.
Só pra confirmar... Após criar o vetor de Fork*:
Fork** root = (Fork**)malloc(sizeof(Fork) * nodes);
Todas posições no vetor já são NULL?
*(root+1) == NULL *(root+2) == NULL . . . *(root+n) == NULL
Ou tenho que setar como NULL?
for (int i = 0 ; i < nodes ; i++) { *(root+i) = NULL; }
-
Opa. Eu errei na parte do cast. onde estava PPFork tinha que ser Fork**
-
Com esse programa eu queria que fosse possível criar, adicionar uma aresta e depois liberar o grafo. Ontem peguei novamente para estudar e identifiquei alguns erros no método em que eu determinei para criação das arestas. Começando pela struct:
Mudei de:
struct FORK { int value; PFork next; };
Para:
struct FORK { int col; PFork next; };
Onde int value eu queria armazenar um valor qualquer e no int col eu desejo armazenar o indice de refêrencia ao node desejado.
A partir dai utilizei os métodos para matrizes esparsas e acho que deu certo...
AGORA REFERENTE A SUAS OBSERVAÇÕES
11 horas atrás, arfneto disse:Fork** createRoot(int nodes, int maxConnections) { int i; Fork** root = (Fork**)malloc(sizeof(Fork) * nodes); for (i = 0; i < nodes; i++) { root[i] = NULL; } return root; }
invés de fazer igual acima eu posso fazer que nem abaixo?
Fork** createRoot(int nodes) { return (PPFork) malloc(sizeof(Fork *)*nodes); }
-
Fala galera! Boa noite!
Inicie meus estudos em grafos e estou perdido em relação a como criar um (minha aula a distância dessa semana foi um lixo e os videos no youtube estão me confundindo). Criei com base no conceito de matriz esparsa. Gostaria de saber se estou setando corretamente os ponteiros (função insertInRoot()).
pastebin: https://pastebin.com/BZex2nqH
abraços
-
1
-
-
Consegui resolver o problema utilizando o comando fsck -f
-
1
-
-
galera só uma correção: Descobri que esse HD que retirei do servidor tem o formato EXT2
-
1
-
-
18 minutos atrás, Samuel Perini disse:
Qual o tamanho dessa partição?
Imagino que ela somente não tem um sistema de arquivo definido (ntfs, fat, fat32) ou ela é uma partição do HD que foi criada durante a instalação do sistema.
É uma partição NFTS. Esse é um disco de 1TB que retirei de um servidor que está em RAID1 onde está com problema de filesystem. Tentei conectar esse HD no meu PC para poder tentar recuperar os arquivos mas não consigo acessar o volume.
Eu sei que é NFTS pois eu utilizei o TestkDisk para scannear o disco, eu consegui até copiar os arquivos que tem nele para um outro HD externo, mas não deu certo (a pasta em que está os arquivos copiados no HD externo não está 'mostrando' os arquivos que foram copiados desse HD de 1TB).
-
Falar galera!
Conforme a imagem acima tenho um HD nesse estado. Não há informação do sistema de arquivos. Será que o HD está corrompido?
-
Então, o sistema é meu. Eu que estou desenvolvendo. Encontrei um projeto open-source que realiza todo o processo de emissão/transmissão e validação da NF-e. Vou testar depois
-
Bom dia!!
Eu quero aprimorar um sistema de pizzaria colocando a opção de emitir Nota-fiscal, iguais aqueles sistemas que tem em mercados/padarias. Procurei no google mas não achei nada muito informativo.
onde posso encontrar mais informações sobre essa função?
desde ja agradeço a atenção
-
Eu estou com o livro físico e nele está igual o pdf
Enfim,
23 horas atrás, arfneto disse:Quando você aloca por exemplo um vetor de estruturas, você faz a conta do tamanho total a alocar. Peguei um pedaço de um programa que postei outro dia aqui para exemplo
struct exemplo { int i_parametro; double d_parametro; char* s_parametro; int (*f_parametro_i)(int); //<- ESSE //_ Protótipo void (*f_parametro_v)(int, int); //<- ESSE // de função? }; typedef struct exemplo Exemplo;
Eu não entendi os ultimos dois parametros... Eles são protótipos de função?? Eu to entre prototipo de função e ponteiros que podem ser alocados para virar vetor/matriz
23 horas atrás, arfneto disse:Os deslocamentos são 1464 1465 e 1466
Esses deslocamentos são números de bytes?
Enfim, também consegui chegar nos números deslocamentos que você chegou. Tá muito confuso pra mim esse exercicio kkkk
Mas desde já obrigado pela ajuda!! Sempre é bom contar com você nos tópicos que eu crio, sempre sei que vou aprender muita coisa.
Curti muito a tua explicação sobre vetores de estruturas.
Boas ferias pra você também
-
Por enquanto cheguei no código abaixo, onde é criado um vetor de n dimensões com range[n] elementos.
Se estiver correto, agora, estou tendo problemas pra entender a parte final da questão:
Em 07/01/2020 às 15:44, Reberth Siqueira disse:A função listoff deve imprimir os deslocamentos a partir da base do vetor a, representado por range, de todos os elementos de a que estejam incluídos no vetor (ou o deslocamento do único elemento, se todos os índices estiverem dentro dos limites) representado por sub.
Até
Citação...base do vetor a
eu entendi. Depois disso... kkk
#include<stdio.h> #include<stdlib.h> int main(){ int n; scanf("%i",&n);//2 int range[n],sub[n]; for(int i = 0 ; i < n; i++){ scanf("%i",&range[i]); //5 5 } for(int i = 0 ; i < n; i++){ scanf("%i",&sub[i]); // 0 0 } listOff(range,sub,n); return 0; } void listOff(int range[], int sub[],int n){ int base; int aux=1; int offset = 0; int* vet; int* posicao; for(int i = 0 ; i < n ; i++){ aux*= range[i]; } vet = (int*) malloc(aux*sizeof(int)); base = vet; for(int i = 0 ; i < n ; i++){ offset=range[i]*offset+sub[i]; } vet[0] = -3; posicao = base+(offset*sizeof(int)); printf("%i",*posicao); //-3 free(vet); }
-
Acho que compreendi melhor.
Então com base no exemplo abaixo, eu vou obter um vetor vet[n][m] ?
int teste[5] ={10,20}; int* vet; vet = (int*) malloc(teste[0]*teste[1]*sizeof(int)); // vet[10][20] printf("%i",vet[0*20+10]);
-
Ainda estou em dúvida em como criar o ponteiro que vai ser utilizado para realizar a alocação. Por exemplo
n = 1 range[n] // 1 dimensão scanf("%i",&range[n]); // 2 int* vet; vet = (int*) malloc(range[n] * sizeof(int)); // será criado um vetor vet[2]
Como a variável n fica a critério do usuário, podemos ter n dimensões... Logo, pra cada dimensão eu teria que transformar o ponteiro atual em outro ponteiro:
se n = 1 *vet //1 dimensao se n = 2 **vet // 2 dimensões se n = 3 ***vet // 3 dimensões
Existe um algoritmo que cria um ponteiro de ponteiro com base nas dimensões especificadas?
-
Boa tarde @DiF, tudo bem?
Então cara, ainda estou de férias da faculdade e estou me preparando para adiantar algumas máterias. Algoritmos e Estrutura de Dados é uma delas, que inclusive é a máteria que estou estudando com o livro que eu anexei no inicio do post.
Como pode ver, eu linkei o livro e mencionei onde encontrar o enunciado, e sobre qual conteúdo eu ACHO que a questão está se referindo.
Acredito que houve um mal entendido, pois eu fiz esse post com intuito de sanar minhas dúvidas que estão no final do post e não obter respostas prontas.
Talvez eu não tenha sido muito claro e por isso peço desculpas.
Vou reformular minhas dúvida
-
Enunciado:
CitaçãoEscreva uma função em C, listoff, que aceite como parâmetros dois vetores unidimensionais do mesmo tamanho: range e sub.
range representa a faixa de um vetor de inteiros. Por exeplo, se os elementos de range são:
3 5 10 6 3
range representa um vetor a declarado por:
int a[3][5][10][6][3]
Os elementos de sub representam índices para o vetor anterior. Se sub não estiver entre 0 e range-1, todos os índices a partir do iésimo em diant estão ausentes. No exemplo anterior, se os elementos de sub são:
1 3 1 2 3
sub representa o vetor unidimensional a[1][3][1][2]. A função listoff deve imprimir os deslocamentos a partir da base do vetor a, representado por range, de todos os elementos de a que estejam incluídos no vetor (ou o deslocamento do único elemento, se todos os índices estiverem dentro dos limites) representado por sub. Pressuponha que o tamanho (esize) de cada elemento de a seja 1. No exemplo anterior listoff imprimiria os valores 4, 5 e 6.
Legenda:
esize == sizeof
Essa questão (Questão 1.2.7 - página 56 do livro) foi retirada do livro ESTRUTURA DE DADOS USANDO C (Tenenbaum/Langsam Augenstein)
Talvez a resposta esteja na seção "Vetores multidimensionais" que tá a partir da página 50, no final da sessão foi passado até um algoritmo que consegue percorrer as posições do vetor:
offset = 0; for(j = 0 ; j < n ; j++){ offset = r[j]*offset+i[j]; } addr = baseVetor + esize * offset;
mas mesmo assim eu ainda tenho dúvidas sobre como:
-> OBS: Pode ser que eu tenha entendido errado o enunciado, ainda não compreendo esses novos termos de deslocamento, faixa, etc
CitaçãoSe os dois vetores (range e sub) tem o mesmo tamanho ->
cada elemento do vetor range = tamanho de cada dimensão do vetor
cada elemento do vetor sub = indice de cada dimensão do vetor
Com isso, na main.c eu criei o vetor range[n] e o vetor sub[n] (n é o tamanho do vetor, definido pelo usuario)
int n; scanf("%i",&n); int range[n],sub[n] for(int i = 0 ; i < n ; i++){ scanf("%i", &range[i]); } for(int i = 0 ; i < n ; i++){ scanf("%i", &sub[i]); }
Com isso eu eu tenho o tamanho do vetor que vai ser criado (os elementos do vetor range) e tenho o elemento do vetor criado que vai ser procurado (os elementos do vetor sub)
Minha DÚVIDA vem agora:
Eu tenho que criar a função que vai receber os vetores range e sub
void listoff(int range[],sub[]){ }
Pelo que eu entendi do enunciado, eu tenho que criar uma vetor a dentro da função listoff, de tamanho a[range[n1]] ... [range[n-1]]
Meu problema é nesta parte... Como vou criar um vetor com base nos números dos elementos de range?
Já pensei em utilizar alocação dinamica mas aí eu teria que criar o ponteiro com base no número de elementos de range:
n = tamanho do vetor range[n]; if(n == 4){ int**** vet; } vet = (int****) malloc(range[0]*sizeof(int***); vet[0] = (int***) malloc(range[1]*sizeof(int**); vet[1] = (int***) malloc(range[1]*sizeof(int**); . . . vet[0][0][0] = (int*) malloc(range[3]*sizeof(int); . . . vet[n][n][n] = (int*) malloc (range[3]*sizeof(int);
E sinceramente, ainda não tenho noção se da pra fazer isso.
- Imprimir os deslocamentos
Obrigado desde já!
-
Em 17/12/2019 às 22:07, ezequiel972 disse:
caro @Reberth Siqueira, boa noite!!
quando clonamos um objeto usando x.cloneNode(true), nos criamos um objeto irmão do primeiro com as mesmas propriedades, exceto pelos listners que nao sao copiados e precisam ser adicionados novamente a cada objeto.segue ex.
X = document.createElement("div"); // cria o elemento div X.classList.add("classteste"); // add a class nele document.body.appendChild(X.cloneNode(true)); // clona e anexo o elemento document.body.appendChild(X.cloneNode(true)); document.body.appendChild(X.cloneNode(true)); document.body.appendChild(X.cloneNode(true)); document.body.appendChild(X.cloneNode(true)); elementList = document.querySelectorAll(".classteste"); //seleciona todos elementos pela class, retorna um array de elementos for(i=0 ; i<elementList.length ; i++){ // repassa cada elemento do array e adiciona o listner nele console.log(elementList[i]); elementList[i].addEventListener("click", function(e){ //preferivel usar addEventListener a element.onclick = function(). console.log(e); }, false);}
Bom dia Ezequiel!
Só passando aqui pra avisar que criei um bloco de código que a função dele é anexar um novo formulário na pagina através do DOM para cada novo evento de click em um botão.
Eu criei um método que cria o formulário e configura as proriedades do formulário (inclusive o botão que vai ser clicado), e ao utilizar o addEventListener eu tive um problema o qual o mesmo acumulava novos métodos no botão.
O mesmo botão era utilizado nos outros forms, acho que foi por isso que foi acumulando os eventos de click.
Então eu aprendique o AddEventListener não sobrepoe os eventos anteriores. Muito legal
-
Já foi resolvido!
Acho que por ser uma função assincrona e não bloqueante, o javascript, executou muito mais rápido o console.log depois do post do que a requisição no servidor. Por isso estava dando undefined.
Eu coloquei um setTimeout de 1 segundo para executar esse console log e verifiquei que os dados estavam realmente sendo armazenados na variavel.
-
1
-
-
Olá!!
Finalmente iniciei com NodeJS e sinceramente, eu to totalmente perdido kkkk Já vi algumas video aulas e ainda estou vendo. Mas eu não tenho paciencia.... eu gosto de praticar. Então, já entendi como são feitas as requisições POST e GET, e agora estou tentando aprender como manipular os dados que são retornados do servidor. O que eu estou fazendo é:
(seguind a ordem abaixo)
Client-side: Através do POST estou mandando os dados {tipo=este
Server-side: Recebe o dado e o retorna em formato JSON {"tipo":"teste"}
(O MEU PROBLEMA VEM A SEGUIR)Client-side: Ao receber o responseText, armazezar a resposta em uma variavel global chamada teste e dar um console.log(teste)
Atualmente só tá sendo printado undefined no teste. Já tentei utilizar .slice() mas mesmo assim não deu certo ;|
o que eu to fazendo de errado?
Código CLIENTE-SIDE
let teste; // AQUI QUERO QUE RECEBA O VALOR DO RESPONSETEXT const post = () => { event.preventDefault(); let ajax = new XMLHttpRequest(); let params = "tipo=teste"; ajax.open('POST', 'http://localhost:3000/'); ajax.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); ajax.onreadystatechange = () => { let resposta = ajax.responseText; teste = resposta.slice(); } ajax.send(params); } window.addEventListiner('onload', () => { post(); console.log(teste); //UNDEFINED });
Código Server-side
let express = require('express'); let bodyParser = require('body-parser'); let cors = require('cors'); let app = express(); let objet; let urlEnconded = bodyParser.urlencoded({ extended: false }); app.use(function (req, res, next) { res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); next(); }); app.use(cors()); app.post('/', urlEnconded, (req, res) => { objet = { tipo: req.body.tipo } res.send(objet); }) app.listen(3000, () => { console.log('hey'); });
-
@ezequiel972 Beleza! Vou tentar criar algo parecido.
-
Boa tarde!! Tudo bem??
Estou voltando pra dizer que estou tendo problemas para settar eventos:
Se eu setto algum evento no elemento X:
x.onclick = () => { console.log("hey"); }
e realizar o appendChild como informado:
document.body.appendChild(x); document.body.appendChild(x.cloneNode(true)); document.body.appendChild(x.cloneNode(true));
Se eu clicar no primeiro elemento que foi anexado ao document.body a mensagem será printada no console. Mas se eu clicar nas outras duas depois, nada acontece.
já tentei algumas coisas e mesmo assim nao deu
-
-
1
-
-
Eu tenho um elemento X
let X = document.createElement("div");
Quando eu faço isso:
body.appendChild(x); body.appendChild(x); body.appendChild(x);
Só aparece o elemento X apenas 1 vez na página.
X
Eu não entendo porque acontece isto. Eu gostaria de poder "appendar" copias do elemento no mesmo documento.
É possível?
-
Boa noite,
Eu estou desenvolvendo um projeto o qual eu desejo integrar o iFood para obter os dados de pedido. Mas eu não faço mínima ideia de por onde começar...
Alguem já fez algo semelhante antes? Eu ainda não parei pra estudar integrações de serviços. Essa vai ser minha "primeira", eu to meio perdido quanto a isso.. Não sei nem se tenho que usar php ou alguma outra linguagem e nem sei se realmente é possivel fazer isto...
Já entrei em contato com as empresas pedindo um auxilio e estou aguardando respostas.
Enfim... Se alguem puder me dar uma direcionada eu agradeço muito!!
att,
reberth
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
Maneira correta de implementar grafos
em C/C#/C++
Postado
Novamente peço desculpa pela minha falta de atenção... Esqueci de adicionar o asterisco no sizeof(Fork)
Eu quis dizer assim:
Show. Era isso que eu imaginava. valeu