Ir ao conteúdo

nagatonie

Membro Pleno
  • Posts

    36
  • Cadastrado em

  • Última visita

Tudo que nagatonie postou

  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. @Flávio Pedroza Muito obrigada!!!
  6. 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:
  7. @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
  8. @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
  9. @JorgeGus Pode me mostrar seu código? Não consigo mostrar os maiores somatórios como o seu: minha saída:
  10. @JorgeGus não entendi. essa primeira parte eu fiz para pegar a maior soma dos elementos em k. como você fez?
  11. @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
  12. @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]; } }
  13. @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;
  14. @RPGStreamer Essa é minha dúvida real, não consigo fazer a manipulação do vetor. Alguma dica?
  15. 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?
  16. oi galera, to com uma dúvida mt grande em relação a LÓGICA de uma questão, eu cheguei a fazer o código mas acredito que realmente não entendi o que é pedido, alguém me ajuda? a questão: Crie um programa C para ler uma sequência S de n números inteiros positivos x1, x2, x3, ..., xn não repetidos e, em seguida ler um número inteiro k. Por fim, verifique se existem pelo menos dois segmentos de números consecutivos de comprimento k, onde os números do segundo segmento são o quadrado dos números do primeiro segmento, obedecendo a ordem. O programa deverá imprimir as posições iniciais dos dois segmentos na sequência S e os próprios segmentos; ou "não encontrado", caso os segmentos não existam. a) n >= 4. b) 2 ≤ k < n c) Considere a primeira posição de S como 0 (zero). d) Deverão ser implementadas, pelo menos, as seguintes funções: • void le_sequencia(int sequencia[], int n): para ler a sequência de n números. • bool procura_segmento(int sequencia[], int n, int k, int &pos_seg1, int &pos_seg2): para retornar as posições dos segmentos 1 e 2. A função deve retornar verdadeiro se encontrou os segmentos; ou falso, caso contrário.
  17. @Midori Deu certo! Mas quando vou imprimir a lista de matriculas na turma A e B, aparece valores aleatórios, e a parte de repetição eu fiz mas não sei como implementar no codigo: #include <stdio.h> #include <string.h> #include <stdlib.h> void le_turma (int n) { int matricula; char nome[50]; for(int j=0; j<n; j++) { printf("Digite o nome do aluno: "); scanf("%s", nome, 50,stdin); printf("Digite a matricula do aluno: "); scanf("%d", &matricula); while(matricula < 100000 || matricula > 999999) { printf("matricula invalida! Insira novamente sua matricula: "); scanf("%d", &matricula); } } } void repetidos(int A[], int B[], int i, int j) { int encontrou=0; for(i = 1; i <=6; i++) for(j = 1; j <=6; j++) if(A[i] == B[j]) { encontrou = 1; printf("Matricula encontrada nas duas turmas!"); } if(encontrou == 0) { printf("Nenhum valor repetido!"); } } int main() { int n, k; printf("Digite a quantidade de alunos na turma A: "); scanf("%i", &n); le_turma(n); printf("Digite a quantidade de alunos na turma B: "); scanf("%i", &k); le_turma(k); printf("LISTA DE ALUNOS CADASTRADOS NA TURMA A: %i \n", &n); printf("---------------------------------------------------------\n"); printf("LISTA DE ALUNOS CADASTRADOS NA TURMA B: %i \n", &k); printf("MATRICULAS REPETIDAS: "); repetidos(); return 0; }
  18. @Midori Meu código tá assim, mas tem algo de errado porque quando começa a ler para no nome #include <stdio.h> #include <string.h> #include <stdlib.h> void le_turma (int n) { int turma=0; int matricula; char nome; for(int j=0; j<n; j++) { printf("Digite o nome do aluno: "); scanf("%s", nome); printf("Digite a matricula do aluno: "); scanf("%d", &matricula); while(matricula < 100000 || matricula > 999999) { printf("matricula invalida! Insira novamente sua matricula: "); scanf("%d", &matricula); } turma++; } } void repetidos(int A[], int B[], int a, int b) { } int main() { int n, k; printf("Digite a quantidade de alunos na turma A: "); scanf("%i", &n); le_turma(n); printf("Digite a quantidade de alunos na turma B: "); scanf("%i", &k); le_turma(k); return 0; }
  19. @Midori vou corrigir
  20. @Midori Por enquanto meu programa ta assim #include <stdio.h> #include <string.h> #include <stdlib.h> void le_turmaA (int n) { int matricula[6]; char *nome; printf("Insira a quatidade de alunos na turma A: "); scanf("%i", &n); for(int j=0; j<n; j++) { printf("Digite o nome do aluno: "); scanf("%s", nome); printf("Digite a matricula do aluno: "); scanf("%d", &matricula[6]); while(matricula[6] < 100000 || matricula[6] > 999999) { printf("matricula invalida! Insira novamente sua matricula: "); scanf("%d", &matricula[6]); } } } void le_turmaB (int k) { int matricula[6]; char *nome; printf("Insira a quatidade de alunos na turma B: "); scanf("%i", &k); for(int j=0; j<k; j++) { printf("Digite o nome do aluno: "); scanf("%s", nome); printf("Digite a matricula do aluno: "); scanf("%d", &matricula[6]); while(matricula[6] < 111111 || matricula[6] > 999999) { printf("matricula invalida! Insira novamente sua matricula: "); scanf("%d", &matricula[6]); } } } void repetidos(int A[], int B[], int a, int b) { } int main() { int n, k; le_turmaA (n); le_turmaB (k); return 0; }
  21. @Felipecfk errei na hora de usar o || e confundi com o &&, pois a matricula deve ser um numero de 6 digitos onde zeros a esquerda não contam. @codigo rápido Meu compilador está com algum problema que não consigo resolver, esses erros simples não aparecem pra mim na hora de compilar o que acaba gerando mais duvida, mas entendi sim! muito obrigado pela ajuda
  22. @devair1010 Um professor ministra aulas de Programação para duas turmas (turma A e turma B). Por um erro no sistema acadêmico, alguns alunos que se inscreveram na turma A, também foram inscritos na turma B. O professor precisa de um programa que leia as matrículas de todos os alunos da turma A, depois leia as matrículas de todos os alunos da turma B e, ao final, imprima as matrículas dos alunos que estão inscritos na turma A e na turma B. Implemente, em C, esse programa. Restrições: a) Matrícula é um número inteiro positivo de 6 dígitos (zeros à esquerda não contam). b) A turma A tem n alunos, onde n > 0. c) A turma B tem k alunos, onde k > 0. 3 d) n pode ser igual ou diferente de k. e) A leitura dos valores das variáveis n e k e as declarações dos vetores devem ser feitas, obrigatoriamente, na função main. f) Deverá ser implementada a função le_turma que lê os dados de uma turma. g) Deverá ser implementada a função repetidos que calcula e imprime as matrículas repetidas das turmas A e B. h) Não são permitidas variáveis globais.
  23. @devair1010 Esse é meu programa como está no momento, tentei usar o laço for mas não está funcionando @codigo rápido #include<stdio.h> int main () { int i, n, k,turmaA, turmaB, matricula; // turmaA recebe n alunos, turmaB recebe k alunos char nome; printf("Insira a quatidade de alunos na turma A: "); scanf("%d", &n); for(int i=0; i<n; i++) { printf("Digite o nome do aluno: "); scanf("%s",&nome); getchar(); printf("Digite a matricula do aluno: "); scanf("%d", &matricula); while(matricula > 999999 && matricula < 111111)// matrícula é um número inteiro positivo de 6 dígitos (zeros à esquerda não contam). { printf("Matricula invalida! Insira novamente sua matricula: "); scanf("%d", &matricula); } } }
  24. Oi pessoal, to criando um programa onde preciso que o programa leia as matrículas de todos os alunos da turma A, depois leia as matrículas de todos os alunos da turma B e, ao final, imprima as matrículas dos alunos que estão inscritos na turma A e na turma B. Estou com dúvida na parte do programa repetir o comando para armazenar as informações, ou seja printf("Insira a quatidade de alunos na turma A: "); scanf("%d", &n); a partir do n fornecido, repetir n vezes printf("Digite o nome do aluno: "); scanf("%s",&nome); getchar(); printf("Digite a matricula do aluno: "); scanf("%d", &matricula); while(matricula > 999999 && matricula < 111111){ printf("Matricula invalida! Insira novamente sua matricula: "); scanf("%d", &matricula); e depois armazenar em turmaA para que eu prossiga com o código. Alguém tem alguma sugestão com o que posso usar?
  25. @Midori Seu programa serviu para um exercício meu, a única diferença é que o número que aparece no meio deveria ser 2 1 1 1 1 2 1 1 1 1 e no seu aparece o zero. 1 1 1 1 0 1 1 1 1 Nas especificações do meu trabalho deve ser 3 ≤ N < 100, N sendo a dimensão (int m[N][N];), e cheguei a mudar uma parte do código para ver se funcionava int matriz[N][N] = {0}; retirei o {0}, e a matriz ficou 1 1 1 1 -2 1 1 1 1 Poderia me ajudar a resolver?

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