Ir ao conteúdo
  • Cadastre-se

EduardoMQS

Membros Plenos
  • Total de itens

    110
  • Registro em

  • Última visita

  • Qualificações

    N/D
  1. @ederlap Meu gatilho agora: create or replace trigger prevenda_insert before insert on prevenda for each row begin if ((:new.nota_fiscal = null) and (:new.venda = null)) then raise_application_error(-20500, 'Entre nota fiscal e venda, no mínimo 1 campo deve ser preenchido!'); elsif ((:new.nota_fiscal <> null) and (:new.venda <> null)) then raise_application_error(-20500, 'Entre nota fiscal e venda, no máximo 1 campo deve ser preenchido!'); end if; end; E continuei com o mesmo problema.
  2. Minha tabela: create table prevenda( codprevenda number not null primary key, quantidade number(2) not null, nota_fiscal number null, venda number null, produto number not null, constraint fk_prevenda_notafiscal foreign key (nota_fiscal) references nota_fiscal (num), constraint fk_prevenda_venda foreign key (venda) references venda (codvenda), constraint fk_prevenda_produto foreign key (produto) references produto (codprod) ); Meu gatilho: create or replace trigger prevenda_insert before insert on prevenda for each row begin if :new.nota_fiscal = null and :new.venda = null then raise_application_error(-20500, 'Entre nota fiscal e venda, no mínimo 1 campo deve ser preenchido!'); elsif :new.nota_fiscal <> null and :new.venda <> null then raise_application_error(-20500, 'Entre nota fiscal e venda, no máximo 1 campo deve ser preenchido!'); end if; end; Eu tento fazer: insert into prevenda values (1, 1, null, null, 1); E o banco insere os dados com os dois valores null que eu não quero que insira.
  3. Quando meu usuário está digitando em uma textarea, não quero que o usuário digite uma quebra de linha. Então como se substitui isso por um espaço em JavaScript?
  4. Meu Main: /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package main; import java.util.Scanner; import kruskalprim.Grafo; import kruskalprim.KruskalPrim; /** * * @author cieco */ public class Main { public static void main(String[] args) { KruskalPrim k = new KruskalPrim(); System.out.print("Você quer um grafo com quantos vértices? "); Scanner ler = new Scanner(System.in); int numVert = ler.nextInt(); Grafo g = new Grafo(numVert); int ind1, ind2, ind3 = 0, peso; for(ind1 = 0; ind1 < g.getNumeroVertices(); ind1++){ for(ind2 = ind1 + 1; ind2 < g.getNumeroVertices(); ind2++){ do{ System.out.print("Peso da aresta de " + ind1 + " para " + ind2 + ": "); peso = ler.nextInt(); }while(peso < 0); g.getAresta(ind3).setAresta(ind1, ind2, peso); g.getAresta(ind3).setAresta(ind2, ind1, peso); ind3++; } } k.fazerKruskal(g); for(ind1 = 0; ind1 < k.getArvore().numeroArestas(); ind1++) if(k.getArvore().getAresta(ind1).getPeso() > 0){ System.out.println("Aresta entre " + k.getArvore().getAresta(ind1).getV1() + " e " + k.getArvore().getAresta(ind1).getV2() + " com peso " + k.getArvore().getAresta(ind1).getPeso()); } } } Meu Grafo: /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package kruskalprim; /** * * @author cieco */ public class Grafo { private Aresta are[]; private int numeroVertices = -1; public Grafo(int numVert){ if(numVert > 1){ this.numeroVertices = numVert; this.are = new Aresta[(this.numeroVertices * (this.numeroVertices - 1)) / 2]; } } public int numeroArestas(){ return are.length; } public Aresta getAresta(int pos){ return are[pos]; } public int getNumeroVertices(){ return this.numeroVertices; } } Meu Aresta: /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package kruskalprim; /** * * @author cieco */ public class Aresta { private int v1, v2, peso; public void setAresta(int v1, int v2, int peso){ if(peso >= 0){ this.v1 = v1; this.v2 = v2; this.peso = peso; } } public int getV1(){ return v1; } public int getV2(){ return v2; } public int getPeso(){ return peso; } } Meu KruskalPrim: /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package kruskalprim; /** * * @author cieco */ public class KruskalPrim { private Grafo arvore; public void fazerKruskal(Grafo g) { arvore = g; int i, j, k, aux; boolean trocou; boolean visitados[] = new boolean[arvore.getNumeroVertices()]; int vetPesos[] = new int[arvore.getNumeroVertices()]; for (i = 0; i < arvore.getNumeroVertices(); i++) { vetPesos[i] = arvore.getAresta(i).getPeso(); } //ordenação QuadrosSort do{ trocou = false; for(i = 0; i < arvore.getNumeroVertices() - 1; i++) if(vetPesos[i] > vetPesos[i + 1]){ aux = vetPesos[i]; vetPesos[i] = vetPesos[i + 1]; vetPesos[i + 1] = aux; trocou = true; } }while(trocou); for(i = 0; i < arvore.getNumeroVertices(); i++){ visitados[i] = true; for(j = 0; j < arvore.numeroArestas(); j++) for(k = 0; k < arvore.numeroArestas(); k++){ if(vetPesos[j] == arvore.getAresta(k).getPeso()){ if(visitados[arvore.getAresta(k).getV2()]){ arvore.getAresta(k).setAresta(arvore.getAresta(k).getV1(), arvore.getAresta(k).getV2(), 0); arvore.getAresta(k).setAresta(arvore.getAresta(k).getV2(), arvore.getAresta(k).getV1(), 0); } } } } } public Grafo getArvore(){ return arvore; } } Qual é o meu problema?
  5. @isrnick Releia meu tópico editado!
  6. É o código de desbloqueio de Android. Este código abaixo está funcionando bem. void cadastrarPadrao(){ FILE *arq; if(!(arq = fopen("padrao_desbloqueio.txt", "r"))){ fclose(arq); arq = fopen("padrao_desbloqueio.txt", "w"); fclose(arq); cadastrarPadrao(); } else{ fseek(arq, 0, SEEK_END); if(ftell(arq) != 0) printf("\nO padrão já foi cadastrado!\n"); else{ fclose(arq); arq = fopen("padrao_desbloqueio.txt", "w"); int m[9][9]; int padraoDesbloqueio[41]; int i, j, k = 0; bool valido = true; char afirm; bool visitados[9]; for(i = 0; i < 9; i++) for(j = 0; j < 9; j++){ if(i == 0 && j == 2) m[i][j] = 0; else if(i == 2 && j == 0) m[i][j] = 0; else if(i == 6 && j == 8) m[i][j] = 0; else if(i == 8 && j == 6) m[i][j] = 0; else if(i - j == 6) m[i][j] = 0; else if(-i + j == 6) m[i][j] = 0; else if(i + j == 8) m[i][j] = 0; else if(i == j) m[i][j] = 0; else m[i][j] = 1; } for(i = 0; i < 9; i++) visitados[i] = false; for(i = 0; i < 41; i++) padraoDesbloqueio[i] = -2; do{ do{ printf("\nPonto %d do padrão: ", k); scanf("%d", &padraoDesbloqueio[k]); }while(padraoDesbloqueio[k] < 0 || padraoDesbloqueio[k] > 8); if(visitados[padraoDesbloqueio[k]]){ valido = false; break; } visitados[padraoDesbloqueio[k]] = true; if(k == 0) afirm = 'S'; else if(m[padraoDesbloqueio[k]][padraoDesbloqueio[k - 1]] == 0){ valido = false; break; } else{ if(k == 8) break; do{ printf("\nDeseja adicionar outro ponto (S/s/N/n)? "); fflush(stdin); scanf("%c", &afirm); }while(!(afirm == 'S' || afirm == 's' || afirm == 'N' || afirm == 'n')); } if(afirm == 'S' || afirm == 's') k++; }while(afirm == 'S' || afirm == 's'); if(valido){ for(i = 0; i < 41; i++){ if(padraoDesbloqueio[i] >= 0 && padraoDesbloqueio[i] <= 8){ fprintf(arq, "%d\t", padraoDesbloqueio[i]); } } printf("\nPadrão cadastrado com sucesso!\n"); } else printf("\nPadrão inválido!\n"); fclose(arq); } } } Neste código abaixo, quando digito o um valor diferente do primeiro valor do arquivo, o programa informa padrão incorreto, que é pra informar. Mas quando no ponto 0 do padrão digito o primeiro valor do arquivo e no ponto 1 digito o segundo valor do arquivo, o programa dá padrão incorreto, que não é pra dar, sim é para ir para o ponto 2. void testarPadrao(){ FILE *arq; bool correto = true; long pos = 0; int ponto, k = 0; int padraoDesbloqueio[41]; if(!(arq = fopen("padrao_desbloqueio.txt", "r"))) printf("\nErro ao tentar abrir arquivo!\n"); else{ fseek(arq, 0, SEEK_END); if(ftell(arq) == 0) printf("\nO padrão ainda não foi cadastrado!\n"); else{ long tam = ftell(arq); do{ printf("\nPonto %d do padrão: ", k); scanf("%d", &padraoDesbloqueio[k]); fseek(arq, pos, SEEK_SET); fscanf(arq, "%d", &ponto); if(ponto != padraoDesbloqueio[k]){ correto = false; break; } k++; pos = k * (sizeof(int) + sizeof('\t')); }while(pos <= tam); if(correto) printf("\nPadrão correto!\n"); else printf("\nPadrão incorreto!\n"); } } }
  7. Em um jogo eletrônico de corrida, um personagem pode ter 0, 1, 2, 3, 4 ou mais pistas e uma pista pode ser de 0, 1, 2, 3, 4 ou mais personagens. Acho que isso é um grafo bipartido. Estou correto?
  8. Consigo muito bem baixar no Android o APK da loja de aplicativos alheia Aptoide.
  9. Preciso de ajuda para resolver o problema do URI Online Judge de código 1774 (Roteadores). Meu código em C++ que estou compilando: #include <iostream> #include <vector> #include <algorithm> // sort #include <string.h> // memset struct ArestaPonderada{ int vertices[2]; int peso; }; using namespace std; int r, c; vector<struct ArestaPonderada> arestas; void iniciar(){ int i, j; int v, w, p; for(i = 1; i <= c; i++){ do{ cin >> v >> w >> p; } while(v < 1 || v > r || w < 1 || w > r || p < 1 || p > 10000); arestas[i].vertices[1] = v; arestas[i].vertices[2] = w; arestas[i].peso = p; } } int buscar(int subset[], int i){ if(subset[i] == -2) return i; return buscar(subset, subset[i]); } void unir(int subset[], int v1, int v2){ int v1_set = buscar(subset, v1); int v2_set = buscar(subset, v2); subset[v1_set] = v2_set; } vector<struct ArestaPonderada> vetorMenor(vector<struct ArestaPonderada> ares){ int i; bool trocou; vector<struct ArestaPonderada> arestaPesos = ares; sort(arestaPesos.begin(), arestaPesos.end()); return arestaPesos; } vector<struct ArestaPonderada> gerarArvore(vector<struct ArestaPonderada> ares){ vector<struct ArestaPonderada> arvore = ares; int *subset = (int*) malloc(r * sizeof(int)); memset(subset, -1, sizeof(int) * r); int tam = arvore.size(); for(int i = 1; i <= tam; i++){ int v1 = buscar(subset, arvore[i].vertices[1]); int v2 = buscar(subset, arvore[i].vertices[2]); if(v1 != v2){ // se forem diferentes é porque NÃO forma ciclo, insere no vetor arvore.push_back(arestas[i]); unir(subset, v1, v2); // faz a união } } return arvore; } int main(){ do{ cin >> r; } while(r < 3 || r > 60); do{ cin >> c; } while(c < r || c > 200); iniciar(); arestas = vetorMenor(arestas); arestas = gerarArvore(arestas); int i; int somaCustos = 0; int tam = arestas.size(); for(i = 1; i <= tam; i++) somaCustos += arestas[i].peso; cout << somaCustos << endl; } Dá erro de compilação no arquivo C:\ProgramFiles (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\bits\predefined_ops.h: E não encontrei no meu código uma comparação em que uma variável do tipo ArestaPonderada é menor que uma variável do tipo ArestaPonderada.
  10. Eu quero resolver o problema 1774 do URI Online Judge. Depois de todas as entradas que faço como no exemplo do problema mostrado, o programa dá esse erro. Meu código: #include <stdio.h> #include <stdlib.h> #include <stdbool.h> struct ArestaPonderada{ int vertices[2]; int peso; }; int r, c; struct ArestaPonderada *arestas; void iniciar(){ int i, j; int v, w, p; arestas = (int*) malloc(c * sizeof(struct ArestaPonderada)); for(i = 1; i <= c; i++){ do{ scanf("%d %d %d", &v, &w, &p); } while(v < 1 || v > r || w < 1 || w > r || p < 1 || p > 10000); arestas[i].vertices[1] = v; arestas[i].vertices[2] = w; arestas[i].peso = p; } } struct ArestaPonderada* vetorMenor(struct ArestaPonderada ares[]){ int i; bool trocou; struct ArestaPonderada aux; size_t tam = ((sizeof(ares) / sizeof(struct ArestaPonderada)) / sizeof(int)) / 3; struct ArestaPonderada arestaPesos[tam]; for(i = 1; i <= tam; i++){ arestaPesos[i].vertices[1] = ares[i].vertices[1]; arestaPesos[i].vertices[2] = ares[i].vertices[2]; arestaPesos[i].peso = ares[i].peso; } // meu método de ordenação que quero criar do{ trocou = false; for(i = 1; i <= tam - 1; i++) if(arestaPesos[i].peso > arestaPesos[i + 1].peso){ aux = arestaPesos[i]; arestaPesos[i] = arestaPesos[i + 1]; arestaPesos[i + 1] = aux; trocou = true; } } while(trocou); return arestaPesos; } struct ArestaPonderada* gerarArvore(struct ArestaPonderada ares[]){ int i, j, k; int visitados[r]; for(i = 0; i <= r; i++) visitados[i] = -2; size_t tam = ((sizeof(ares) / sizeof(struct ArestaPonderada)) / sizeof(int)) / 3; struct ArestaPonderada arvore[tam]; for(i = 1; i <= tam; i++) arvore[i] = ares[i]; for(i = 1; i <= r; i++) for(j = 1; j <= tam; j++){ visitados[i] = arvore[j].vertices[1]; for(k = 1; k <= r; k++) if(visitados[k] == arvore[j].vertices[2]){ arvore[j].peso = 0; break; } if(arvore[j].peso == 0) continue; visitados[i] = arvore[j].vertices[2]; } return arvore; } int main(){ do{ scanf("%d", &r); } while(r < 3 || r > 60); do{ scanf("%d", &c); } while(c < r || c > 200); iniciar(); arestas = vetorMenor(arestas); arestas = gerarArvore(arestas); int i; int somaCustos = 0; size_t tam = ((sizeof(arestas) / sizeof(struct ArestaPonderada)) / sizeof(int)) / 3; for(i = 1; i <= tam; i++) somaCustos += arestas[i].peso; printf("%d\n", somaCustos); }
  11. Para eu recuperar a nota de uma questão de uma prova, eu peguei o código deste link: https://github.com/gustavosm/uri/blob/master/1774.cpp Meu código: #include <bits/stdc++.h> using namespace std; typedef pair<int, pair<int,int> > iii; vector<int> ps; void iniciar(int n) { ps.assign(n,0); for (int i = 0 ; i < n; i++) ps[i] = i; //vertice i na componente i } int encontrar(int i) { return (ps[i] == i? i : ps[i] = encontrar(ps[i])); } bool mesmoValor(int i, int j) { return encontrar(i) == encontrar(j); } void uniao(int i, int j) { ps[encontrar(i)] = encontrar(j); } int main() { vector< iii >adj; int n; int m; int v; int u; int peso; int custoMinimo; cin >> n >> m; for (int i = 0 ; i < m ; i++) { cin >> u >> v >> peso; --u; --v; adj.push_back(iii(peso, pair<int,int> (u,v))); } custoMinimo = 0; sort(adj.begin(), adj.end()); iniciar(n); for (int i = 0 ; i < m ; i++) { iii f = adj[i]; if (!mesmoValor(f.second.first, f.second.second)) { uniao(f.second.first, f.second.second); custoMinimo += f.first; } } cout << custoMinimo << endl; ps.clear(); adj.clear(); } O URI teve minha submissão aceita. Meu monitor de estudos tem certeza que eu plagiei e eu acho que não. Talvez ele esteja mentindo. CopySpider, AntiPlagiarist, Plagiarisma, Grammarly, Plagium, outros programas anti-plágio só servem para texto teórico e não para código. Corrijam meu monitor por favor! Digam se ele está correto!
  12. https://github.com/postgres/postgres Quero mudar para: Para multiplicar todos os valores numéricos de uma coluna quero criar esta função de agregação: E prod elevado a (1 / count) quero criar esta função de agregação: Para isso, no GitHub do PostgreSQL de código aberto devo editar qual arquivo? Especifique o diretório! Depois que eu editar, como faço para enviar o editado ao GitHub? Ainda não aprendi!
  13. Será esse salário em reais quando eu me formar em Ciência da Computação.
  14. Como vou desenvolver? Vocês têm dicas?
  15. ele fica depois de create or replace procedure e antes de begin em pl/sql no oracle db.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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: minicurso “Como ganhar dinheiro montando computadores”

Gabriel TorresGabriel Torres, fundador e editor executivo do Clube do Hardware, acaba de lançar um minicurso totalmente gratuito: "Como ganhar dinheiro montando computadores".

Você aprenderá sobre o quanto pode ganhar, como cobrar, como lidar com a concorrência, como se tornar um profissional altamente qualificado e muito mais!

Inscreva-se agora!