-
Posts
119 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Fabricantes
Livros
Cursos
Análises
Fórum
posts postados por Reberth Siqueira
-
-
Novamente peço desculpa pela minha falta de atenção... Esqueci de adicionar o asterisco no sizeof(Fork)
Eu quis dizer assim:
Fork** root = (Fork**)malloc(sizeof(Fork*) * nodes);
adicionado 6 minutos depois1 hora atrás, arfneto disse:os ponteiros devem ser inicializados
Show. Era isso que eu imaginava. valeu
-
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?
-
Fala galera! Preciso de uma ajuda urgente!
Eu tenho um servidor Dell PowerEdge 2950 ao qual eu tenho inicialmente 2 HDs. Esses HDs acredito que devem estar em RAID mas não tenho certeza.
Acontece que recentemente peguei um + 1 HD. Hoje fui inserir esse HD no servidor e depois que eu inseri e fui ligar o servidor de novo a BIOS começou a indicar o seguinte erro:
unknown filesystem grub rescue
A partir daí não consegui mais iniciar o sistema operacional. Já tentei algumas coisas que eu andei procurando na internet:
ps: tudo que eu testei foi após ter removido o HD que eu tinha inserido
- Buscar pelo disco no console do grub utilizando o comando ls e depois aplicando um set prefix=<(nomeDoHd)>; resultado -> quando chamado insmod normal é retornado failed to read sector 0x2 from <(nomeDoHd)>
- Colocar só um HD para iniciar; resultado -> bios apontando que mudou configuração do RAID;
Então de tanto o servidor reclamar do RAID eu fui ver a configuração do raid e vi que tinha um HD com o state Foreign . A unica opção que encontrei para mudar esse state foi aplicando um import foreign . E é isso que eu to tentando agora. O servidor ta lá, rebuildando o disco, espero que de certo....
Alguem tem sugestões?
-
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á!
-
Boa tarde!
Eu quero implementar a seguinte ideia:
CitaçãoArmazenar o resultado de uma consulta no banco de dados em uma variavel (global ou local) para posterior manipulação dos valores.
Então estou tentando utilizar o código abaixo:
const express = require('express'); const bodyParser = require('body-parser'); const MongoClient = require('mongodb').MongoClient; const app = express(); app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json()); const url = "mongodb://localhost:27017"; const client = new MongoClient(url); let Global; // <-- Variavel que vai armazenar os dados // encontrados na procura no banco de dados app.get('/exemplo', (req, res) => { client.connect((err) => { let dbName = 'algumnNomeDeBanco'; let db = client.db(dbName); // <-- Instanciando conexão com o banco de dados let collection = db.collection('algumNomeDeTabela'); collection.find({ nome: 'reberth' }).toArray((err, docs) => { Global = docs; //<-- Armazenando o dado encontrado na variavel global }); }); console.log(Global); // resulltado = undefined }); app.listen(3000);
Alguem tem alguma ideia de como trabalhar isso?
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
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
Unir duas árvores binárias do tipo ABB
em C/C#/C++
Postado
Alguem pode corrigir este programa?
O objetivo é avaliar a função "combineABBs", que é responsável por unir duas árvores ABB's.
segue:
https://pastebin.com/FuTQyYcT