Ir ao conteúdo
  • Cadastre-se

Talyson Maia

Membro Pleno
  • Posts

    40
  • Cadastrado em

  • Última visita

Tudo que Talyson Maia postou

  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; }
  16. @codigo rápido Uhuu, eu consegui fazer com que aparecesse todos no listar Mas ficou algo meio feio, porquê tipo: quando eu listo os atletas o menu também aparece. Lá no cadastro e no remover o menu não aparece, somente na parte de listar alunos. Sabe o porquê? #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct { char nome[20]; int matricula; int idade; float peso; float altura; char posicao[100]; int operacao; } play; play cadastra_play() { play a; 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"); 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) { v = (play*) realloc(v, (*n + 1) * sizeof(play)); if (v == 0) { printf("Ops! não estamos conseguindo inserir o aluno"); } 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 for(int j = i; j < *n - 1; j++) { v[j] = v[j+1]; } v = (play*) realloc(v, (*n - 1) * sizeof(play)); if (v == 0) { printf("Ops! não foi possivel remover alunos"); return 0; } (*n)--; break; } } return v; } //______________________________________ void lista_play(play *v, int *n) { 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); } } //_____________________________________________ int main() { int i, n = 0; play *v = 0; int mat = 0; char oper = 0; do{ printf("===MENU=== \n"); printf("Escolha:\nI... Cadastrar Aluno\nR... Remove Aluno\nL... Listar alunos \n"); scanf(" %c", & oper); system("cls"); switch (oper) { case 'I': ; play novo = cadastra_play(); v = insere_play(v, &n, novo); break; case 'R': scanf("%d", &mat); v = remove_play(v, &n, mat); break; case 'L': lista_play(v, &n); case 'S': system("exit"); break; default: printf("opcao invalida"); break; } } while(oper != 'S'); //for (i = 0; i < n; i++) //printf("%s\n%d\n%d\n%.1f\n%.2f%s", v[i].nome,v[i].matricula, v[i].idade, v[i].peso, v[i].altura, v[i].posicao); free(v); return 0; }
  17. Não não, você não deve desistir. Sua ajuda ta sendo essencial pra mim, graças a ela eu consegui resumir bem mais o meu código e organizar. O problema é comigo, estou aprendendo c há pouco tempo e fico muito confuso com tudo. Eu agradeço de mais por toda sua ajuda. @codigo rápido Tentarei fazer isso agora, obrigado. Acho que entendi bem e faz sentido, se o while ficar repetindo ali é claro que vai salvar só uma função kkkk, que vacilo meu
  18. @arfneto Cara, eu me sinto tão burro vendo sua explicação. Você me deu uma faca e queijo na mão e mesmo assim não estou conseguindo aplicar. Estou há um tempão quebrando a cabeça com esse código, desde ontem a noite. Eu agradeço muito pela sua atenção @codigo rápido AAA, eu consegui fazer a parte de listar e excluir. Agora o único problema é que quando eu faço mais de dois cadastros, ele só lista uma pessoa. #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct { char nome[20]; int matricula; int idade; float peso; float altura; char posicao[100]; int operacao; } play; play cadastra_play() { int num_oper = 0; play a; do { 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); printf("Deseja cadastrar mais aluno? (1 - para sim e 2- para não )\n"); scanf("%d", & num_oper); system("cls"); } while (num_oper == 1); printf("\n"); return a; } play * insere_play(play *v, int *n, play novo) { v = (play*) realloc(v, (*n + 1) * sizeof(play)); if (v == 0) { printf("Ops! não estamos conseguindo inserir o aluno"); } 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 for(int j = i; j < *n - 1; j++) { v[j] = v[j+1]; } v = (play*) realloc(v, (*n - 1) * sizeof(play)); if (v == 0) { printf("Ops! não foi possivel remover alunos"); return 0; } (*n)--; break; } } return v; } //______________________________________ void lista_play(play *v, int *n) { printf("\nSegue a lista de alunos cadastrados por ordem de cadastro: "); 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); } } //_____________________________________________ int main() { int i, n = 0; play *v = 0, x; int mat = 0; printf("===MENU=== \n"); //system("cls"); char oper = 0; while (oper != 'S') { printf("Escolha:\nI... Cadastrar Aluno\nR... Remove Aluno\nL... Listar alunos \n"); scanf(" %c", & oper); system("cls"); switch (oper) { case 'I': ; play novo = cadastra_play(); v = insere_play(v, &n, novo); break; case 'R': scanf("%d", &mat); v = remove_play(v, &n, mat); break; case 'L': lista_play(v, & n); case 'S': system("exit"); break; default: printf("opcao invalida"); break; } } //for (i = 0; i < n; i++) //printf("%s\n%d\n%d\n%.1f\n%.2f%s", v[i].nome,v[i].matricula, v[i].idade, v[i].peso, v[i].altura, v[i].posicao); free(v); return 0; }
  19. @arfneto Não consegui compreender essa explicação, acho que é muito complexo para eu fazer dessa forma. Vou tentar estudar mais um pouco esse modelo que você mandou e aplicar no meu código. Eu realmente não entendi, mas agradeço muito
  20. @codigo rápido O meu continua sem lsitar, eu fiz algumas mudanças (coloquei uma função para listar) e na saída fiz aquilo que voce colocou no seu código. O meu roda normal, mas não lista. voce poderia conferir? Por favor #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct { char nome[20]; int matricula; int idade; float peso; float altura; char posicao[100]; int operacao; } play; play cadastra_play() { int num_oper = 0; play a; do { printf("Digite o seu nome: \n"); scanf(" %[^\n]", 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]", a.posicao); printf("Deseja cadastrar mais aluno? (1 - para sim e 2- para não )\n"); scanf("%d", & num_oper); system("cls"); } while (num_oper == 1); printf("\n"); return a; } play * insere_play(play * v, int * n, play novo) { v = (play * ) realloc(v, ( * n + 1) * sizeof(play)); if (v == 0) { printf("Ops! não estamos conseguindo inserir o aluno"); } 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) { v[i] = v[ * n - 1]; v = (play * ) realloc(v, ( * n - 1) * sizeof(play)); if (v == 0) { printf("Ops! não foi possivel remover alunos"); return 0; } ( * n) --; break; } } return v; } //______________________________________ play * lista_play(play * v, int * n) { printf("\nSegue a lista de alunos cadastrados por ordem de cadastro: "); for (int i = 0; i < n; i++) { printf("%s\n%d\n%d\n%.1f\n%.2f%s", v[i].nome, v[i].matricula, v[i].idade, v[i].peso, v[i].altura, v[i].posicao); } } //_____________________________________________ int main() { int i, n = 0; play * v = 0; int mat; printf("===MENU=== \n"); char oper = 0; while (oper != 'S') { printf("Escolha:\nI... Cadastrar Aluno\nR... Remove Aluno\nL... Listar alunos \n"); scanf(" %c", & oper); system("cls"); switch (oper) { case 'I':; play novo = cadastra_play(); v = insere_play(v, & n, novo); break; case 'R': v = remove_play(v, & n, mat); break; case 'L': v = lista_play(v, & n); case 'S': oper='S'; break; default: printf("opcao invalida"); break; } } for (i = 0; i < n; i++) printf("%s\n%d\n%d\n%.1f\n%.2f%s", v[i].nome,v[i].matricula, v[i].idade, v[i].peso, v[i].altura, v[i].posicao); free(v); return 0; }
  21. Eu alterei esse exit e criei uma função para listar pessoas, mas mesmo assim ainda não vai #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct { char nome[20]; int matricula; int idade; float peso; float altura; char posicao[100]; int operacao; } play; play cadastra_play() { int num_oper = 0; play a; do { printf("Digite o seu nome: \n"); scanf(" %[^\n]", 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]", a.posicao); printf("Deseja cadastrar mais aluno? (1 - para sim e 2- para não )\n"); scanf("%d", & num_oper); system("cls"); } while (num_oper == 1); printf("\n"); return a; } play * insere_play(play * v, int * n, play novo) { v = (play * ) realloc(v, ( * n + 1) * sizeof(play)); if (v == 0) { printf("Ops! não estamos conseguindo inserir o aluno"); } 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) { v[i] = v[ * n - 1]; v = (play * ) realloc(v, ( * n - 1) * sizeof(play)); if (v == 0) { printf("Ops! não foi possivel remover alunos"); return 0; } ( * n) --; break; } } return v; } //______________________________________ play * lista_play(play * v, int * n) { printf("\nSegue a lista de alunos cadastrados por ordem de cadastro: "); for (int i = 0; i < n; i++) { printf("%s\n%d\n%d\n%.1f\n%.2f%s", v[i].nome, v[i].matricula, v[i].idade, v[i].peso, v[i].altura, v[i].posicao); } } //_____________________________________________ int main() { int i, n = 0; play * v = 0; int mat; printf("===MENU=== \n"); char oper = 0; while (oper != 'S') { printf("Escolha:\nI... Cadastrar Aluno\nR... Remove Aluno\nL... Listar alunos \n"); scanf(" %c", & oper); system("cls"); switch (oper) { case 'I': ; play novo = cadastra_play(); insere_play(v, & n, novo); break; case 'R': v = remove_play(v, & n, mat); break; case 'L': v = lista_play(v, & n); case 'S': system("exit"); default: printf("opcao invalida"); break; } } //for (i = 0; i < n; i++) //printf("%s\n%d\n%d\n%.1f\n%.2f%s", v[i].nome,v[i].matricula, v[i].idade, v[i].peso, v[i].altura, v[i].posicao); free(v); return 0; }
  22. Olá, boa tarde e boa sexta-feira. Estou fazendo um código para registrar alguns atletas que desejam fazer parte do time de futebol da minha sala. No entanto, não estou conseguindo fazer a opção para aparecer uma lista com as pessoas que se inscreveram. Alguém pode me ajudar? #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> typedef struct { char nome[20]; int matricula; int idade; float peso; float altura; char posicao[100]; int operacao; } play; play cadastra_play() { play a; printf("Digite o seu nome: \n"); scanf(" %[^\n]", 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: "); scanf("%s", & a.posicao); printf("\n"); printf("Obrigado pelo cadastro"); sleep(2); return a; } play * insere_play(play * v, int * n, play novo) { v = (play * ) realloc(v, ( * n + 1) * sizeof(play)); if (v == 0) { printf("Ops! não estamos conseguindo inserir o aluno"); } 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) { v[i] = v[ * n - 1]; v = (play * ) realloc(v, ( * n - 1) * sizeof(play)); if (v == 0) { printf("Ops! não foi possivel remover alunos"); return 0; } ( * n) --; break; } } return v; } int main() { int num_oper = 0, i, n = 0; play * v = 0; int mat; char oper = 0; while (oper != 'S') { system("cls"); printf("===MENU=== \n"); printf("Escolha: I... Cadastrar Aluno\nR: Remove Aluno\nS: Sair do programa \n"); scanf(" %c", & oper); switch (oper) { case 'I': ; play novo = cadastra_play(); insere_play(v, & n, novo); break; case 'R': scanf("%d\n", & mat); v = remove_play(v, & n, mat); break; case 'L': //inserir para listar case 'S': exit(1); break; default: printf("opcao invalida"); break; } } for (i = 0; i < n; i++) printf("%s\n%d\n%d\n%.1f\n%.2f%s", v[i].nome, v[i].matricula, v[i].idade, v[i].peso, v[i].altura, v[i].posicao); free(v); return 0; }
  23. @Matheus Dutra Sim sim, eu compreendi. Mas acho que nada do que você respondeu tem sentido com a pergunta. Acho que a pergunta ainda continuo vazia.
  24. Olá, bom dia. Eu vi uma pergunta em um slide do meu curso e eu não consegui pensar em uma resposta para essa pergunta. Ela é ''Como um mesmo algoritmo pode ser executado tanto em hardware quanto em software?'' Alguém poderia me explicar?

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