Ir ao conteúdo
  • Cadastre-se

Flávio Pedroza

Membro Pleno
  • Posts

    2.074
  • Cadastrado em

  • Última visita

Tudo que Flávio Pedroza postou

  1. Se "provMnot=j;" então ele vai de 0 a 2, e não de 1 a 3, não é mesmo? for(j=0;j<col;j++){ if(provNot[i][j]<menor[i]){ menor[i]=provNot[i][j]; provMnot=j; // j vai de 0 a no máixmo 2 } } if(provMnot==0){ p1=p1+1; } if(provMnot==1){ p2=p2+1; } if (provMnot==2){ p3=p3+1; } Veja se assim funciona
  2. Tire o ";" depois do "for (...". O incremento (passo) também estava errado, o certo é "n=+2". Não precisa disso "if(i %2 == 0)", pois o i não necessariamente deve ser par. A condição de parada e "n<=i", ou seja, executa o for enquanto n for menor ou igual a i. A variável "n" pode ser local. int par(int i) { int n; for(n=0; n <= i; n=+2) printf("Numeros pares: %d", n); }
  3. Para mostrar as posições da letra: char letra; do { scanf("%c",&letra); } while ((letra != 'G') && (letra != 'R') && (letra != 'B')); for (int i = 0; i < 9; i++) if (Sequencia[i]==letra) printf("%d ",i+1);
  4. O que você procura é o realloc, mas recomendo ao invés de incrementar o tamanho de um em um, faça em etapas, de dez em dez. E no final você usa realloc mais uma vez para reduzir o tamanho para a quantidade exata que o usuário digitou. Edit: não esqueça de chamar free no final.
  5. Pede pra mostrar também a variável sqlUpdate no catch, pois pode ter algum erro na sintaxe do comando.
  6. O único erro que percebo é que você lê apenas 4 vezes as entradas, enquanto o problema diz " a entrada só termina quando não houveram mais números". Outra coisa é que tem que limitar o valor, "Todos os inteiros serão menores que 1.000.000 e maiores que 0.". Disto isto: while (1) { scanf("%d %d", &i, &j); if ((i < 1) || (j < 1) || (i > 1000000) || (j > 1000000)) break; if(i >= j){ maior = i; menor = j; } else { maior = j; menor = i; } ... Pode ser também o fato de que, enquanto no seu código a saída é fornecida a medida que o usuário entra com os dados, o problema exigir que forneça as primeiro todas entradas e somente depois calcule e imprima os resultados, mas não acho eu ficou claro se tem que ser assim mesmo.
  7. Entendi agora, sua função CHEIO estava em um loop infinito. Testa assim agora: int Cheio(Principal *Estrutura, int i){ int temp = 0; for (int j=0; j< Estrutura[i].Prox -> Sizes; j++){ if(Estrutura[i].Prox -> N[j] != 0){ temp++; } } if(temp == Estrutura[i].Prox -> Sizes){ return 1; }else{ return 0; } }
  8. Sim, isso mesmo. Testei neste compilador online https://www.onlinegdb.com/online_c++_compiler, com as alterações que propus, e acredito que funcionou: -------------------------- Digite a opção desejada 0 - Sair 1 - Inserir Elemento 2 - Listar 3 - Listar Ordenadamente cada estrutura auxiliar 4 - Listar Ordenadamente todos os numeros 5 - Excluir um elemento 6 - Aumentar tamanho da Estrutura Auxiliar 1 Digite a posicao na qual deseja inserir o elemento: 0 Nao existe uma estrutura auxiliar. Insira o tamanho dela: 3 Digite o elemento a ser inserido: 1 Digite o elemento a ser inserido: 2 Digite o elemento a ser inserido: 3 -------------------------- Digite a opção desejada 0 - Sair 1 - Inserir Elemento 2 - Listar 3 - Listar Ordenadamente cada estrutura auxiliar 4 - Listar Ordenadamente todos os numeros 5 - Excluir um elemento 6 - Aumentar tamanho da Estrutura Auxiliar 6 Insira a posicao que deseja aumentar: 0 TAMANHO 3 Insira o novo numero de posições a ser adicionado na estrutura auxiliar: 2 TAMANHO 5 -------------------------- Digite a opção desejada 0 - Sair 1 - Inserir Elemento 2 - Listar 3 - Listar Ordenadamente cada estrutura auxiliar 4 - Listar Ordenadamente todos os numeros 5 - Excluir um elemento 6 - Aumentar tamanho da Estrutura Auxiliar 1 Digite a posicao na qual deseja inserir o elemento: 1 Nao existe uma estrutura auxiliar. Insira o tamanho dela: 2 Digite o elemento a ser inserido: 4 Digite o elemento a ser inserido: 5 -------------------------- Digite a opção desejada 0 - Sair 1 - Inserir Elemento 2 - Listar 3 - Listar Ordenadamente cada estrutura auxiliar 4 - Listar Ordenadamente todos os numeros 5 - Excluir um elemento 6 - Aumentar tamanho da Estrutura Auxiliar 2 -------------------------- Posicao 0 da estrutura Principal Elementos: 1, 2, 3, 0, 0, -------------------------- Posicao 1 da estrutura Principal Elementos: 4, 5, -------------------------- Posicao 2 da estrutura Principal Elementos: -------------------------- Posicao 3 da estrutura Principal Elementos: -------------------------- Posicao 4 da estrutura Principal Elementos: -------------------------- Posicao 5 da estrutura Principal Elementos: -------------------------- Posicao 6 da estrutura Principal Elementos: -------------------------- Posicao 7 da estrutura Principal Elementos: -------------------------- Posicao 8 da estrutura Principal Elementos: -------------------------- Posicao 9 da estrutura Principal Elementos: -------------------------- Digite a opção desejada 0 - Sair 1 - Inserir Elemento 2 - Listar 3 - Listar Ordenadamente cada estrutura auxiliar 4 - Listar Ordenadamente todos os numeros 5 - Excluir um elemento 6 - Aumentar tamanho da Estrutura Auxiliar 6 Insira a posicao que deseja aumentar: 1 TAMANHO 2 Insira o novo numero de posições a ser adicionado na estrutura auxiliar: 5 TAMANHO 7 -------------------------- Digite a opção desejada 0 - Sair 1 - Inserir Elemento 2 - Listar 3 - Listar Ordenadamente cada estrutura auxiliar 4 - Listar Ordenadamente todos os numeros 5 - Excluir um elemento 6 - Aumentar tamanho da Estrutura Auxiliar 2 -------------------------- Posicao 0 da estrutura Principal Elementos: 1, 2, 3, 0, 0, -------------------------- Posicao 1 da estrutura Principal Elementos: 4, 5, 0, 0, 0, 0, 135041, -------------------------- Posicao 2 da estrutura Principal Elementos: -------------------------- Posicao 3 da estrutura Principal Elementos: -------------------------- Posicao 4 da estrutura Principal Elementos: -------------------------- Posicao 5 da estrutura Principal Elementos: -------------------------- Posicao 6 da estrutura Principal Elementos: -------------------------- Posicao 7 da estrutura Principal Elementos: -------------------------- Posicao 8 da estrutura Principal Elementos: -------------------------- Posicao 9 da estrutura Principal Elementos: -------------------------- Digite a opção desejada 0 - Sair 1 - Inserir Elemento 2 - Listar 3 - Listar Ordenadamente cada estrutura auxiliar 4 - Listar Ordenadamente todos os numeros 5 - Excluir um elemento 6 - Aumentar tamanho da Estrutura Auxiliar
  9. Procura pelos autores Bjarne Stroustrup (The C++ Programming Language) e Dennis Ritchie (The C Programming Language). Não conheço pessoalmente, mas falam muito bem pois os autores são também os que desenvolveram as linguagens. Não sei se tem em português.
  10. Tenta assim então: void insere(int *vetor){ if (topo > 4){ printf("Pilha cheia/n"); }else{ printf("Digite o valor que quer incluir: "); scanf("%d", &pilha[topo]); topo++; } }
  11. Na função "Aumentar" insira um "return" na posição indicada abaixo. Também a função não tem necessidade de se usar um "while" para aumentar a estrutura, basta realocar a memória uma única vez. Acredito que agora irá funcionar: void Aumentar(Principal *Estrutura){ int NewSize = 0; int i = 0; int temp = 1; printf("\nInsira a posicao que deseja aumentar: "); scanf("%d", &i); if(Inexistente(Estrutura, i) == 1){ printf("\nEstrutura Auxiliar Inexistente!\n"); return; //insira essa linha, pois se a estrutura não existe não tem sentido em continuar o restdo do código } printf("TAMANHO %d\n",Estrutura[i].Prox -> Sizes ); printf("\nInsira o novo numero de posições a ser adicionado na estrutura auxiliar: "); scanf("%d", &NewSize); Estrutura[i].Prox -> Sizes+= NewSize; Estrutura[i].Prox -> N = (int *)realloc(Estrutura[i].Prox -> N, Estrutura[i].Prox -> Sizes * sizeof(int)); printf("TAMANHO %d\n",Estrutura[i].Prox -> Sizes ); } Por fim, você tem que liberar a memória alocada no final, pois o "c" não faz isso automaticamente. você faz isso com "free".
  12. Não confunda goto com gotoxy. adicionado 22 minutos depois Veja se assim funciona: int main() { Menu(); int a, d = 0; do { a = getch(); // Inicio do Cursor if (a == direita) {//Move o cursor para a esquerda d++; if (d > 3) { d = 0; } if (d == 0) { gotoxy(40, 9); } if (d == 1) { gotoxy(50, 9); } if (d == 2) { gotoxy(58, 9); } if (d == 3) { gotoxy(67, 9); } } if (a == esquerda) { // Move o cursor para a esquerda d--; if (d < 0) d = 3; if (d == 1) { gotoxy(50, 9); } if (d == 2) { gotoxy(58, 9); } if (d == 3) { gotoxy(67, 9); } if (d == 0) { gotoxy(67, 9); } } } while (a != 27); return 0; } P.S. se possível, user switch//case aos invés desses vários "if"
  13. Acho que esse condicional está errado, já que são strings. label1.caption > Edit1.Text Label1 tem a hora atual, correto? E Edit1, você entra com o quê? Uma hora também? Se for comparar os valores, tem que converte de string para algum formato que seja possível comparar, como um inteiro.
  14. Pelo que entendi, se você já preestabelece uma matriz fixa no programa, o resultado sempre será o mesmo.
  15. Seu programa estava fazendo as coisas na ordem errada. Por exemplo, você invocou o "malloc" antes do usuário entrar com o "n". Outra coisa é que primeiro deve ser fornecidos os valores do array e somente depois ordená-lo. Também havia alguns erros de sintaxe. Acredito que assim vai funcionar: #include <stdio.h> #include <stdlib.h> void insertion_sort(int *A, int n) { int i,j,chave; for(i=1; i<n; i++) { chave=A[i]; j=i-1; while(j>=0 && A[j]>chave) { A[j+1]=A[j]; j= j-1; } A[j+1]= chave; } } int main() { int i,n; int *A; printf("Digite quantas posições:\n"); scanf("%d",&n); A = (int *)malloc(n *sizeof(int)); printf("Digite os numeros:\n"); for(i=0; i<n; i++) scanf("%d",&A[i]); insertion_sort(A,n); for(i=0; i<n; i++) { printf("{%d}",A[i]); } return 0; }
  16. void insere(int *vetor){ if (topo == 5){ printf("Pilha cheia/n"); }else{ printf("Digite o valor que quer incluir: "); scanf("%d", &pilha[topo]); topo++; } } void imprimir(int *vetor){ int i; if (topo == 0){ printf("Pilha vazia, não há o que imprimir\n"); }else{ for(i = 0; i < topo; i ++){ printf("Pilha[%d]: %d\n", i, pilha[i]); } } } Acredito que assim irá funcionar
  17. Isso é um pouco mais complicado, pois o tamanho do array N vai variar. Eu sugiro a seguinte solução: armazenar o tamanho que o usuário entra. Altere a estrutura Aux para acrescentar a variável tamanho: typedef struct Aux{ int *N; unsigned int tamanho; }Aux if(Inexistente(Estrutura, i) == 1){ printf("Nao existe uma estrutura auxiliar. Insira o tamanho dela: "); scanf("%d", &Tamanho); Estrutura[i].Prox = (Aux *)malloc(sizeof(Aux)); Estrutura[i].Prox->tamanho = Tamanho;// insira essa linha para salvar o tamanho Estrutura[i].Prox -> N = (int *)malloc(Tamanho * sizeof(int)); } Para imprimir: void Imprimir(Principal *Estrutura){ int i = 0; int j = 0; while(i<TAM){ printf("\n--------------------------\n"); printf("Posicao %d da estrutura Principal\n", i); printf("Elementos: "); if (Estrutura[i].Prox != NULL){ for (j = 0; j < Estrutura[i].Prox->tamanho; j++) { printf("%d, ", Estrutura[i].Prox -> N[j]); } } i++; } } Veja se funcionar (pode ter algum erro de sintaxe, pois não pude testar);
  18. Alterei seu código para permitir a entrada de mais de um letra (ex.: GG). você dev trabalha com strings e usar a função strcmp para comparar os valores. Ela retornar zero se os strings são iguais. #include <stdio.h> #include <stdlib.h> #include <time.h> #include <string.h> using namespace std; int main(int argc, char *argv[]) { char tamanho[3]; float preco; float P; float M; float G; printf("insira o preço da sua camiseta. E aperte ENTER. \n""Depois insira o tamanho da camiseta. P, M ou G. \n"); scanf("%f\n", &preco); scanf("%s", &tamanho); P = preco - (preco * 0.3); M = preco - (preco * 0.2); G = preco - (preco * 0.1); if (!strcmp(tamanho, "P") || !strcmp(tamanho, "p")) { printf("O preço da camiseta será de: %f\n", +P); } else if (!strcmp(tamanho, "M") || !strcmp(tamanho,"m")) { printf("O preço da camiseta será de: %f\n", +M); } else if (!strcmp(tamanho,"G") || !strcmp(tamanho, "g")) { printf("O preço da camiseta será de: %f\n", +G); } else { printf("Não temos descono para esse tamanho.\n O preço da camiseta será de: %f", +preco); } system("pause"); return 0; } você pode adicionar um desconto para GG agora também: float GG; GG = preco - (preco * 0.05); else if (!strcmp(tamanho, "GG") || !strcmp(tamanho,"gg")) { printf("O preço da camiseta será de: %f\n", +GG); }
  19. Sendo "tamanho" uma variável do tipo char, você só pode digitar uma letra mesmo. Se digitar mais de uma, vai dar erro mesmo, pois a próxima letra vai ser interpretada como entrada para o scanf seguinte. Tente postar seu código todo como está atualmente.
  20. Tentar entrar com os valores separados por espaço, tipo preço tamanho. Exemplo: 25 p Edit: Colocar um "\n" ao ler o preço: scanf("%f\n", &preco);
  21. A sintaxe do comando printf está incorreta: printf ("O preço da camiseta será de %f\n", P); Outra coisa, as variáveis do tipo char devem vir entre '': if (tamanho == 'P' || tamanho == 'p') ...
  22. você não está inicializando as variáveis. Por exemplo, nesta parte do código: if(med>x){ min=x; printf("maior que : %i \n", x); help=max+min; x=help/2; z=z+1; } Quando você procura um número maior que a média, max não tem valor definido no começo ainda, pode ser um número aleatório qualquer (-12039123 por exemplo). Tem que inicializar as variáveis (aquelas que você declarou no main não servem pois estão fora do escopo da função): int BuscaBinaria( int *vet, int x, int control, int num, int help){ int i,y,z,max,min,med; max = num; //incluir essa linha min = 1; //incluir essa linha Também tem alguns erros de sintaxe vet = (int *)malloc(num*sizeof(int*)); for(i=0; i<num; i++){ vet[i]=i+1; } Veja se agora funciona.
  23. Faltou você inicializar o Prox if(Inexistente(Estrutura, i) == 1){ printf("Nao existe uma estrutura auxiliar. Insira o tamanho dela: "); scanf("%d", &Tamanho); Estrutura[i].Prox = (Aux *)malloc(sizeof(Aux)); //insira essa linha Estrutura[i].Prox -> N = (int *)malloc(Tamanho * sizeof(int)); //Erro está aqui! }
  24. A syntaxe correta é: printf("A temperatura em Fahrenheit é: %f F", f)

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!