Ir ao conteúdo
  • Cadastre-se

nagatonie

Membro Pleno
  • Posts

    38
  • Cadastrado em

  • Última visita

Reputação

28
  1. #include <stdio.h> #include <stdlib.h> void le_distancias(int &n); void le_trajeto(); void calcula_quilometragem(int M[][], int &k, int &p[k]); int main() { int n; while (n < 4 || n > 20) { printf("Insira quantas cidades deseja calcular a quilometragem: "); scanf("%d", &n); } le_distancias(n); } void le_distancias(int &n) { int M[n][n], i, j; while (M[i] == 0 || M[j] == 0) { for (i = 0; i < n; i++) for (j = 0; j < n; j++) { printf("Insira a distancia entre as cidades NUM %i :", i + 1); scanf("%d", &M[i][j]); } } for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { printf(" %d", M[i][j]); } printf("\n"); } } void le_trajeto() { int k, i; printf("Digite o numero de cidades percorridas\n"); scanf("%d", &k); while (k < 2) { printf("Digite o numero de cidades percorridas\n"); scanf("%d", &k); }; int p[k]; for (i = 0; i < k; i++) { printf("\nTrajeto %d:", i + 1); scanf("%d", &p[i]); } } void calcula_quilometragem(int M[][], int &k, int &p[]) { int j, resp = 0; for (j = 0; j < k - 1; j++) { resp += M[p[j] - 1][p[j + 1] - 1]; } printf("Distancia: %dKM\n", resp); } alguém me ajuda com o que estou errando? desculpem mandar isso tão tarde mas eu estava sem luz, se alguém puder ajudar
  2. #include <stdio.h> #include <stdlib.h> int main(){ int n, i, j; printf("Insira quantas cidades deseja calcular a quilometragem: "); scanf("%d", &n); int M[n][n]; for(i=0; i < n; i++) for (j=0; j < n; j++ ) { printf("Insira a distancia entre as cidades numero %i :", i+1); scanf("%d", &M[i][j]); } for(int i=0; i < n; i++){ for ( int j=0; j < n; j++ ){ printf(" %d", M[i][j]); } printf("\n"); } int k,resp = 0; printf("Digite o numero de cidades percorridas\n"); scanf("%d", &k); int p[k]; for(i=0;i<k;i++) { printf("Digite a %d cidade\n", i+1); scanf("%d", &p[i]); } for(j=0;j<k-1;j++) { resp += M[p[j]-1][p[j+1]-1]; } printf("A distancia entre as cidades requisitadas eh %d\n",resp); return 0; } seria mais ou menos isso?
  3. Bom dia galera, td bem? Bom, estou tentando fazer um exercício em C mas não consigo entender a lógica para começá-lo, alguém pode me ajudar nisso? "As distâncias entre n cidades (em Km) são armazenadas em uma matriz M de n x n, de forma que a distância da cidade i para a cidade j é armazenada na posição Mij. A partir dessa matriz é possível calcular a quilometragem de um trajeto com k cidades (k >= 2). Exemplo: n = 4 M = 0 1 8 3 5 0 1 400 2 7 0 8 7 1 2 0 k = 8 Trajeto = 0 3 1 3 2 1 0 2 Quilometragem = 3 + 1 + 400 + 2 + 7 + 5 + 8 = 426 Km Crie um programa em C que lê o valor de n e, em seguida, as distâncias entre as n cidades para a matriz M. Depois, leia o valor de k e as k cidades do trajeto. Por fim, calcule e imprima a quilometragem do trajeto." meu main: #include <stdio.h> int main(){ int n; printf("Insira quantas cidades deseja calcular a quilometragem: "); scanf("%d", &n); int M[n][n]; for(int i=0; i < n; i++) for ( int j=0; j < n; j++ ) { printf("Insira a distancia entre as cidades numero %i :", i+1); scanf("%d", &M[i][j]); } for(int i=0; i < n; i++){ for ( int j=0; j < n; j++ ){ printf(" %d", M[i][j]); } printf("\n"); } return 0; } o que seria o K em questão? como eu faria isso?
  4. Bom dia! Eu to com uma dúvida em uma parte de um programa que estou utilizando struct e não consigo descobrir o que é. Se eu passar os parâmetros para a função, aparece o erro "muitos argumentos na chamada da função", e não compila. Se eu não passar, o programa roda, mas a validação sai errada. Tentei criar as variáveis na função mas como é obrigatório utilizar struct, eu descartei essa ideia. Parte do meu código: #include <stdio.h> typedef struct{ int dd, mm, yy; bool valido; }data; int valida_data(); int main() { data d; for(;;){ printf("Entre com a data (formato DD/MM/YYYY ): "); scanf("%d/%d/%d", &d.dd, &d.mm, &d.yy); valida_data(); if((d.valido==true)){ break; } } } int valida_data(){ data d; //check year if (d.yy >= 1900 && d.yy <= 2008)//checar ano { if (d.mm >= 1 && d.mm <= 12)//checar mes { //checar dias if ((d.dd >= 1 && d.dd <= 31) && (d.mm == 1 || d.mm == 3 || d.mm == 5 || d.mm == 7 || d.mm == 8 || d.mm == 10 || d.mm == 12)) d.valido = true; else if ((d.dd >= 1 && d.dd <= 30) && (d.mm == 4 || d.mm == 6 || d.mm == 9 || d.mm == 11)) d.valido = true; else if ((d.dd >= 1 && d.dd <= 28) && (d.mm == 2)) d.valido = true; else if (d.dd == 20 && d.mm == 2 && (d.yy == 2009)) d.valido = true; else printf("Data inválida.\n"); d.valido = false; } else { printf("Mês inválido.\n"); d.valido = false; } } else { printf("Ano inválido.\n"); d.valido = false; } return d.valido; } a saída: se eu adicionar os parâmetros for(;;){ printf("Data de nascimento (formato DD/MM/AAAA): "); scanf("%d/%d/%d", &p.dd, &p.mm, &p.yy); valida_data_nasc(p.dd, p.mm, p.yy); if((p.valido == false)){ break; } } aparece o erro:
  5. Criei uma função para verificar se o que foi digitado pelo usuário contém somente caracteres alfabéticos e que a palavra tenha no mínimo 5 dígitos, entretanto, meu código só lê a primeira posição do vetor, o que faz com que qualquer palavra que não tenha número na primeira posição passe. Alguém pode me ajudar? bool caracteres_alfabeticos(char alfab[]) { int i; for (i = 0; strlen(alfab); i++) { if ((alfab[i] >= 'a' && alfab[i] <= 'z' && strlen(alfab) > 4 && strlen(alfab) < 50)){ return true; } else { return false; } } } a saída:
  6. @Lucca Rodrigues muito obrigada pela ajuda!!! @arfneto infelizmente é um trabalho da faculdade cujo é proibido utilizar funções. agora que vi que entrei na minha outra conta do gmail kkk mas obrigado
  7. @JorgeGus não estou conseguindo fazer desse jeito. Eis minha última tentativa: não consigo fazer com que meu código mostre somente a subsequência de maior soma. ficou assim
  8. @JorgeGus Pode me mostrar seu código? Não consigo mostrar os maiores somatórios como o seu: minha saída:
  9. @JorgeGus não entendi. essa primeira parte eu fiz para pegar a maior soma dos elementos em k. como você fez?
  10. @JorgeGus fiz a primeira parte para a soma assim: for(i=0; i < k; i++) res += l[i]; max_atual = res; for(i = k; i < n; i++){ max_atual += l[i] - l[i - k]; if (res > max_atual){ res = res; } else{ res = max_atual; } quando adiciono essa segunda parte, for (j = 1; j <= n - k; j++){ for (z = 0; 0 < k; z++){ value += l[j + z]; } para exibir as sequencias que formam k, meu compilador fecha e não compila
  11. @JorgeGus Deixa eu ver se entendi, seria mais ou menos isso? for(j = 1; j < n - k; j++){ for(z=0; 0 < k; z++){ value = l[j] + l[z]; } }
  12. @JorgeGus isso, k sendo informado pelo usuário. como k =2, o sistema verifica o maior somatorio em grupo de 2, ex: -2, 3; 4, 1; 2, -1;
  13. @RPGStreamer Essa é minha dúvida real, não consigo fazer a manipulação do vetor. Alguma dica?
  14. Oi pessoal, feliz ano novo p vcs! Estou estudando o algoritmo de kadane em c, mas não consigo resolver um porém. Criei um código onde ele lê o valor de soma máxima e mínima, mas o objetivo é adicionar uma subsequência de k elementos de L, com maior e menor somatórios do vetor. por exemplo: L = { -2, 3, 4 , 1, 2, -1} K = 2 maior somatorio: { 4, 1} = 5 menor somatorio = { -2, 3} = 1 (primeira) | {2, -1} = 1 (ultima) A minha única dúvida é ler a subsequência do K, pois o código que fiz pega o maior somatório e o menor somatório de todo o L. for(i = 0; i < n; i++) { // n = tamanho da sequencia de l (que é digitada posteriormente pelo usuário) max_atual += l[i]; if(max_atual < 0 ){ max_atual = 0; } if (max_atual > max) { max = max_atual; } } for(i = 0; i < n; i++){ min_atual += l[i]; if(min_atual > 0 ){ min_atual = 0; } if (min_atual < min) { min = min_atual; } } Poderiam me dar uma luz?

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