Ir ao conteúdo
  • Cadastre-se

Talyson Maia

Membro Pleno
  • Posts

    40
  • Cadastrado em

  • Última visita

Reputação

29
  1. @.if boa observação, muito obrigado. Ademais, agradeço muito a @Midorie ao @Lucca Rodriguespela ajuda. Entendi perfeitamente
  2. Estou lendo um livro programação em C e tô em uma parte sobre macro. Eu fiz um código com uma macro #define para dizer se o número é divisível por 10. A minha dúvida é: por que utilizamos essa barra \ ? Em qual momento preciso utilizar? eu não achei em nenhum livro ou página da internet falando a respeito. \ (barra invertida) #include <stdio.h> #define MACRO(x) \ \ if(x % 10 == 0) \ printf("True\n"); \ else \ printf("False\n"); \ int main() { int x; scanf("%d", &x); MACRO(x); }
  3. Olá gente, bom dia. Eu estou estudando banco de dados do zero, tô fazendo questões e acompanhando playlist da internet. Tem uma questão que eu não consegui entender, nem mesmo com ajuda do google. São duas perguntas, o item a é na verdade o b. Mas a pergunta da questão 5 eu respondi, eu só não entendi essa pergunta do item ''a'' (que deveria ser o B). Como eu faria para centralizar? Eu só consigo achar a definição de centralização no livro. obs.: minha resposta para a primeira pergunta: eu teria que modificar os dados nas tabelas pre_requisito, turma e disciplina, ademais também seria necessário alterar a coluna numero_pre_requisito na tabela pre_requisito
  4. @arfneto Que explicação maravilhosa. Consegui resolver o problema e dá continuidade ao código através dos seus comentários. Agradeço de coração.
  5. @Midori @Midori Isso, desalocar memória. Acho que não fui muito específico no meu enunciado. Eu também fazer assim: void vetor_destroi(Vetor * vetor) { //destrua data delete [] data; //destrua a struct delete Vetor *vetor; } você acha que ta correto?
  6. Olá, boa tarde. Estou estudando estrutura de dados e absorvendo o máximo de conteúdo através de um livro (já que não estou achando tanta coisa na internet). Todavia, fiquei preso em um assunto de uma aula por causa de um exercício. Eu não estou conseguindo resolver a segunda função e não tenho certeza sobre a minha resposta na primeira. Alguém poderia me dá uma luz sobre a segunda função (Vetor_destroi). obs.: O que está dentro das funções são as minhas respostas ou comando do que é para fazer. #include <iostream> #include <sstream> using namespace std; struct Vetor { int capacidade; int tam; int * data; }; Vetor * Vetor_criar(int capacidade) { Vetor *data = new Vetor[capacidade]; tam = 0; this->capacidade = capacidade; return data; } void Vetor_destroi(Vetor * vetor) { //destrua data //destrua a struct }
  7. @arfneto Eu entendi sim como funciona a torre de hanói. Eu entendi o que a questão pede. Só não consegui entender porque a função foi chamada duas vezes. " } else { torre(n - 1, orig, aux, dest); cout << orig << " -> " << dest << endl; torre(n - 1, aux, dest, orig); "
  8. Olá, boa noite. Eu estava vendo alguns códigos fáceis de jogos no youtube. Eu vi um sobre a torre de hanói e fiquei curioso. Eu marquei alguns pontos do código e queria entender o porquê disso. Eu marquei em vermelho as partes do código que eu não entendi. Logo abaixo do código tem as minhas dúvidas. _____________________________________________________________ #include <iostream> using namespace std; void torre(int n, char orig, char dest, char aux) { if(n == 1) { cout << orig << " -> " << dest << endl; return; } else { torre(n - 1, orig, aux, dest); cout << orig << " -> " << dest << endl; torre(n - 1, aux, dest, orig); } } int main() { int n; cin >> n; torre(n, 'A', 'C', 'B'); } Entrada: 3 Saída: A -> C A -> B C -> B A -> C B -> A B -> C A -> C _____________________________________________________________ 1. Isso é uma função void, porquê tem um retorno sem nada? 2. Vocês conseguem entender qual o motivo de chamar a função duas vezes? Tentei usar a minha lógica pra entender o porque ele chama antes do cout e depois, mas eu não consegui entender.
  9. @arfneto Ajeitei um pouco o meu código e ele passou em alguns testes, no entanto ficou em um. O meu código: #include <iostream> #include <iomanip> using namespace std; struct Aluno { int matricula; char nome [100]; double media; }; int acharAluno(Aluno *a, int size, int matric) { for(int i = 0 ; i < size ; i++) { if(a[i].matricula == matric) { cout << a[i].nome << endl; cout << fixed << setprecision(1) << a[i].media; break; } if(a[i].matricula == matric) { cout << "não ENCONTRADA"; } } } int main () { int size; cin >> size; Aluno a[size]; for(int i = 0 ; i < size ; i++) { cin >> a[i].matricula; cin.ignore(); cin.get(a[i].nome, 100); cin >> a[i].media; } int matric; cin >> matric; acharAluno(a, size, matric); return 0; } Teste que ele ficou: (não aparece nenhuma resposta). --- Input --- 4↵ 5↵ Joao·da·Silva↵ 2.5↵ 3↵ Maria·dos·Santos↵ 8.2↵ 8↵ Jose·de·Souza↵ 7↵ 2↵ Ana·Lima↵ 3.3↵ 1↵ --- Program output --- --- Expected output (exact text)--- não·ENCONTRADA corrigindo: o segundo if é: if(a[i].matricula != matric)
  10. Olá, boa tarde. Estou tentando fazer um programa em c++ para imprimir os dados de um aluno. Primeiro eu preencho os dados dos alunos e depois vou escolher uma matricula para exibir os dados desse aluno especificamente. Todavia, não está aparecendo nada. #include <iostream> #include <iomanip> using namespace std; struct Aluno { int matricula; char nome [100]; double media; }; void acharAluno() { Aluno a; cin >> matricula; if(matricula == a.matricula) { cout << a.nome << endl; cout << a.media; } } int main () { int size; cin >> size; Aluno a[size]; for(int i = 0 ; i < size ; i++) { cin >> a[i].matricula; cin.ignore(); cin.get(a[i].nome, 100); cin >> a[i].media; } acharAluno(); return 0; }
  11. @arfneto nesse printf teste, caso eu não queira testar, mas sim chamar os numeros para digitar, eu coloco um scanf ao invés desses números?
  12. @arfneto Eu achei essa questão em um site inglês chamado Euler, por isso tava muito confuso. Eu consegui resolver, realmente eu estava errando a forma de introdução da função e também no vetor.
  13. Olá, boa tarde. Eu estou tentando fazer uma função c que obrigatoriamente tenha o seguinte protótipo: int somaMultip(int t[ ], int size, int limite) A função somaMultip vai encontrar a soma de todos os números entre 1 e limite-1 que são múltiplos de algum número do vetor t de tamanho size. Se listarmos todos os números naturais abaixo de 20 que são múltiplos de 3 ou 5, obteremos 3, 5, 6, 9, 10, 12, 15 e 18. A soma desses múltiplos é 78. Na entrada: Uma quantidade n, seguida de n números inteiros. Um número limite. Na saída a soma de todos os números entre 1 e limite-1 que são múltiplos de algum dos números entrados anteriormente. Aqui é até onde fui até agora: #include <stdio.h> int somaMulti(int t[], int size, int limite) { int soma = 0; scanf("%d", &size); for(int i = 0; i < size; ++i){ scanf("%d", t[i]); scanf("%d", &limite); for(int j = 1 ; j <= limite-1 ; j++) { if(v[size]%limite == 0 || v[size+1]%limite == 0) { soma += j; } } } printf("%i\n", soma); return soma; } int main () { int size = 0; int soma_multiplos(int t[], int size, int limite); return 0; }
  14. @arfneto Eu não consegui entender.... Eu tentei assim, mas não foi:
  15. Olá, eu fiz um sistema de cadastro para o time de futebol da minha faculdade. No entanto, eu não estou conseguindo salvar os dados cadastrados em texto no meu computador. Alguém poderia me instruir a salvar arquivos e também ler esses arquivos? #include <stdio.h> #include <stdlib.h> //possui funções envolvendo alocação de memória, controle de processos, conversões e outras #include <string.h> //Esta biblioteca contém funções que manipulam strings. typedef struct { char nome[30]; //vetor de caractere com 30 posições int matricula; int idade; float peso; float altura; char posicao[100]; //vetor de caractere com 100 posições //int operacao; } play; //nome da estrutura. Essa estrutura guarda as minhas informações sobre o aluno que deseja se inscrever. typedef struct { char coment[100]; int size; char nome[30]; int rg; int number; char ender[100]; char plano[30]; } clube; clube socio_clube() { clube b; int op = 0; printf("\nOla, bem vindo ao cadastro para se tornar socio de um clube.\n"); printf("\nPLANOS DISPONIVEIS: \n"); printf("Ouro -- 20 reais/mes\n"); printf("Prata -- 15 reais/mes\n"); printf("Bronze -- 10 reais/mes\n"); //sleep(1); printf("\nBem vindo ao cadastro de socios. Coloque seus dados e em breve entraremos em contato para falarmos sobre o pagamento\n"); printf("Digite o seu nome: \n"); scanf(" %[^\n]s", b.nome); printf("Digite o seu RG: \n"); scanf("%d", & b.rg); printf("Digite o seu numero para contato: \n"); scanf("%d", & b.number); printf("Digite o seu endereco: \n"); scanf(" %[^\n]s", b.ender); printf("Digite o nome do plano que voce deseja: \n"); scanf(" %[^\n]s", b.plano); //sleep(1); system("cls"); printf("Obrigado. voce retornara ao menu principal"); //sleep(1); system("cls"); } clube * insere_clube(clube * t, int * m, clube nv) { //t muda v -- m muda n t = (clube * ) realloc(t, ( * m + 1) * sizeof(clube)); ///altere o tamanho do vetor v para conter *n+1 elementos, pondo endereço em v. (A funcao modifica o tamanho da memoria previamente alocada apontada por *ptr para aquele especificado por num. O valor de num pode ser maior ou menor que o original) if (t == 0) { printf("Ops! não estamos conseguindo inserir o aluno"); } //colocamos o jogador novo na última posição do vetor (posicao *n) t[ * m] = nv; ( * m) ++; return t; } clube * remove_associado(clube * t, int * m, int rg) { //rg no lugar de matricula for (int j = 0; j < * m; j++) { if (t[j].rg == rg) { // 1 2 3 4 | 1 3 3 4 | 1 3 4 4 | 1 3 4 ////se a matrícula do i-ésimo elemento do vetor é igual à 'matrícula' passada como parâmetro //for(int j = i; j < *m - 1; j++) { t[j] = t[( * m) - 1]; ////copiando último elemento do vetor para a posição i } //estamos realocando o vetor para conter um elemento a menos, pondo endereço em v t = (clube * ) realloc(t, ( * m - 1) * sizeof(clube)); //quando não for possivel realocar vai aparecer essa msg: if (t == 0 && ( * m) != 1) { //antigamente não dava certo porque removia o ultimo elemento e ficava com v = 0, aí ele entrava na condição printf("Ops! não foi possivel remover o associado"); return 0; } ( * m) --; break; } printf("Removemos o associado. Agora voce retornara ao menu principal.\n"); //sleep(3); system("cls"); //retornando o endereço de memória do vetor realocado return t; } void achar_socio(clube * t, int * m, int acharrg, int senha) { if (senha == 785) { printf("Ola colaborador, qual associado voce deseja ver? \n"); scanf("%d", & acharrg); for (int j = 0; j < * m; j++) { if (t[j].rg == acharrg) { printf("\n%s\n%d\n%d\n%s\n%s\n", t[j].nome, t[j].rg, t[j].number, t[j].ender, t[j].plano); } } } else { printf("senha incorreta\n"); } do { printf("Deseja retornar ao menu principal? Sim (1)\n"); scanf("%d", & senha); if (senha == 1) { printf("Obrigado por conferir"); //sleep(1); system("cls"); } } while (senha != 1); } void lista_socio(clube * t, int * m, int senha) { printf("\nSegue a lista de todos associados: \n"); for (int j = 0; j < * m; j++) { printf("\n%s\n%d\n%d\n%s\n%s\n", t[j].nome, t[j].rg, t[j].number, t[j].ender, t[j].plano); } do { printf("Deseja retornar ao menu principal? Sim (1)\n"); scanf("%d", & senha); if (senha == 1) { printf("Obrigado por conferir"); //sleep(1); system("cls"); } } while (senha != 1); } play cadastra_play() { play a; //declarei uma variavel ''a'' do tipo(estrutura) play printf("Digite o seu nome: \n"); scanf(" %[^\n]s", a.nome); printf("Digite sua matricula: \n"); scanf("%d", & a.matricula); printf("Digite sua idade: \n"); scanf("%d", & a.idade); printf("Digite seu peso: \n"); scanf("%f", & a.peso); printf("Digite sua altura: \n"); scanf("%f", & a.altura); printf("Digite a posicao que voce pretende jogar: \n"); scanf(" %[^\n]s", a.posicao); system("cls"); //win ; ''clear'' linux printf("\n"); printf("Obrigado pelo cadastro. Agora voce retornara ao menu principal.\n"); //sleep(3); system("cls"); return a; } play * insere_play(play * v, int * n, play novo) { //ponteiro que aponta para estrutura do tipo play, outro para um tipo inteiro e uma variavel novo; v = (play * ) realloc(v, ( * n + 1) * sizeof(play)); ///altere o tamanho do vetor v para conter *n+1 elementos, pondo endereço em v. (A funcao modifica o tamanho da memoria previamente alocada apontada por *ptr para aquele especificado por num. O valor de num pode ser maior ou menor que o original) if (v == 0) { printf("Ops! não estamos conseguindo inserir o aluno"); } //colocamos o jogador novo na última posição do vetor (posicao *n) v[ * n] = novo; ( * n) ++; return v; } play * remove_play(play * v, int * n, int matricula) { for (int i = 0; i < * n; i++) { if (v[i].matricula == matricula) { // 1 2 3 4 | 1 3 3 4 | 1 3 4 4 | 1 3 4 ////se a matrícula do i-ésimo elemento do vetor é igual à 'matrícula' passada como parâmetro //for(int j = i; j < *n - 1; j++) { v[i] = v[( * n) - 1]; ////copiando último elemento do vetor para a posição i } //estamos realocando o vetor para conter um elemento a menos, pondo endereço em v v = (play * ) realloc(v, ( * n - 1) * sizeof(play)); //quando não for possivel realocar vai aparecer essa msg: if (v == 0 && ( * n) != 1) { //antigamente não dava certo porque removia o ultimo elemento e ficava com v = 0, aí ele entrava na condição printf("Ops! não foi possivel remover alunos"); return 0; } ( * n) --; break; } printf("Removemos o aluno. Agora voce retornara ao menu principal.\n"); //sleep(3); system("clear"); //retornando o endereço de memória do vetor realocado return v; } void achar_play(play * v, int * n, int acharmat, int senha) { if (senha == 785) { printf("Ola colaborador, qual inscricao voce deseja conferir? Digite a matricula do inscrito: \n"); scanf("%d", & acharmat); for (int i = 0; i < * n; i++) { if (v[i].matricula == acharmat) { printf("\n%s\n%d\n%d\n%.1f\n%.2f\n%s\n", v[i].nome, v[i].matricula, v[i].idade, v[i].peso, v[i].altura, v[i].posicao); } } } else { printf("senha incorreta\n"); } do { printf("Deseja retornar ao menu principal? Sim (1)\n"); scanf("%d", & senha); if (senha == 1) { printf("Obrigado por conferir"); //sleep(1); system("cls"); } } while (senha != 1); } void lista_play(play * v, int * n, int senha) { printf("\nSegue a lista de alunos cadastrados por ordem de cadastro: \n"); for (int i = 0; i < * n; i++) { printf("\n%s\n%d\n%d\n%.1f\n%.2f\n%s\n", v[i].nome, v[i].matricula, v[i].idade, v[i].peso, v[i].altura, v[i].posicao); } do { printf("Deseja retornar ao menu principal? Sim (1)\n"); scanf("%d", & senha); if (senha == 1) { printf("Obrigado por conferir"); //sleep(1); system("cls"); } } while (senha != 1); } int main() { int i, j, n = 0, m = 0, senha = 0; play * v = 0; clube * t = 0; int mat = 0, doc = 0; char oper = 0; //algumas dessas variaveis acima(como n, mat, oper) serão passadas por referências pra função do { printf("\t\t===SEJA BEM VINDO AO SISTEMA DO TORNEIO DE FUTEBOL DE QUIXADA===\n"); printf("===MENU ATLETAS=== ===MENU CLUBES===\n"); printf("Escolha:\nA... Cadastrar Aluno E... Se tornar socio do clube\n"); printf("B... Remove Aluno F... Remover socio\n"); printf("C... Listar alunos G... informações de um socio (restrito) \n"); printf("D... Achar aluno H... Listar o nome de todos os socios\n"); printf("E... Sair do menu S... sair do menu\n"); printf("\n"); printf(" \tESCOLHA A OPCAO DO MENU QUE voce DESEJA ENTRAR:\n"); scanf(" %c", & oper); system("cls"); switch (oper) { case 'A': case 'a': ; play novo = cadastra_play(); v = insere_play(v, & n, novo); break; case 'B': case 'b': printf("Digite a matricula do aluno que voce deseja remover: "); scanf("%d", & mat); v = remove_play(v, & n, mat); break; case 'C': case 'c': lista_play(v, & n, senha); break; case 'D': case 'd': printf("\nAcesso restrito. Digite a senha: \n"); scanf("%d", & senha); achar_play(v, & n, mat, senha); break; case 'E': case 'e': ; clube nv = socio_clube(); t = insere_clube(t, & m, nv); break; case 'F': case 'f': scanf("%d", & doc); printf("Escreva seu rg para cancelar o seu socio"); t = remove_associado(t, & m, doc); break; case 'G': case 'g': printf("\nAcesso restrito. Digite a senha: \n"); scanf("%d", & senha); achar_socio(t, & m, doc, senha); break; case 'H': case 'h': lista_socio(t, & m, senha); break; case 'S': system("exit"); break; default: printf("Opcao invalida. Tente novamente: \n"); break; } } while (oper != 'S'); free(v); //desaloca a porção de memória alocada return 0; }

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