Ir para conteúdo
Fórum Script Brasil

Pesquisar na Comunidade

Mostrando resultados para as tags ''struct''.

  • Pesquisar por Tags

    Digite tags separadas por vírgulas
  • Pesquisar por Autor

Tipo de Conteúdo


Fóruns

  • Programação & Desenvolvimento
    • ASP
    • PHP
    • .NET
    • Java
    • C, C++
    • Delphi, Kylix
    • Lógica de Programação
    • Mobile
    • Visual Basic
    • Outras Linguagens de Programação
  • WEB
    • HTML, XHTML, CSS
    • Ajax, JavaScript, XML, DOM
    • Editores
  • Arte & Design
    • Corel Draw
    • Fireworks
    • Flash & ActionScript
    • Photoshop
    • Outros Programas de Arte e Design
  • Sistemas Operacionais
    • Microsoft Windows
    • GNU/Linux
    • Outros Sistemas Operacionais
  • Softwares, Hardwares e Redes
    • Microsoft Office
    • Softwares Livres
    • Outros Softwares
    • Hardware
    • Redes
  • Banco de Dados
    • Access
    • MySQL
    • PostgreSQL
    • SQL Server
    • Demais Bancos
  • Segurança e Malwares
    • Segurança
    • Remoção De Malwares
  • Empregos
    • Vagas Efetivas
    • Vagas para Estágios
    • Oportunidades para Freelances
  • Negócios & Oportunidades
    • Classificados & Serviços
    • Eventos
  • Geral
    • Avaliações de Trabalhos
    • Links
    • Outros Assuntos
    • Entretenimento
  • Script Brasil
    • Novidades e Anúncios Script Brasil
    • Mercado Livre / Mercado Sócios
    • Sugestões e Críticas
    • Apresentações

Encontrar resultados em...

Encontrar resultados que...


Data de Criação

  • Início

    FIM


Data de Atualização

  • Início

    FIM


Filtrar pelo número de...

Data de Registro

  • Início

    FIM


Grupo


AIM


MSN


Website URL


ICQ


Yahoo


Jabber


Skype


Location


Interests

  1. Opa boa tarde! Estou com problema pois quero mostrar a média no for, ele até mostra a primeira média, mas depois ele fica somando e queria saber como fazer para ele não somar e mostrar a média dos 5 alunos separado. Segue a imagem:
  2. Boa noite pessoal, tudo bem com voces. Voces podem me ajurdar por favor? – Escreva um programa que com uma func¸ao chamada calcula que: • recebe como parametros duas variaveis inteiras, X e Y; • retorna em X a soma de X e Y; • retorna em Y a subtrac¸ao de X e Y . (a) Crie um arquivo de biblioteca (.h) com o nome lista08bib.h e coloque a declaraçao e prototipo da funçao calcula na biblioteca. (b) Crie um programa para chamar a funçao calcula. Salve e envie o seu arquivo com o nome programa01.c. Atençao: Lembre-se que ao final dessa lista voce devera enviar tambem o arquivo lista08bib.h.
  3. não consegui fazer com que ele gere o token com letra e número aleatório, nem passar o valor desse token pro primeiro registro (tokenGerado) devido a concatenação também, por isso o segundo registro está em char, porque assim eu podia usar strcat, mas não deu certo. ``` #include <stdio.h> #include <string.h> #include <stdlib.h> typedef struct{ char tokenGerado; int idPessoaGerou; float dataGerado; char TextoDoDocumento[100]; }PessoaToken; typedef struct{ char numeroAleatorio; char letraAleatoria; char diaTokenGerado; char mesTokenGerado; char anoTokenGerado; }Token; int main() { char letras[26] = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'}; Token tok; PessoaToken pessoa; printf("Dia token gerado: \n"); scanf("%s", &tok.diaTokenGerado); //printf("%s\n", &tok.diaTokenGerado); printf("Mes token gerado: \n"); scanf("%s", &tok.mesTokenGerado); //printf("%s\n", &tok.mesTokenGerado); printf("ano token gerado: \n"); scanf("%s", &tok.anoTokenGerado); //printf("%s\n", &tok.anoTokenGerado); tok.numeroAleatorio = rand() % 10; int i = rand() % 23; printf("%d i valor\n",i); printf("%c letra do array",letras[i]); tok.letraAleatoria = letras[i]; printf("%c numero\n", &tok.numeroAleatorio); printf("%c letra\n", &tok.letraAleatoria); /*strcpy(pessoa.tokenGerado,tok.diaTokenGerado); strcat(pessoa.tokenGerado, tok.numeroAleatorio); strcat(pessoa.tokenGerado, tok.mesTokenGerado); strcat(pessoa.tokenGerado, tok.letraAleatoria); strcat(pessoa.tokenGerado, tok.anoTokenGerado); puts(pessoa.tokenGerado);*/ return 0; } ```
  4. Estou com problemas na resolução de um exercício de linguagem C. Por que é obrigatório o uso de Função e Struct. Duas coisas que não sei usar. Será que alguém poderia resolver para mim? Grato desde já. Agência Bancaria Funções L -> Listar todos os clientes cadastrados e suas informações; C Nome Idade conta saldo-> Cadastra um cliente com Nome, Idade, Conta e Saldo; B 1 Idade -> Busca os clientes com idade menor ou igual ao informado; B 2 Idade -> Busca os clientes com idade maior que o informado; B 3 Nome -> Busca os Clientes com o Nome Informado; B 4 conta -> Busca os clientes com o número da conta informada; B 5 -> Valor total dos saldos na agência; As funções B ( 1 à 4) devem apresentar os TODOS os dados da estrutura.
  5. Oi boa tarde. Faça um programa que realize o cadastro de contas bancárias com as seguintes informações: número da conta, nome do cliente e saldo. O banco permitirá o cadastramento de apenas 15 contas e não pode haver mais que uma conta com o mesmo número. O programa deverá usar REGISTRO em sua estrutura de dados e criar um menu de opções como a seguir: Menu de Opções: 1 - Cadastrar Contas 2 - Visualizar contas 3 - Exclusão de contas 4 - Sair Então... neste exercício eu fiz uma função para cada uma das 3 primeiras opções. Na verdade não sei explicar direito o porque de ocorrer isso. Problema 1, quando mando iniciar o programa, e vou no menu 2 e depois no 3, para constatar que não tem nada cadastrado, mas ele visualiza aqueles dados tipo quando a variável esta com lixo. Problema 2, quando vou no menu 1 para cadastrar uma conta, fala que já tem conta cadastrada, quando na vdd não tem, ai vou la visualizar o que cadastrei e ela não aparece... Eu criei na main() um for que é para zerar a struct quando o programa é executado. Basicamente é isso. Primeiramente eu fiz sem utilizar as funções, tudo dentro da main, cada case com a sua própria solução, e ficou perfeito, insere, pesquisa, exclui tanto por nome quanto por conta. Mas querendo utilizar função para cada case escolhida, já não deu certo... Me ajudem. Segue o código: #include <stdio.h> #include <stdlib.h> #include <locale.h> #include <string.h> #define MAX 3 struct conta{ char cliente[50]; int cc; float saldo; }; int cadConta(){ struct conta add[MAX]; int i, ncc, contador, cont = 0; do{ printf("Digite o Numero da Conta: "); scanf("%d",&ncc); for(i=0; i<MAX; i++){ if(ncc != add[i].cc){ contador++; } } if(contador == MAX){ add[cont].cc = ncc; printf("Digite o Nome do Cliente: "); scanf("%s", &add[cont].cliente); printf("Digite o saldo: "); scanf("%f", &add[cont].saldo); printf("\nConta cadastrada com sucesso!\n"); printf("\n"); contador = 0; } else{ cont = cont - 1; printf("Conta já existe!!\n"); contador = 0; } cont++; }while(cont < MAX); system("cls"); return(0); } int visualizaConta(){ int i, tem, verificador, tipo, cc; struct conta view[MAX]; char cli[50] = {"NULL"}; do{ printf("\nSelecione a opção que melhor lhe atenda...\n"); printf("1 - Visualizar contas p/ Cliente\n"); printf("2 - Visualizar conta p/ Conta\n"); printf("3 - Visualizar todas as contas\n"); printf("4 - Sair deste Menu\n"); printf("\nDigite uma opção: "); scanf("%i", &tipo); switch(tipo){ case 1: system("cls"); printf("\n\n"); printf("Digite o nome do cliente: "); scanf("%s", &cli); tem = 0; for(i=0; i<MAX; i++){ verificador = (strcmp(cli, view[i].cliente)); if(verificador == 0){ printf("\n\n"); printf("Conta: %d - Cliente: %s - Saldo: %.2f\n", view[i].cc, view[i].cliente, view[i].saldo); tem = 1; } } if(tem == 0){ printf("\n\nNão existe conta cadastrada para este cliente!!\n"); } system("pause"); system("cls"); break; case 2: system("cls"); printf("\n\n"); printf("Digite o Numero da Conta: "); scanf("%d", &cc); tem = 0; for(i=0; i<MAX; i++){ if(cc == view[i].cc){ printf("Conta: %d - Cliente: %s - Saldo: %.2f\n", view[i].cc, view[i].cliente, view[i].saldo); tem = 1; } } if(tem == 0){ printf("\nNão existe esta conta cadastrada!!\n"); } system("pause"); system("cls"); break; case 3: for(i=0; i<MAX; i++){ printf("Conta: %d - Cliente: %s - Saldo: %.2f\n", view[i].cc, view[i].cliente, view[i].saldo); } system("pause"); system("cls"); break; default: printf("Opção de Sair... XauXau"); system("cls"); } }while(tipo != 4); return(0); } int excluir(){ int op = 0, excluir, tem, i, verificador; char excluirC[50] = {"NULL"}; struct conta exc[MAX]; do{ printf("\nSelecione a opção que melhor lhe atenda...\n"); printf("\n1 - Excluir conta p/ Conta"); printf("\n2 - Excluir conta p/ Cliente"); printf("\n3 - Sair deste Menu\n"); printf("\nDigite uma opção: "); scanf("%i", &op); switch(op){ case 1: printf("Digite o Numero da Conta: "); scanf("%d", &excluir); tem = 0; for(i=0; i<MAX; i++){ if(excluir == exc[i].cc) tem = 1; } if(tem == 1){ printf("\nConta Localizada!!\n"); } if(tem == 0){ printf("\nNão existe esta conta cadastrada!!\n"); system("cls"); } else{ for(i=0; i<MAX; i++){ if(excluir == exc[i].cc){ exc[i].cc = 0; strcpy(exc[i].cliente, "NULL"); exc[i].saldo = 0.0; printf("\nConta Excluida com sucesso!!\n"); system("pause"); system("cls"); } } } system("pause"); system("cls"); break; case 2: printf("Digite o Nome do Cliente: "); scanf("%s", &excluirC); tem = 0; for(i=0; i<MAX; i++){ verificador = (strcmp(excluirC, exc[i].cliente)); if(verificador == 0){ tem = 1; exc[i].cc = 0; strcpy(exc[i].cliente, "NULL"); exc[i].saldo = 0.0; printf("\nConta Localizada!!\n"); printf("\nConta Excluida com sucesso!!\n"); system("pause"); system("cls"); } } if(tem == 0){ printf("\nNão existe esta conta cadastrada!!\n"); system("cls"); } break; default: printf("Opção de Sair... XauXau"); system("cls"); } }while(op != 3); } int main() { setlocale(LC_ALL,"portuguese"); int num = 0, i, cadConta(), visualizaConta(), excluir(); struct conta banco[MAX]; printf("8) Faça um programa que realize o cadastro de contas bancárias com as seguintes informações: número da conta, nome do cliente e saldo. O banco permitirá o cadastramento de apenas 15 contas e não pode haver mais que uma conta com o mesmo número. O programa deverá usar REGISTRO em sua estrutura de dados e criar um menu de opções como a seguir:\nMenu de Opções:\n\n"); for(i=0; i<MAX; i++){ strcpy(banco[i].cliente, "NULL"); banco[i].cc = 0; banco[i].saldo = 0.0; } do{ printf("\nMenu de Opções:\n1 - Cadastrar Contas\n2 - Visualizar contas\n3 - Excluir contas\n4 - Sair.\n\n"); printf("\nDigite uma opção: "); scanf("%i", &num); switch(num){ case 1: system("cls || clear"); printf("", cadConta()); break; case 2: system("cls || clear"); printf("", visualizaConta()); break; case 3: system("cls || clear"); printf("", excluir()); break; case 4: system("cls || clear"); printf("Opcão de Sair!! Xau Xau\n"); break; default: system("cls || clear"); } }while(num != 4); return 0; }
  6. #include <stdio.h> #include <stdlib.h> #include <locale.h> #define const 5 struct cadastro{ int cod; char autordaobra[50]; char obra[50]; char editora[50]; }; int i, j, cad, opcao; struct cadastro livro[const]; void mostrar() { if(i != 0) { for(j=0; j<i; j++){ printf ("Código: %d\n", livro.cod); printf ("Autor da obra: %s\n",livro.autordaobra); printf ("Obra: %s\n", livro.obra); printf ("Editora: %s\n\n",livro.editora); } } else printf("Lista vazia!\n"); } void cadastro(){ if (i <const){ system("cls"); printf("1 – Inserir um novo cadastro\n"); printf("2 – Mostrar todos os cadastros\n"); printf("0 – Encerrar\n"); fflush(stdin); livro.cod = i+1; fflush(stdin); printf("Insira o nome do autor da obra %d:\n", i+1); fflush(stdin); gets(livro.autordaobra); fflush(stdin); printf("Insira o nome da obra %d:\n", i+1); gets(livro.obra); fflush(stdin); printf("Insira o nome da editora %d:\n", i+1); gets(livro.editora); fflush(stdin); system("cls"); printf("1 – Inserir um novo cadastro\n"); printf("2 – Mostrar todos os cadastros\n"); printf("0 – Encerrar\n"); i = i+1; } else printf("Sistema de cadastro lotado. Não é possível armazenar mais informações!\n"); } int main(int argc, char *argv[]) { setlocale(LC_ALL, "Portuguese"); printf("1 – Inserir um novo cadastro\n"); printf("2 – Mostrar todos os cadastros\n"); printf("0 – Encerrar\n"); i = 0; opcao = 0; do{ while(!scanf ("%d", &opcao)) { while(getchar() != '\n'); printf("Erro: opção inválida!\n"); } if (opcao > 2) {printf("Erro: opção inválida!\n"); } else switch(opcao) { case 1: cadastro(); break; case 2: mostrar(); break; } }while(opcao != 0); return 0; }
  7. Olá, estou com um exercício da faculdade que não consegui resolver, é um exercício onde preciso utilizar ponteiro para ponteiro em uma struct mas estou muito perdido na sintaxe. o exercício é o seguinte: Faça uma struct com dois campos, uma string para nome e um int para armazenar um número inteiro. Na main peça para o usuário digitar o tamanho do array da struct. Crie uma função para alocar dinamicamente esse array de struct e ler os dados digitados pelo usuário. Faça uma função que verifica os números pares digitados pelo usuário na struct e se o número for par dentro do if se chama outra função para manipular esse número par passando toda a struct, essa função deve receber a struct mas manipular apenas o número par dela e dividi-lo por 2 alterando a struct original. No final o programa deve imprimir na main o array dos números. Eu consegui fazer alocando na própria main, mas dessa forma com uma função separada não consegui. Vou deixar meu código, que deve ter vários erros mas serve pra ilustrar bem o que o exercício pede. #include <stdio.h> #include <stdlib.h> #include <locale.h> struct dados{ char nome[5]; int num; }; typedef struct dados dado; void manipula_um_par(dado **q){ **q.num=**q.num/2; } void manipula_pares(dado **q,int *x){ int i; for(i=0;i<*x;i++){ if(*(*q[i]).num%2==0){ manipula_um_par(&q[i]); } } } void define_structs(int *n, dado *q){ dado *p; int i; p = (dado *) malloc(*n*sizeof(dado)); printf("\n"); for(i=0;i<*n;i++){ printf("Digite o %dº nome: ",i+1); gets(p[i].nome); setbuf(stdin,NULL); printf("Digite o %dº número: ",i+1); scanf("%d", &p[i].num); setbuf(stdin,NULL); printf("\n"); } q=&p; } int main(){ setlocale(LC_ALL, "Portuguese_Brazil"); int n, i; dado **q; printf("Digite o tamanho do vetor de struct: "); scanf("%d",&n); setbuf(stdin,NULL); q = (dado *) malloc(n*sizeof(dado)); define_structs(&n,q); manipula_pares(q,&n); for(i=0;i<n;i++){ printf("%d\n", **q[i].num); } printf("\n"); return 0; }
  8. Olá construí este código em arvore binaria mas, está dando erro , apenas preciso fazê-lo apresentar um resultado, que é o numeral 20. alguém poderia me ajudar. #include <stdio.h> typedef struct arv Arv; struct arv { char op; float valor; struct arv *esq, *dir; }; // Implementar esta função float avalia (Arv *a) { if ((a->esq == NULL) && (a->dir == NULL)) return a->valor; else{ if(a->op == ‘+’) return avalia(a->esq) + avalia(a->dir) if(a->op == ‘-’) return avalia(a->esq) - avalia(a->dir) if(a->op == ‘*’) return avalia(a->esq) * avalia(a->dir) if(a->op == ‘/’) return avalia(a->esq) / avalia(a->dir) } } int main(void) { // Árvore para representar a operação: 5 * 3= 15 Arv no[3]; // Em vetor Arv op, val1, val2; // Em variáveis // Vetor no[0].op = '*'; no[0].esq = &no[1]; no[0].dir = &no[2]; no[1].valor = 5; no[2].valor = 3; printf("Resultado da expressao: %.2f\n", avalia(&no[0])); // Variáveis op.op = '*'; op.esq = &val1; op.dir = &val2; val1.valor = 5; val2.valor = 3; printf("Resultado da expressao: %.2f\n", avalia(&op)); }
  9. Boa Tarde pessoal, Sou totalmente leigo e iniciante se tratando de programação. Curso engenharia mecânica e depois de estudar algoritimos na faculdade , tomei gosto pela coisa. estou começando a estudar por conta linguagem C. Chegando na parte de structs , estou com um problema que não consigo achar o erro. um exercicio pede algo simples: "Implemente um programa que leia o nome , a idade e o endereço de uma pessoa e armazene esses dados em uma estrutura. Em seguida imprima na tela os dados obtidos." resolvi praticar um pouco de estrutura aninhada e digitei o seguinte código: " #include <stdlib.h> #include <stdio.h> struct endereco { char rua [50]; int num ; }; struct cadastro { char nome [50]; int idade; struct endereco ender; }; int main (){ struct cadastro c ; printf ("Nome: "); gets (c.nome); printf("\nIdade: "); scanf ("%d " ,&c.idade); printf ("\n Rua: "); gets (c.ender.rua); printf("\nNumero: "); scanf ("%d \n" , &c.ender.num); printf ("\n %s , %d anos , Rua %s , numero: %d ", c.nome , c.idade , c.ender.rua , c.ender.num); system ("pause"); return 0; } " o compilador não indicou nenhum erro. Mas , acontece o seguinte:
  10. Alguém pode me ajudar com esses 2 exercícios em C++ usando a estrutura STRUCT. grato
  11. olá, venho pedir ajuda, pois estou em um trabalho da faculdade e a dias não consigo sair do inicio, Struct e String são as coisas que mais tenho dificuldade e ele consiste nos dois. O Exercício consiste ler um arquivo .txt contendo de 8 a 20 times, armazena-los e depois criar as rodadas do campeonato. o meu problema já começa em ler os times, como armazeno eles sendo strings e depois em uma struct para o resto do exercicio? tentei umas vezes e cheguei nisso, consigo mostrar no print mas não consigo armazenar, Obrigado! #include<iostream> #include<stdio.h> #include<stdlib.h> struct times{ char time[20][15]; }; int main(){ FILE *arq; times v[20], aux; char time[15], cont; int i; arq= fopen("times.txt", "r"); while(fgets(time, 15, arq) != NULL){ printf("%s", time); fscanf("%s" &v[20].time[20]); } cont = v[20].time[20]; fclose(arq); printf("mostrado do struct:"); for(i=0; i==cont; i++); printf("%s", aux.time[20][15]); }
  12. Boa noite, primeira vez postando aqui, pessoal estou com um problema(que já me deparei em outro programa em tinha que fazer pra faculdade) espero que consigam me ajudar a achar o erro... O exercício pede para usar Struct para criar como se fosse um banco de dados de uma biblioteca do tipo Nome, Autor, Nº Paginas e Preço e depois imprimir eles... Meu código: #include <stdio.h> #include <string.h> #define NMAX 5 #define STRMAX 100 struct BIBLI { char livro[NMAX]; char autor[NMAX]; int pag; double valor; }; int main(){ struct BIBLI l[NMAX]; int i; for(i=0; i<NMAX; i++){ printf("Digite o nome do livro: \n "); fgets(l[i].livro, STRMAX, stdin); strtok(l[i].livro, "\n"); printf("Digite o autor do livro: \n "); fgets(l[i].autor, STRMAX, stdin); strtok(l[i].autor, "\n"); printf("Quantidade de paginas: \n" ); scanf("%i", &l[i].pag); printf("Valor do livro: \n"); scanf("%lf", &l[i].valor); } for(i=0; i<NMAX; i++){ printf("Nome do livro: %s \n", strlen(l[i].livro)); printf("autor: %s \n", strlen(l[i].autor)); printf("%i Paginas", l[i].pag); printf("Valor em reais: %lf", l[i].valor); printf("-------- \n"); } } O erro que ocorre é o seguinte: Digite o nome do livro: aisdjaidsajdis Digite o autor do livro: iajsdiasjdi Quantidade de paginas: 30 Valor do livro: 49,00 Digite o nome do livro: Digite o autor do livro: // ELE PULA A ENTRADA DO PRÓXIMO LIVRO
  13. uses wincrt ; type ponteiro = ^elemento; elemento = record chave : integer ; vet : array[1...3] of string ; prox : ponteiro ; end ; var p,prim,h,q : ponteiro ; i : integer; begin clrscr ; prim := nil ; new (p); h:=p; p^.chave:=1; p^.vet[1]:='ana'; p^.vet[2]:='bia'; p^.vet[3]:='lia'; writeln(p^.vet[1]); writeln(p^.vet[2]); writeln(p^.vet[3]); writeln; for i := 1 to 3 do begin new(q); q^.vet[1]:=p^.vet[1]+p^.vet[1,4-i]; q^.vet[2]:=p^.vet[2]+p^.vet[2,4-i]; q^.vet[3]:=p^.vet[3]+p^.vet[3,4-i]; writeln(q^.vet[1]); writeln(q^.vet[2]); writeln(q^.vet[3]); writeln; p:=q; end; end; #include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct elemento{ int chave; char vet[3]; int *prox; char *p ,*prim, *h, *q; }; main(){ struct elemento_l; int i; prim = NULL; p=(char*) malloc (sizeof(char)); h=&p; p.chave=1; p.vet[1]='ana'; p.vet[2]='bia'; p.vet[3]='lia'; printf("%s\n",p.vet[1]); printf("%s\n",p.vet[2]); printf("%s\n",p.vet[3]); free(p); for (i=0;i<4;i++){ q=(char*) malloc (sizeof(char)); q.vet[1]=p.vet[1] + p.vet[1,(4-i)]; q.vet[2]=p.vet[2] + p.vet[2,(4-i)]; q.vet[3]=p.vet[3] + p.vet[3,(4-i)]; printf("%s\n",q.vet[1]); printf("%s\n",q.vet[2]); printf("%s\n",q.vet[3]); p = &q; } return(0);}
  14. To com um problema em fazer um programa, ele recebe um arquivo .txt onde possui varios dados de varios tipos, como semestre (float), numero do trabalho (int), ano (int), titulo (char), descricao (char), de alguns trabalhos, há valor indeterminado de trabalhos no arquivo de texto, tenho q ler o arquivo, armazenar numa lista, ordenar em ordem crescente a partir do ano, semestre e o numero do trabalho, excluir duplicidades, inserir um novo trabalho e imprimir de formar ordenada no arquivo de saida .txt. não sei por onde começar...
  15. To com um problema em fazer um programa, ele recebe um arquivo .txt onde possui varios dados de varios tipos, como semestre (float), numero do trabalho (int), ano (int), titulo (char), descricao (char), de alguns trabalhos, há valor indeterminado de trabalhos no arquivo de texto, tenho q ler o arquivo, armazenar numa lista, ordenar em ordem crescente a partir do ano, semestre e o numero do trabalho, excluir duplicidades, inserir um novo trabalho e imprimir de formar ordenada no arquivo de saida .txt. não sei por onde começar...
  16. #include <stdio.h> #include <stdlib.h> int i = 0; int op; char lixo[100]; FILE *file, *fi; struct { char titulo[100], descrip[200], cep[10]; char rua[100], cidade[100], estado[50], bairro[100], num[10], nome[100]; int status, dat, totald, totalh; int datai[3], dataf[3], horai[2], horaf[2]; } comp[15], aux; void menu(); int main(); void cadastrar() { int diai, diaf, totald, totalh, horai, horaf, temp, temp2, temp3; in: system("cls"); printf(" Digite o titulo do compromisso : "); scanf("%[^\n]", comp[i].titulo); fflush(stdin); printf("\n Coloque aqui a descricao do mesmo : "); scanf("%[^\n]", comp[i].descrip); fflush(stdin); printf("\n Por favor digite a data inicial < dd/mm/aaaa > : "); scanf("%d/%d/%d", &comp[i].datai[0], &comp[i].datai[1], &comp[i].datai[2]); diai = comp[i].datai[0] + comp[i].datai[1] * 30 + comp[i].datai[2] * 365; comp[i].dat = diai; printf("\n Por favor digite o horario inicial < hh:mm > : "); scanf("%d:%d", &comp[i].horai[0], &comp[i].horai[1]); printf("\n Por favor digite a data final < dd/mm/aaaa > : "); scanf("%d/%d/%d", &comp[i].dataf[0], &comp[i].dataf[1], &comp[i].dataf[2]); diaf = comp[i].dataf[0] + comp[i].dataf[1] * 30 + comp[i].dataf[2] * 365; totald = diaf - diai; printf("\n Por favor digite o horario final < hh:mm > : "); scanf("%d:%d", &comp[i].horaf[0], &comp[i].horaf[1]); horai = comp[i].horai[0] * 60 + comp[i].horai[1]; horaf = comp[i].horaf[0] * 60 + comp[i].horaf[1]; fflush(stdin); printf("\n Digite o nome do local do compromisso : "); scanf("%[^\n]", comp[i].nome); fflush(stdin); printf("\n Digite o estado do compromisso : "); scanf("%[^\n]", comp[i].estado); fflush(stdin); printf("\n Digite o cidade do compromisso : "); scanf("%[^\n]", comp[i].cidade); fflush(stdin); printf("\n Digite o cep do compromisso < _____-___ > : "); scanf("%[^\n]", comp[i].cep); fflush(stdin); printf("\n Digite a rua do compromisso : "); scanf("%[^\n]", comp[i].rua); fflush(stdin); printf("\n Digite o numero do local do compromisso : "); scanf("%[^\n]", comp[i].num); fflush(stdin); printf("\nDigite o nome bairro do compromisso (apenas o nome) : "); scanf("%[^\n]", comp[i].bairro); fflush(stdin); totalh = horaf - horai; system("cls"); printf("\n\nA duracao do evento sera de: %d dia(s), %d hora(s) e %d minuto(s).", totald, totalh / 60, totalh % 60); i++; fi = fopen("save\\i.txt", "w"); fprintf(fi, "%d", i); fclose(fi); int o, j; for (o = 0; o < i - 1; o++) for (j = 0; j < i - 1; j++) { if (comp[j].dat>comp[j + 1].dat) { aux = comp[j]; comp[j] = comp[j + 1]; comp[j + 1] = aux; } } printf("\n\nDeseja.\n1. Voltar ao menu\n2. Cadastrar mais compromissos.\n\n"); scanf("%d", &op); fflush(stdin); if (op == 1) menu(); if (op == 2) goto in; } void exibirmais(); void exibirmaise() { printf("Titulo : %s\n\nDescricao :\n%s\n\n", comp[op - 1].titulo, comp[op - 1].descrip); printf("O evento ocorrera no local : %s\n\n", comp[op - 1].nome); printf("%s, %s, CEP : %s\n\n", comp[op - 1].cidade, comp[op - 1].estado, comp[op - 1].cep); printf("Bairro : %s, Rua.%s - n %s\n\n", comp[op - 1].bairro, comp[op - 1].rua, comp[op - 1].num); } void editar() { int diai, horai, horaf, j, o, opi; in: system("cls"); if (i != 0) { printf("Qual compromisso deseja editar?\n\n"); for (j = 0; j < i; j++) { printf("%d - Titulo: %s\n", j + 1, comp[j].titulo); } printf("\n"); scanf("%d", &op); system("cls"); exibirmaise(); printf("Qual informacao deseja editar?\n\n"); printf("1. Titulo. 8. Estado.\n"); printf("2. Descricao. 9. Cidade.\n"); printf("3. Data Inicial. 10. CEP.\n"); printf("4. Horario Inicial. 11. Rua.\n"); printf("5. Data Final. 12. Numero.\n"); printf("6. Horario Final. 13. Bairro.\n"); printf("7. Nome do local. 14. Ir para o Menu.\n\n"); scanf("%d", &opi); if (opi == 1) { printf(" novo titulo : "); scanf("%[^\n]", comp[op - 1].titulo); fflush(stdin); } if (opi == 2) { printf("\n Nova descricao : "); scanf("%[^\n]", comp[op - 1].descrip); fflush(stdin); } if (opi == 3) { printf("\nNova data inicial < dd/mm/aaaa > : "); scanf("%d/%d/%d", &comp[op - 1].datai[0], &comp[op - 1].datai[1], &comp[op - 1].datai[2]); diai = comp[op - 1].datai[0] + comp[op - 1].datai[1] * 30 + comp[op - 1].datai[2] * 365; comp[op - 1].dat = diai; for (o = 0; o < i - 1; o++) for (j = 0; j < i - 1; j++) { if (comp[j].dat>comp[j + 1].dat) { aux = comp[j]; comp[j] = comp[j + 1]; comp[j + 1] = aux; } } fflush(stdin); } if (opi == 4) { printf("\n Novo horario inicial < hh:mm > : "); scanf("%d:%d", &comp[op - 1].horai[0], &comp[op - 1].horai[1]); horai = comp[op - 1].horai[0] * 60 + comp[op - 1].horai[1]; horaf = comp[op - 1].horaf[0] * 60 + comp[op - 1].horaf[1]; comp[op - 1].totalh = horaf - horai; fflush(stdin); } if (opi == 5) { printf("\n Nova data final < dd/mm/aaaa > : "); scanf("%d/%d/%d", &comp[op - 1].dataf[0], &comp[op - 1].dataf[1], &comp[op - 1].dataf[2]); fflush(stdin); } if (opi == 6) { printf("\n Novo horario final < hh:mm > : "); scanf("%d:%d", &comp[op - 1].horaf[0], &comp[op - 1].horaf[1]); fflush(stdin); } if (opi == 7) { printf("\n Novo nome para o local : "); scanf("%[^\n]", comp[op - 1].nome); fflush(stdin); } if (opi == 8) { printf("\n Novo estado : "); scanf("%[^\n]", comp[op - 1].estado); fflush(stdin); } if (opi == 9) { printf("\n Nova cidade : "); scanf("%[^\n]", comp[op - 1].cidade); fflush(stdin); } if (opi == 10) { printf("\n Novo cep < _____-___ > : "); scanf("%[^\n]", comp[op - 1].cep); fflush(stdin); } if (opi == 11) { printf("\n Nova rua : "); scanf("%[^\n]", comp[op - 1].rua); fflush(stdin); } if (opi == 12) { printf("\n Novo numero : "); scanf("%[^\n]", comp[op - 1].num); fflush(stdin); } if (opi == 13) { printf("\n Novo Bairro : "); scanf("%[^\n]", comp[op - 1].bairro); fflush(stdin); } if (opi == 14) { fflush(stdin); menu(); } printf("\n\nDeseja.\n1. Voltar ao menu\n2. Editar mais compromissos.\n\n"); scanf("%d", &op); if (op == 1) menu(); if (op == 2) goto in; } else { printf("não há compromissos marcados.\n\n1. Voltar ao menu.\n\n"); scanf("%[^\n]", lixo); fflush(stdin); menu(); } } void exibirmais() { system("cls"); printf("Titulo : %s\n\nDescricao :\n%s\n\n", comp[op - 1].titulo, comp[op - 1].descrip); printf("Inicio : %d/%d/%d %d:%d\n", comp[op - 1].datai[0], comp[op - 1].datai[1], comp[op - 1].datai[2], comp[op - 1].horai[0], comp[op - 1].horai[1]); printf("Final : %d/%d/%d %d:%d\n\n", comp[op - 1].dataf[0], comp[op - 1].dataf[1], comp[op - 1].dataf[2], comp[op - 1].horaf[0], comp[op - 1].horaf[1]); printf("O evento ocorrera no local : %s\n\n", comp[op - 1].nome); printf("%s, %s, CEP : %s\n\n", comp[op - 1].cidade, comp[op - 1].estado, comp[op - 1].cep); printf("Bairro : %s, Rua.%s - n %s\n\n", comp[op - 1].bairro, comp[op - 1].rua, comp[op - 1].num); printf("0. Voltar ao menu.\n\n"); scanf("%d", &op); scanf("%[^\n]", lixo); fflush(stdin); menu(); } void exibir() { system("cls"); int j; if (i != 0) { for (j = 0; j < i; j++) { printf("%d - Titulo: %s\n\n", j + 1, comp[j].titulo); printf("Descricao:\n%s\n\n", comp[j].descrip); printf("Inicio : %d/%d/%d %d:%d\n", comp[j].datai[0], comp[j].datai[1], comp[j].datai[2], comp[j].horai[0], comp[j].horai[1]); printf("Final : %d/%d/%d %d:%d", comp[j].dataf[0], comp[j].dataf[1], comp[j].dataf[2], comp[j].horaf[0], comp[j].horaf[1]); printf("\n-------------------------\n"); } printf("\n0. Voltar ao menu.\nOu digite o numero do evento que deseja saber mais detalhes.\n"); scanf("%d", &op); if (op == 0) { fflush(stdin); menu(); } else { fflush(stdin); exibirmais(); } } else { printf("não há compromissos marcados.\n\n1. Voltar ao menu.\n\n"); scanf("%[^\n]", lixo); fflush(stdin); menu(); } } void excluir() { system("cls"); if (i != 0) { printf("deseja apagar qual compromisso?\n\n"); int j; for (j = 0; j < i; j++) printf("%d. %s\n", j + 1, comp[j].titulo); scanf("%d", &op); for (j = op - 1; j < i - 1; j++) { comp[j] = comp[j + 1]; } i--; printf("Deseja:\n1. Apagar mais compromissos.\n2. Voltar ao menu\n\n"); scanf("%d", &op); if (op == 1) { fflush(stdin); excluir(); } else if (op == 2) menu(); } else { printf("não há compromissos marcados.\n\n1. Voltar ao menu.\n\n"); scanf("%[^\n]", lixo); fflush(stdin); menu(); } } void menu() { system("cls"); printf("Agenda compromissos\n\n"); printf("1. Cadastrar compromissos\n"); if (i != 0) { printf("2. Exibir compromissos\n"); printf("3. Excluir compromissos\n"); printf("4. Editar compromissos\n"); } printf("0. Sair\n\n"); scanf("%d", &op); if (op == 1) { fflush(stdin); cadastrar(); } else if (op == 2) { fflush(stdin); exibir(); } else if (op == 3) { fflush(stdin); excluir(); } else if (op == 4) { fflush(stdin); editar(); } else if (op == 0) { fflush(stdin); return 0; } } int main() { int j; fi = fopen("save\\i.txt", "r"); fscanf(fi, "%d", &i); if (i){ file = fopen("save\\save.txt", "r"); fflush(stdin); for(j = 0; j < i; j++){ fgets(comp[j].titulo, 100, file); fgets(comp[j].descrip, 200, file); fflush(stdin); fscanf(file, "%d/%d/%d\n", &comp[j].datai[0], &comp[j].datai[1], &comp[j].datai[2]); fscanf(file, "%d:%d\n", &comp[j].horai[0], &comp[j].horai[1]); fscanf(file, "%d/%d/%d\n", &comp[j].dataf[0], &comp[j].dataf[1], &comp[j].dataf[2]); fscanf(file, "%d:%d\n", &comp[j].horaf[0], &comp[j].horaf[1]); fflush(stdin); fgets(comp[j].nome, 100, file); fgets(comp[j].estado, 100, file); fgets(comp[j].cidade, 100, file); fgets(comp[j].cep, 100, file); fgets(comp[j].rua, 100, file); fgets(comp[j].num, 100, file); fgets(comp[j].bairro, 100, file); fflush(stdin); } fclose(fi); fclose(file); } menu(); if (fi != NULL){ file = fopen("save\\save.txt", "w"); fflush(stdin); for(j = 0; j < i; j++){ fflush(stdin); fprintf(file, "%s\n", comp[j].titulo); fprintf(file, "%s\n", comp[j].descrip); fprintf(file, "%d/%d/%d\n", comp[j].datai[0], comp[j].datai[1], comp[j].datai[2]); fprintf(file, "%d:%d\n", comp[j].horai[0], comp[j].horai[1]); fprintf(file, "%d/%d/%d\n", comp[j].dataf[0], comp[j].dataf[1], comp[j].dataf[2]); fprintf(file, "%d:%d\n", comp[j].horaf[0], comp[j].horaf[1]); fprintf(file, "%s\n", comp[j].nome); fprintf(file, "%s\n", comp[j].estado); fprintf(file, "%s\n", comp[j].cidade); fprintf(file, "%s\n", comp[j].cep); fprintf(file, "%s\n", comp[j].rua); fprintf(file, "%s\n", comp[j].num); fprintf(file, "%s\n", comp[j].bairro); } fclose(file); } return 0; } *dica, antes de executar meu programa, criem uma pasta "save" na mesma pasta aonde forem compilar, pro sistema funcionar direitinho. Com meu programa eu quero ver se existe um arquivo "i.txt", se ele existir é porque existe dados cadastrados, esse meu txt se atualiza toda vez que um cadastro novo é inserido, e inicializa a variavel global i que eu tenho no meu programa pra eu poder saber aonde eu posso cadastrar e quantos cadastros já existem. O meu problema e na hora de salvar no arquivo, se vocês fizerem um cadastro, fecharem o programa e depois abrirem, o sistema funciona, mas se você fechar o programa novamente ele simplismente adiciona espaços aonde não precisa no salvamento e assim na hora da leitura o programa nunca sabe como ler. exemplo: salvei 1 1 1 1 no save.txt 1 passada - txt fica assim. 1\n1\n1\n1\n 2 passada - txt fica assim. 1\n\n1\n\n1\n\n1\n\n esses \n significam uma quebra de linha no arquivo mesmo, igual apertar enter. preciso que não importa quantas passadas, quero que o arquivo sempre fique 1\n1\n1\n1\n. podem me ajudar pf?
  17. Considera a seguinte estrutura typedef struct lista{ int idade; char nome[40]; char sexo; struct lista *prox; }LISTA; 1. Seja uma lista encadeada que armazena nomes e idades dos alunos. (A lista já existe, porem não se sabe o seu tamanho). Implemente uma funçao que devolva uma lista encadeada contendo os nomes e idades apenas das alunas(FEMININO).
  18. estou fazendo uma lista encadeada ,e tenho que gravar cadastros em .txt ,porem quando eu crio o arquivo ele fica em branco. #include<stdio.h> #include<stdlib.h> #include <time.h> #define verdadeiro 1 int codigo() { int x; srand((unsigned)time(NULL)); x=rand()%100+1; return x; } struct estacionamento{ char nome[40],modelo[40],placa[7],entradad[10],entradah[10]; int codigo,telefone; struct estacionamento *proximo,*anterior; }; struct estacionamento *inicio,*ultimo; void listaligada(struct estacionamento *); int menu(); void grava(); int abre(); void cadastro(); void exclui(); void lista(); int main (){ int aux; while(verdadeiro){ aux=menu(); for(;;){ printf("%d",aux); if(aux==1){ cadastro( ); break; } if(aux==2){ grava(); break; } if(aux==3){ abre(); break; } if(aux==4){ exclui(); break; } if(aux==5){ lista(); break; } if(aux==6){ exit(0); } else printf("\n Entre com uma opcao de 1 a 7.\n"); system ("pause"); } } } int menu(){ inicio=ultimo=NULL; int i,n; system("cls"); printf("\n\n\t\t MENU\n\n"); printf("\t1. Cadastra dados\n"); printf("\t2. Grava em arquivo\n"); printf("\t3. Abre arquivo\n"); printf("\t4. Exclui\n"); printf("\t5. Lista\n"); printf("\t6. Sai\n"); while(verdadeiro){ printf("\n\n\tentre com a opcao:"); fflush(stdin); n=scanf("%d",&i); if (!n) printf("\n Entrada errada\n"); else break; } return i; } void cadastro(int i){ struct estacionamento *p; int comp; system ("cls"); printf("\n\n\t\t cadastro\n\n"); printf("\n Tecle ENTER sobre o campo nome para sair: \n"); for(;;){ // p->codigo=codigo(); //printf("codigo: %d",p->codigo); printf("\n Nome %d: ",i+1); fflush(stdin); p=(struct estacionamento *)malloc(sizeof(struct estacionamento)); gets(p->nome); if(!p->nome[0]) break; printf("\n telefone %d: ",i+1); fflush(stdin); scanf("%d",&p->telefone); printf("\n modelo %d: ",i+1); fflush(stdin); gets(p->modelo); printf("\n Placa: "); fflush(stdin); gets(p->placa); printf("\n Entrada: "); _strdate(p->entradad); _strtime(p->entradah); printf("%s %s",p->entradad,p->entradah); p->codigo=i; listaligada(p); } } void listaligada(struct estacionamento *p){ if(inicio==NULL){ ultimo=p; inicio=p; p->proximo=NULL; p->anterior=NULL; return; } ultimo ->proximo=p; p->anterior=ultimo; ultimo=p; } void grava (){ struct estacionamento *p; FILE *fp; int i=0; char arq[40]; system ("cls"); printf("\n\n\t\t Grava em arquivo\n\n"); printf("\n Entre com o nome do arquivo:"); fflush(stdin); gets (arq); if((fp=fopen(arq,"wb"))==NULL){ printf("\n não pode abrir o arquivo %s\n",arq); system ("pause"); return; } p=inicio; while (p != NULL){ fwrite(p,sizeof(struct estacionamento),1,fp); p= p->proximo; i++; } fclose(fp); printf("\n Foram gravados %d registros \n",i); system ("pause"); } int abre(){ struct estacionamento *p; FILE *fp; int i=0; char arq[40]; system ("cls"); printf("\n\n\t\t Abre o arquivo \n\n"); printf("\n Entre com o arquivo:"); fflush(stdin); gets (arq); if ((fp=fopen(arq,"rb"))==NULL){ printf("\n não pode abrir o arquivo %s\n",arq); system ("pause"); return; } p=inicio; while(p!=NULL){ free(p); p=p->proximo; } inicio=ultimo=NULL; p=(struct estacionamento *)malloc(sizeof(struct estacionamento)); while(fread(p,sizeof(struct estacionamento),1,fp) !=0){ listaligada(p); p=(struct estacionamento *)malloc(sizeof(struct estacionamento)); i++; } fclose(fp); printf("\n foram lidos %d registros \n",i); system ("pause"); return (i); } void lista (){ struct estacionamento *p; int codigo; system("cls"); printf("\n\n\t\t LISTA\n\n"); p=inicio; while(p != NULL){ printf("\n\t nome:\t %d",p->nome); printf("\n\t telefone:\t\t %d",p->telefone); printf("\n\t modelo:\t\t %s",p->modelo); printf("\n\t placa:\t\t %.s",p->placa); printf("\n\t \t %.s",p->entradad); printf("\n\t \t %.s",p->entradah); printf("\n_______________________________\n"); p=p->proximo; } system("pause"); } void exclui(){ struct estacionamento *p,*p1,*p2; int achou=0,codigo; system("cls"); printf("\n\n\t\t Exclui \n\n"); printf("\n Entre com o codigo do registro a excluir \n"); scanf("%d",&codigo); p=inicio; while (p!=NULL){ if (p->codigo==codigo){ achou =1; if (p->anterior==NULL) if (p->proximo==NULL) inicio=ultimo=NULL; free(p); break; } else{ inicio=p->proximo; inicio->anterior=NULL; free(p); } if(p->proximo==NULL){ ultimo=p->anterior; ultimo->proximo=NULL; free(p); break; }else{p1=p->anterior; p2=p->proximo; p1->proximo=p2; p2->anterior=p1; free(p); break; } p=p->proximo; } if (achou ==0) printf("\n codigo %d não localizado\n",codigo); else printf("\n Sucesso. Registro codigo %d excluido\n",codigo); system ("pause"); }
  19. Olá gostaria de ajuda com o programa abaixo, é um trabalho escolar onde devo usar lista dinâmica, lista duplamente ligada e arvore binária. // Lista Dinamica struct pessoa { int cpf; char nome[50]; int tel; }p [10]; void adicionar(); void menu(); int opcao; int LD_posicao = 0; void inicializar(); void listar(); //----------------------// //Lista DUplamente Ligada struct no { struct no *anterior; char *dado; struct no *proximo; }; struct no *novo_no(char *dado); void ornenar_no(char dado); void adicionar_no_final(); void adicionar_no_inicio(); void adicionar_no_meio(); struct no *inicio; struct no *novo; struct no *aux; struct no *anterior; char LDL_nome[50]; // int main() { inicializar(); opcao = 0; while(opcao !=3) { menu(); switch(opcao) { case 1: adicionar(); break; case 2: listar(); break; } } return 0; } void inicializar() { } void menu() { printf("1 - Adicionar\n"); printf("2 - Listar\n"); printf("3 - AdicionarOrdenando\n"); scanf("%d", &opcao); } void adicionar() { printf("Digite o cpf:\n "); scanf("%d", &p[LD_posicao].cpf); printf("Digite o tel:\n "); scanf("%d", &p[LD_posicao].tel); printf("Digite o nome:\n "); fflush(stdin); scanf("%s",p[LD_posicao].nome); printf("recebeu antes -> %s ", p[LD_posicao].nome); Gostaria de passar como parâmetro esse conteúdo "nome" (que foi alocado em uma estrutura simples) para estrutura "struct no *novo_no(char *dado)", isso é possível? Se não, como faço pra fazer uma alocação dinâmica de memoria usando uma variável/vetor do tipo char. ordenar_no(p[LD_posicao].nome); LD_posicao++; } void listar_LD() { int i; for(i = 0; i < LD_posicao; i++) { printf("nome: %s - ", p.nome); printf("cpf: %d - ", p.cpf); printf("tel: %d \n", p.tel); } } struct no *novo_no(char *dado) como posso mudar essas estutura para que ela trabalhe alocando variavel/ vetor do tipo char? { struct no *n; n = malloc(sizeof(struct no)); if(!n) { printf("não consegui alocar memoria!\n"); exit(-1); } n->anterior = 0; n->dado=dado; n->proximo = 0; printf("n->dado %s \n", n->dado); printf("dado %s \n",&dado); return n; } void ordenar_no(char *dado) { printf("recebeu depois -> %s \n ", dado); // PROBLEMA ESTA NA LINHA 134 (novo=novo_no(*dado)) , NOVO NÃO ESTA RECEBENDO novo_no(*dado); //n->dado RECEBE O VALOR DE DADO POREM DE ALGUMA FORMA NÃO RETORNA PARA O PARAMETRO (*dado) da funcao *novo_no novo = novo_no(*dado); printf("novo-> %s \n", *novo); if(inicio == 0) { inicio = novo; printf("inicio primeiro if= %s\n",inicio); printf("inicio->dado= %s\n",inicio->dado); } else { printf("inicio->dado segundo if = %s\n", inicio->dado); printf("*dado = %s\n", *dado); // decidir aonde inserir if(strcmp (inicio->dado,dado) == 1) adicionar_no_inicio(); else { aux = inicio; while((aux->proximo != 0) && (strcmp (aux->dado,dado) == -1)) { aux = aux->proximo; } if(aux->proximo == 0 && (strcmp (dado,aux->dado) == 1)) adicionar_no_final(); else adicionar_no_meio(); } } } Observação: o programa esta incompleto mesmo.
  20. OI pessoal, é a primeira vez que participo do fórum. Não estou conseguindo escrever um programa em que necessito passar os dados de uma struct por por parametro para uma função e armazenar esses dados em uma fila... Só pra ficar contextualizado a questão é: === questão ===== Um lava jato possui duas filas de automóveis que vão chegando e são atendidos quando chega a sua vez. Primeiramente é definido um tipo abstrato de dado (TAD) para comportar os dados de um automóvel: um identificador numérico, seu nome/modelo (com máximo de 30 caracteres); e o preço do serviço. Em seguida, é criado um tipo abstrato de dado (TAD) que define a “fila” de automóveis, para comportar um máximo de 50 carros. E, por último, são criadas duas filas de automóveis, como duas variáveis globais: fila1 e fila2. De posse do trecho de código fornecido em Linguagem C: · Crie a função “enqueue” ou “insert”, que recebe por parâmetro os dados de um automóvel (encapsulados em um tad) e insere na fila escolhida pelo cliente (prefira passar a fila por parâmetro e por referencia), verificando se existe espaço na fila, e emitindo mensagem de erro caso a fila esteja cheia. · Crie uma função “inicializa”, que esvazia as duas filas no inicio do dia de trabalho. · Crie a função “remove”, que retira um automóvel de uma fila indicada. · Crie também uma função “preço_ganho”, que recebe uma fila de automóveis como parâmetro e retorna o valor arrecadado pelo posto naquele dia. · No main, chame estas rotinas para: o Colocar alguns automóveis nas duas filas (4 ou 5 em cada uma bastam). o Retire pelo menos um automóvel de uma das filas. o E por último calcule seus valores totais. === fim questão ===== OBS.: Não estou pedindo pra resolverem pra mim. So queria um norte... Esse é o codigo que estou trabalhando.. #include <stdio.h> #include <stdlib.h> #define TAM 50 struct automovel{ int num; char modelo[30]; double preço; }; struct lava_jato{ automovel a[TAM]; int ini, fim; }; struct lava_jato fila1, fila2; // -- assinatura das funções void inicializa(); lava_jato insert(); void enqueue(lava_jato fila); // --- Main --- int main() { fila1.fim = -1; insert(); }// --- End main --- void inicializa(lava_jato){ fila1.ini = 0; fila1.fim = -1; fila2.ini = 0; fila2.fim = -1; }; // --- Enfileirar --- lava_jato insert(lava_jato fila){ printf("Digite o modelo: "); scanf("%c", &fila1.a[fila1.fim].modelo); printf("Digite o preço: "); scanf("%l", &fila1.a[fila1.fim].preço); fila = fila1; enqueue(fila); } void enqueue(lava_jato fila) { if(fila1.fim<TAM-1){ fila1.fim++; fila1.a[fila1.fim]=fila; }else{ printf("Fila cheia "); } }
  21. -Fazer um programa que cria uma estrutura livro, que contém os elementos título, ano de edição, número de páginas e preço. Criar uma variável desta estrutura que é um vetor de elementos. Ler os valores para a estrutura e imprimir a média do número de páginas do livros. Além disso mostrar os dados do livro com maior preço e menor preço, inclusive se houver mais de um livro com o mesmo preço. Tô iniciando agora em struct, e, dada a questão, tentei montar um programa que seguisse operando o que ela pede, mas por algum motivo que n consigo identificar, o programa só lê o título do primeiro livro. Estou usando o Dev C++, escrevendo em C, gostaria que alguém me ajudasse a identificar o problema (Irei publicar o código por completo para melhor visualização, pontuando o que fiz em cada pedaço). #include <stdio.h> #define T 2 int main () { struct dados { char titulo[71]; int ano; int pag; float preco; }; struct dados livro[T]; // Declarando estrutura e variáveis. int i; float mediap = 0.0; float maior = 0.0, menor = 9999999999999999.9; for (i = 0; i < T; i++) { // Entrada de dados. printf ("\nLivro %d:\n", i + 1); printf ("\n\tInsira o titulo do livro: "); // JUSTO AQUI, RECEBO APENAS O PRIMEIRO TÍTULO. fgets (livro[i].titulo, 71, stdin); printf ("\n\tInsira o ano de edicao: "); scanf ("%d", &livro[i].ano); printf ("\n\tInsira o numero de paginas: "); scanf ("%d", &livro[i].pag); printf ("\n\tInsira o preco no mercado: "); scanf ("%f", &livro[i].preco); if (livro[i].preco < menor) menor = livro[i].preco; if (livro[i].preco > maior) maior = livro[i].preco; mediap = mediap + livro[i].pag; } //system ("cls"); // Limpa a tela printf ("\n\nA media do numero de paginas dos livros: %.2f\n", (float)mediap/T); // Saída de dados printf ("\nO maior preco dentre os livros: %.2f\n", maior); printf ("\nO menor preco dentre os livros: %.2f\n", menor); return 0; } Segue o programa que tentei fazer:
  22. Ola Tudo bom?, Cheguei na famosa Matéria Estrutura de Dados na Faculdade, é estou com um duvida. Criei Uma struct e um vetor para armazenar os valores nele, ate então tudo certo, só que na hora de eu fazer a busca está me dando um erro, nem compila. || ERRO (39 40 C:\Users\Hugo Guedes\Documents\C\BuscaSequencial.c [Error] incompatible type for argument 2 of 'strcmp') || O código do programa #include <stdio.h> #include <string.h> int main(void){ struct Alunos { char nome[30]; float matematica, fisica, media; }; struct Alunos alunos[5]; int count; char Busca; for(count = 0 ; count < 5 ; count++) { fflush(stdin); printf("\nNome do aluno %d: ", count+1); gets(alunos[count].nome); printf("Nota de matematica: "); scanf("%f", &alunos[count].matematica); printf("Nota de fisica: "); scanf("%f", &alunos[count].fisica); alunos[count].media = (alunos[count].matematica + alunos[count].fisica)/2; } printf("\nExibindo nomes e medias:\n"); for(count = 0 ; count < 5 ; count++) { printf("\nAluno %d\n", count+1); printf("Nome: %s\n",alunos[count].nome); printf("Media: %.2f\n", alunos[count].media); } printf("\n Digite o nome do aluno a ser buscado: \n"); printf("Aluno: "); scanf("%c", &Busca); for(count = 0; count <= 5; count+1 || strcmp(Busca,alunos[count]) = 0 ){ // Erro esta aqui printf(" | "); } return 0; } -------------------------------- OBS: Não sou muito bom em C, Estudo para Area da WEB
  23. Boa noite, eu estou utilizando um integrador de n-corpos todo escrito em C que é o pacote chamado Rebound. Para o meu projeto o ideal seria adicionar novas variáveis em uma das estruturas do Rebound. A estrutura que o pacote vem é: struct reb_particle { double x; ///< x-position of the particle. double y; ///< y-position of the particle. double z; ///< z-position of the particle. double vx; ///< x-velocity of the particle. double vy; ///< y-velocity of the particle. double vz; ///< z-velocity of the particle. double ax; ///< x-acceleration of the particle. double ay; ///< y-acceleration of the particle. double az; ///< z-acceleration of the particle. double m; ///< Mass of the particle. double r; ///< Radius of the particle. double lastcollision; ///< Last time the particle had a physical collision. struct reb_treecell* c; ///< Pointer to the cell the particle is currently in. uint32_t hash; ///< hash to identify particle. void* ap; ///< Functionality for externally adding additional properties to particles. struct reb_simulation* sim; ///< Pointer to the parent simulation. }; Eu gostaria de adicionar, dado a seguir, as variáveis externamente, sem alterar o código fonte do pacote. double J2; //coeficiente J2 de achatamento planetário double J4; //coeficiente J4 de achatamento planetário double beta; //relação adimensional da força gravitacional e de radiação solar Eu realmente não sei qual seria a maneira ideal de fazer isso, eu sei que ele tem isso: void* ap; ///< Functionality for externally adding additional properties to particles. Mas eu nunca trabalhei com algo do gênero e nem sei se realmente serve para o que eu estou querendo. Não sei se consegui explicar direito o que eu preciso, só tentei ser o mais direta possível, mas se alguém puder dar alguma luz, ficarei muito grata.
  24. Olá!! Gostaria de saber como fazer para que um ponteiro guarde os dados de uma struct(nome, codigo, endereço, salario) e quando eu digitasse o código ele me traria as informações presentes nele. Alguém pode me ajudar? Aqui está a parte que vou precisar fazer as alterações: switch(cod){ case 1://alterações no cadastro de pacientes printf("Insira o código do paciente para alterações: "); scanf("%d",&pac.cod_pac); break; case 2://alterações no cadastro de médicos while(cod==2){ } break; case 3://excluir cadastro de pacientes while(cod==3){ } break; case 4://excluir cadastro de médicos while(cod==4){ } break; }
×
×
  • Criar Novo...