Ir ao conteúdo

Flávio Pedroza

Membro Pleno
  • Posts

    2.145
  • Cadastrado em

  • Última visita

Tudo que Flávio Pedroza postou

  1. você usa "strncpy" para copiar parte do string para outro e imprime. Por exemplo: #include <iostream> #include <string.h> int main() { int i = 2; //quais letras vou pular no começo int n = 4; //quantas letras vou copiar char str1[]= "DANILO"; char str2[7]; //7 pois são seis letras + o 0, que marca o fim do string strncpy (str2, str1+i, n); //pulei as duas primeiras letras e vou copiar quatro -> NILO str2[n] = '\0'; //marca o fim do string printf ("%s\n", str2); //imprime NILO } O exemplo só imprime um, mas você pode fazer um laço para variar "i" e "n" e terá o resultado que quer, desde de o "'O" até a palavra completa. Alternativamente, você pode usar printf desta maneira: printf ("%.*s\n", n, str1+i);
  2. scanf ("%s",&clientes[i].nome); Acredito que o certo seria, em termos do padrão: scanf ("%s",clientes[i].nome); você poderia desenvolver um programa para fazer o inverso, ao invés de salvar, ler os dados armazenados em um arquivo e transferi-los para um array na memória (ex. clientes). Após ler os dados do arquivos, você deve solicitar ao usuário o nome a ser pesquisado e depois varrer todos os endereços armazenados comparando os nomes. Veja o exemplo abaixo (não testei, pode ter alguns erro sintaxe/lógica): #include <string.h> struct dados clientes[10]; ... //ler arquivo .txt e amarzenar dados no array clientes ... //pesquisa do { char cliente[40]; printf ("Entre o nome do cliente para pesquisar:"); scanf ("%s", cliente); for (int i = 0; i < 10; i++) { if !strcmp(cliente, clientes[i].nome) { printf ("Telefone: %d", clientes[i].telefone); break; } } } while (strlen(cliente) > 0); O programa para quando você digitar um nome em branco.
  3. N é o a quantidade de pontos. No seu caso, você fixou como 2 (TAM). Σxy (somatório do produto) não é a mesa coisa que Σx*Σy (produto do somatório), assim como Σx2 (soma dos quadrados) não é igual a (Σx)2 (quadrado da soma). Vai precisar criar mais variáveis auxiliares. Alem disso o problema pede que você leia uma série de coordenadas x e y. Acho que você deveria primeiro ler o valor de N e depois criar dois vetores x e y: int n=0, i; printf("Digite um valor N \n"); scanf("%d",&n); float x[n],y[n]; //Leitura de x e y printf("Digite valores das cordenadas x e y: \n"); for(i=0; i<n; i++){ scanf("%d %d",&x[i], &y[i]); } A partir desse array de coordenadas x e y você calcula a e b . Ex.: float somax = 0, somay = 0; somaxy = 0; somax2 =0; for (int i = 0; i< n; i++) { somax+=x[i]; somay+=y[i]; somaxy = x[i]*y[i]; somax2 = x[i]*x[i]; } Veja se consegue implementa o resto.
  4. Testei e funcionou pra mim. De todo modo, uma sugestão para otimizar um pouco e imprimir apenas no final, a formula converge muito lentamente. Também removi algumas multiplicações: #include <stdio.h> #include<math.h> int main() { double pi = 0; int i = 0; int k = 4; while(pi != 3.1415926535) { pi += (k)/(2.0*i+1); // printf("%.10lf\n",pi); // remover para ir mais rápido i++; k = -k; } printf("%.10lf\n",pi); return 0; }
  5. Tenta assim while ((Math.Abs(somah1)>0.001) || (Math.Abs(somah2) > 0.001) || (Math.Abs(somah3) > 0.001)) { //Bloco de código }
  6. Vou botar um exemplo aqui e espero que ajude: Ex. 12.456 s divida 12.456 por 60 e ache o quociente inteiro e o resto (quociente 207 e resto 36) - este resto será o segundos. (TIME.segundos) divida 207 por 60 e novamente ache o quociente inteiro e o resto (quociente 3 resto 27) - este resto serão os minutos (TIME.minutos); as horas serão o quociente 3 (TIME.horas); 3h:27m:36s. Use "fmod" para determinar o resto de números com ponto flutuante. Para a função addTime você pode converter de TIME em segundos, somar, e depois converter novamente de segundos para TIME. Veja se consegue implementar o código.
  7. 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
  8. 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); }
  9. 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);
  10. 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.
  11. Pede pra mostrar também a variável sqlUpdate no catch, pois pode ter algum erro na sintaxe do comando.
  12. 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.
  13. 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; } }
  14. 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
  15. 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.
  16. 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++; } }
  17. 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".
  18. 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"
  19. Procura pelo autor Harvey Deitel
  20. 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.
  21. Pelo que entendi, se você já preestabelece uma matriz fixa no programa, o resultado sempre será o mesmo.
  22. 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; }
  23. 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
  24. 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);
  25. 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); }

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!