Ir ao conteúdo
  • Cadastre-se

Flávio Pedroza

Membro Pleno
  • Posts

    2.070
  • Cadastrado em

  • Última visita

Tudo que Flávio Pedroza postou

  1. Não vai (pelos menos não normalmente). scanf só retornar EOF em caso de erro de leitura.
  2. int criarPiramede() { int ini = 1; int fim = x; while (ini <= fim) { for(n = 1; n <= x; n ++) { if ((n>=ini) && (n<=fim)) cout << n << " "; else cout << " "; } cout << endl; ini++; fim--; } return 0; }
  3. Converte de numeral para string e depois mostra o tamanho da string: #include <iostream> using namespace std; int main() { int num = 2233303; cout << "Algarismos: " << to_string(num).length(); return 0; }
  4. Adaptei um pouco o seu código, de modo a simplificar. Veja se está funcionando do jeito que queria: #include <stdio.h> #include <stdlib.h> typedef struct no{ int keys[2]; int nkey; struct no *subnos[3]; //0 - lef, 1 - middle, 2 - right }No; No *CriaNovo(){ No *aux; aux = (No *)malloc(sizeof(No)); return aux; } No *criaNo(int ch1, int ch2, int nchaves, No *pl, No *pc, No *pr){ No *n = CriaNovo(); n->keys[0]=ch1; n->keys[1]=ch2; n->nkey=nchaves; n->subnos[0] = pl; n->subnos[1] = pc; n->subnos[2] = pr; return n; } No *busca(No *raiz, int chave){ No* aux = NULL; if(raiz==NULL){ return NULL; } for (int i=0; i < raiz->nkey; i++) if(chave == raiz->keys[i]){ return raiz; } for (int i=0; i < 3; i++) { aux = busca(raiz->subnos[i], chave); if (aux != NULL) break; } return aux; } void imprimir(No *no){ No* aux = NULL; if(no==NULL){ printf("Arvore vazia!\n"); return; } for (int i=0; i < no->nkey; i++) { printf("%d ", no->keys[i]); } printf("\n"); for (int i=0; i < 3; i++) { aux = no->subnos[i]; if (aux != NULL) imprimir(aux); } } int main(){ No *a, *b, *c, *d, *e, *f, *g; No *aux; e = criaNo(1, 2, 2, NULL, NULL, NULL); f = criaNo(2, 3, 2, NULL, NULL, NULL); g = criaNo(3, 4, 2, NULL, NULL, NULL); c = criaNo(4, 5, 2, g, f, e); b = criaNo(5, 0, 1, NULL, c, NULL); a = criaNo(6, 0, 1, b, NULL, NULL);//raiz /* Estrutura da rede de nós a / | \ b * * / | \ * c * / | \ e f g */ imprimir(a); printf("Resultado da busca:\n"); imprimir(busca(a, 4)); //busca no "c" a partir da raiz "a" free(e); free(f); free(g); free(c); free(b); free(a); return 0; } Estão faltando as demais funções (insere, quebra, etc...)
  5. A primeira coisa e converter cada linha em um campo separado do tipo necessário. Neste exemplo abaixo, a linha é varrida e cada campo é separado em um campo da estrutura "leitura": #include <iostream> using namespace std; struct leitura { int data, hora; float temperatura, umidade, pressao; }; void separa_dados (string str, leitura* dado) { float dados[5]; int pos1; int pos2 = -1; for (int i=0; i < 5; i++) { pos1 = pos2+1; pos2 = str.find(";", pos1); dados[i] = stof(str.substr(pos1, pos2-pos1)); } dado->data = dados[0]; dado->hora = dados[1]; dado->temperatura = dados[2]; dado->umidade = dados[3]; dado->pressao = dados[4]; }; int main() { leitura dado; string str = "20190101;1200;33.3;88;1010.5"; separa_dados(str, &dado); cout << dado.data << " " << dado.hora << " " << dado.temperatura << " " << dado.umidade << " " << dado. pressao; return 0; } O próximo passo é você fazer de forma iterativa, para cada linha chamar a rotina separa_dados e fazendo dos cálculos.
  6. Posta o código todo, talvez possa ajudar a encontrar o erro na função recursiva.
  7. A sua lógica booleana para verificar se encontrou ou não está correta , tanto no primeiro post, ("!=NULL"), quando no último ("==NULL"). O problema deve ser dentro da função "busca".
  8. Do jeito que está, seu programa está armazenando os números sempre nas mesmas posições. você tem que criar um variável para armazenar quantos nomes já foram entrados e ir adicionando sem reescrever os que já foram entrados. int index=0; //variável global (...) void cadastro(void){ // void menu(void); menu(); //para chamar o metodo, basta assim int g; g = 0; while(g == 0){ (..) if (index < 10) //só armazena 10 nomes { scanf("%s",nomes[index]); fflush(stdin); index = index + 1; }
  9. 0 é falso e qualquer coisa diferente de zero é verdadeiro. É "busca" ou "find" o nome da função?
  10. Não uso o Dev-C++, mas pelo que andei pesquisando teria que adicionar "-Wl,--subsystem,windows" nas diretivas do "linker". Tentar achar algum menu do tipo "linker" ou "linking"command line/options". https://www.allegro.cc/forums/thread/126698
  11. você tem que usar dois \ seguidos e tem que colocar o arquivo png. Ex: "C:\\users\\windows_10\\Documents\\cadeiras\\lab\\Protocolo\\2aetapa\\imagens\\DamaBranca.png"
  12. O caminho do arquivo de imagem *.png provavelmente está errado (está dando erro de arquivo não encontrado). Onde está está localizada pasta "Imagens"? Tenta colocar na mesma pasta onde está localizado o arquivo "Damas.exe". Alternativamente, fornece o caminho completo. Ex.: "c:\arquivos de programas\visual studio 2017...", etc.
  13. "Ai se eu fizer *no = paux, funciona. SO que eu nao sei o que estou atribuindo, se é tudo. Acredito que sim. É isso?" Sim, isso mesmo. "voce sabe sobre arvores 2-3?" Infelizmente não.
  14. tem que incluir using System.Drawing; no começo se quiser usar a classe Point
  15. paux é um ponteiro de que tipo, int ou void? se for int basta.: (*no)->key = *paux;
  16. int main() { int valor,maior,menor,cnt; printf("Informe o primeiro numero: "); scanf("%d",&valor); maior = valor; menor = valor; cnt=1; //for(cnt=11; cnt<=10; cnt++) for(cnt=1; cnt<=10; cnt++) { printf("Informe o proximo numero: "); scanf("%d",&valor); if (valor>maior) maior = valor; if (valor<menor) menor = valor; //cnt=cnt+1; a variavel ja e incrementada pelo for, se você incrementar novamente dentro do laco, vai terminar antes do esperado }; printf("Maior = %d\n",maior); printf("Menor = %d\n",menor); return 0; }
  17. Qual o erro que dá? Tenta assim: public Pedras(bool imagem_, Point _posicao) //imagem é a imagem da peças e a posiçao é a posicao que vão ter no tabuleiro { //Point posicao = new Point(); imagem = imagem_; posicao = _posicao; }
  18. public Pedras(bool imagem_, Point _posicao) //imagem é a imagem da peças e a posiçao é a posicao que vão ter no tabuleiro { //Point posicao = new Point(); posição tem que pertencer a classe (um campo da classe). //Todas as variaveis declaradas dentro do método são removidas da memória após o fim do mesmo. imagem = imagem_; posicao.X = _posicao.X; posicao.Y = _posicao.Y; } public Jogo() //vamos inicializar as peças no tabuleiro { tabuleiro = new List<Pedras>(); //essa lista vai sumir no fim do método ok? tem que ser membro da classe... //é adicionada a imagem das peças nestas posiçoes quando o tabuleiro é inicializado tabuleiro.Add(new Pedras(true,new Point(8,2))); //peças brancas tabuleiro.Add(new Pedras(false, new Point(8,4))); //peças pretas }
  19. void excluiValor(No **inicio) { No *atual = *inicio, *anterior; int valor = 0; printf("Valor para exclusão: "); scanf("%d", &valor); //verifica se está no inicio if ((atual != NULL) && (atual->valor == valor)) { *inicio = atual->next; free(atual); return; } //procura pelo no while ((atual != NULL) && (atual->valor != valor)) { anterior = atual; atual = atual->proximo; } if (atual == NULL) return; //nao achou anterior->proximo = atual->proximo; free(atual); } veja se assim funciona (não pude testar);
  20. this.interfoneTableAdapter.Conferir(txtRamal.Text).ToString() Não o string, objeto é que null se this.interfoneTableAdapter.Conferir(txtRamal.Text) == NULL, e você chamar .ToString() vai gerar um exceção e a execução do programa vai pular para o catch.
  21. teste = exclui->proximo-1; teste->proximo = exclui->proximo; Não entendi muito bem o que você quis fazer neste trecho? Porque subtrai 1 do ponteiro?

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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!