Search the Community

Showing results for tags 'struct'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • 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

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


AIM


MSN


Website URL


ICQ


Yahoo


Jabber


Skype


Location


Interests

Found 52 results

  1. 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.
  2. #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; }
  3. 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; }
  4. 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; }
  5. Boa Tarde a todos, gostaria de pedir a vocês que me ajudem pois estou desenvolvendo um trabalho para faculdade na qual tenho que fazer um sistema que utiliza struct e funções. A minha dificuldade está na parte que tenho que fazer uma função que realize a venda. Trecho do texto a seguir. 4. Realizar uma venda: são fornecidos os códigos dos produtos e o sistema imprime na tela os nomes dos produtos, seus preços e o total; (para realizar uma venda é necessário ver se o produto tem o estoque necessário para a venda). Minha dificuldade está na parte que tenho que passa os códigos do produtos, exibir seus nomes, preços e total da compra. Até cheguei a fazer essa opção no meu código mais o jeito que fiz funciona apenas de 1 em 1, aí todo hora preciso ficar voltando na função para efetuar outras vendas. Gostaria de fazer isso de uma vez só. Se alguém estiver disposto a me ajudar ficaria muito grato. Estou usando Dev C++ versão 5.10 para a construção desse sistema. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ #include<stdio.h> #include<stdlib.h> #include<locale.h> /* Autor: Diego Disciplina: Linguagem de programação 1 */ //CONSTANTE PARA CONTROLAR QUANTIDADE DE DADOS #define QTREG 30 //ESTRUTURA UTILIZADA PARA CADASTRAR PRODUTOS typedef struct{ int codigo; char nome[30]; int quantidade; float preço; }REGPRODUTO; //CRIA VARIAVEL DO TIPO regproduto REGPRODUTO produto[QTREG]; //VARIAVEIS GLOBAIS float caixaAtual = 800.00; //CABEÇALHO DAS FUNÇÕES QUE SERÃO USADAS //CABEÇALHO DA FUNÇÃO INSERIR UM PRODUTO NO ESTOQUE int cadastrar(); //CABEÇALHO DA FUNÇÃO AUMENTAR O ESTOQUE DE UM PRODUTO void alterarEstoque(int pCodgio, int pQuantidade); //CABEÇALHO DA FUNÇÃO MODIFICAR O PREÇO DE UM PRODUTO void modificarPreco(int pCodigo, float pPreco); //CABEÇALHO DA FUNÇÃO REALIZAR VENDA float venda(); //CABEÇALHO DA FUNÇÃO CONSULTAR O ESTOQUE DOS PRODUTOS void listaProduto(int pQtProduto); //CABEÇALHO DA FUNÇÃO CONSULTAR O SALDO DO CAIXA void consultarSaldo(); int main(void){ int op = 0; setlocale(LC_ALL,"Portuguese"); while(op != 7){ printf("\n\n\t** Mercadinho - Sistema de gerenciamento de mercadoria 2015 **\n\n\n"); printf("MENU\n\n1 - Cadastrar Produto\n2 - Atualizar Estoque\n3 - Alterar preço produto"); printf("\n4 - Realizar venda\n5 - Consultar estoque\n6 - Consultar saldo do caixa\n7 - Sair\n"); scanf("%d",&op); system("cls"); switch(op){ case 1://OPÇÃO CADASTRAR PRODUTO int qtProduto; qtProduto = cadastrar(); break; case 2:{//OPÇÃO ATUALIZAR ESTOQUE int pCodigo, pQuantidade; printf("Digite o código do produto que deseja atualizar o estoque:"); scanf("%d",&pCodigo); printf("Deseja alterar quantidade do produto: %s - quantidade: %d \n",produto[pCodigo].nome,produto[pCodigo].quantidade); printf("Nova quantidade:"); scanf("%d",&pQuantidade); fflush(stdin); system("pause"); alterarEstoque(pCodigo, pQuantidade); } break; case 3:{//OPÇÃO ALTERAR PREÇO DO PRODUTO int pCodigo; float pPreco; printf("Digite o código do produto que deseja modificar o preço:"); scanf("%d",&pCodigo); printf("Deseja modificar o preço do produto: %s - preço: %0.2f \n",produto[pCodigo].nome,produto[pCodigo].preço); printf("Novo preço:"); scanf("%f",&pPreco); fflush(stdin); system("pause"); modificarPreco(pCodigo, pPreco); } break; case 4://OPÇÃO DE REALIZAR VENDA int pCodigo; float lucro; lucro = venda(); caixaAtual = caixaAtual + lucro; break; case 5://OPÇÃO DE LISTAR PRODUTOS listaProduto(qtProduto); break; case 6://CONSULTAR SALDO NO CAIXA consultarSaldo(); break; case 7://OPÇÃO SAIR DO PROGRAMA exit; break; default:// EXIBI MENSAGEM DE OPÇÃO INVALIDA CASO DIGITE UM NUMERO QUE NÃO TENHA NO MENU printf("Opção inválida"); break; } } system("pause"); return 0; } //CORPO DA FUNÇÕES //FUNÇÃO INSERIR UM PRODUTO NO ESTOQUE int cadastrar(){ char opSub; int cont=0,qtProdutoCad=0; float compra; do{ produto[cont].codigo = cont; fflush(stdin); printf("Digite o nome do produto:"); gets(produto[cont].nome); printf("Digite a quantidade:"); scanf("%d",&produto[cont].quantidade); fflush(stdin); printf("Digite o preço:"); scanf("%f",&produto[cont].preço); fflush(stdin); caixaAtual = caixaAtual - produto[cont].preço; qtProdutoCad = qtProdutoCad + cont; cont++; printf("Deseja cadastrar um novo produto sim(s) ou não(n)?"); scanf("%c",&opSub); }while(opSub == 's' or opSub == 'S'); return qtProdutoCad; } //FUNÇÃO AUMENTAR O ESTOQUE DE UM PRODUTO void alterarEstoque(int pCodigo, int pQuantidade){ produto[pCodigo].quantidade = pQuantidade; } //FUNÇÃO MODIFICAR O PREÇO DE UM PRODUTO void modificarPreco(int pCodigo, float pPreco){ produto[pCodigo].preço = pPreco; } //FUNÇÃO REALIZA VENDA float venda(){ int pCodigo; float lucro; printf("Informe o código do produto"); scanf("%d",&pCodigo); if(produto[pCodigo].quantidade < 0){ printf("Produto indisponivel"); }else{ printf("\t %s - \t %1.2f",produto[pCodigo].nome,produto[pCodigo].preço); lucro = lucro + produto[pCodigo].preço; } printf("\t\t\t Total: %1.2f",lucro); return lucro; } //FUNÇÃO CONSULTAR SALDO void consultarSaldo(){ printf("Saldo atual em caixa: %1.2f",caixaAtual); } //FUNÇÃO CONSULTAR O ESTOQUE DOS PRODUTOS void listaProduto(int pQtProduto){ int i, qtProduto; qtProduto = pQtProduto; for(i=0; i<qtProduto; i++){ printf("\tCódigo - %d \tNome - %s \tQuantidade - %d \n",produto.codigo,produto.nome,produto.quantidade); } }
  6. 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)); }
  7. 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:
  8. Eric Anholete

    Ajuda em STRUCT

    Alguém pode me ajudar com esses 2 exercícios em C++ usando a estrutura STRUCT. grato
  9. 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]); }
  10. 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
  11. 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);}
  12. 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...
  13. 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...
  14. #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?
  15. 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).
  16. 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"); }
  17. 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.
  18. 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 "); } }
  19. -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:
  20. 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
  21. 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.
  22. 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; }
  23. Olá galera, esse é o meu primeiro post, sou novo em programação e neste fórum. Peço desculpas se a pergunta é muito básica para os usuários de nível avançado. Sou novo em programação e C é minha primeira linguagem na qual comecei a desenvolver. Tenho uma proposta de trabalho e gostaria de uma ajuda para resolver um problema quando estou executando. O programa está rodando beleza, mas durante a execução na entrada do primeiro struct o programa pede 4 entradas, ao invés de 3 (nome, matricula, e media). Poderiam me ajudar a tirar essa entrada extra? Desde já agradeço a atenção. #include<stdio.h> #include<string.h> struct aluno{//define tipo de dados da estrutura aluno char str1[100]; int matricula; int media; }; int main (void) { void receberCadastro(struct aluno lista[5]);//chamada da função receberCadastro de Alunos void printfCadastro(struct aluno lista[5]);//chamada da função printfCadastro de Alunos struct aluno listaCadastro[5]; receberCadastro(listaCadastro); printfCadastro(listaCadastro); system("pause"); return 0; } void receberCadastro (struct aluno lista [5]){//define entrada de dados para a estrutura int i; for (i = 0; i < 5; ++i) { printf("%i aluno\n nome\n matricula\n media\n ", i + 1); scanf("%s\n %i\n %i\n", &lista.str1, &lista.matricula, &lista.media); } } void printfCadastro(struct aluno lista[5]){//define a saída de dados da estrutura int i; for ( i = 0; i < 5; ++i){ printf("Aluno %i\n Nome = %s\n Matricula = %i\n Media = %i\n", i + 1, lista.str1, lista.matricula, lista.media); } }
  24. Criei uma lista encadeada onde tenho 3 strcuts para cadastrar pessoa, O bug que acontece é que apos eu inserir o primeiro cadastro os telefones continuam acumulado no primeiro registro, emails também, olhe como está na imagem anexada. struct agenda { char matricula[20]; char nome[30]; struct agenda *prox; struct tel *t; struct mail *m; }; struct tel{ char telefone[20]; struct tel *prox; }; struct mail{ char email[30]; struct mail *prox; }; Eu uso essas tres structs por que por exemplo uma pessoa pode ter mais de um telefone ou mais de um email. Minhas funções de inserir: void insereTel(struct tel **t,char tel[]){ struct tel *p,*q; p=(struct tel*)malloc(sizeof(struct tel)); strcpy(p->telefone,tel); p->prox=*t; *t=p; } void insereMail(struct mail **m,char mail[]){ struct mail *p; p=(struct mail*)malloc(sizeof(struct mail)); strcpy(p->email,mail); p->prox=*m; *m=p; } void inserePessoa (struct agenda **L, struct tel *T,struct mail *M, char n[], char end[]){ struct agenda *p; p=(struct agenda*)malloc(sizeof(struct agenda)); strcpy(p->matricula,n); strcpy(p->nome,end); p->prox=*L; p->t=T; p->m=M; *L=p; } Eu também mando os dados pelo menu quando ele seleciona a opção para fazer o registro: main(){ struct agenda *Lista; struct tel *Tel; struct mail *Mail; int op; char matricula[20], nome[30], telefone[20], email[20]; char no; Lista=criaAgenda(); Tel=criaTel(); Mail=criaMail(); do{ system("cls"); printf("\n\n"); printf("\n[1] - Cadastra Aluno --Falta arrumar bug dos tel"); printf("\n[2] - Pesquisa Aluno (Matricula)"); printf("\n[3] - Remove Aluno"); printf("\n[4] - Total de alunos"); printf("\n[5] - Total de telefones"); printf("\n[6] - Limpar Lista"); printf("\n[7] - Salva em Disco"); printf("\n[8] - Carrega lista"); printf("\n\nDigite -> "); fflush(stdin); scanf("%d",&op); switch (op){ case 1: printf("\nMatricula -> "); fflush(stdin); scanf("%s",matricula); printf("\nNome -> "); fflush(stdin); scanf("%s",nome); do{ printf("\nTelefone -> "); fflush(stdin); scanf("%s",telefone); insereTel(&Tel,telefone); printf("\nPossui mais telefones -> [1] Sim [2] não\n"); scanf("%d",&op); }while(op!=2); do{ printf("\nEmail -> "); fflush(stdin); scanf("%s", email); insereMail(&Mail,email); printf("\nPossui mais emails? [1] Sim [2] não\n"); scanf("%d",&op); }while(op!=2); inserePessoa(&Lista,Tel,Mail,matricula,nome); break; Aqui está o código completo do projeto: #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <string.h> struct agenda { char matricula[20]; char nome[30]; struct agenda *prox; struct tel *t; struct mail *m; }; struct tel{ char telefone[20]; struct tel *prox; }; struct mail{ char email[30]; struct mail *prox; }; struct agenda* criaAgenda (){ return NULL; } struct tel* criaTel(){ return NULL; } struct mail*criaMail(){ return NULL; } void insereTel(struct tel **t,char tel[]){ struct tel *p,*q; p=(struct tel*)malloc(sizeof(struct tel)); strcpy(p->telefone,tel); p->prox=*t; *t=p; } void insereMail(struct mail **m,char mail[]){ struct mail *p; p=(struct mail*)malloc(sizeof(struct mail)); strcpy(p->email,mail); p->prox=*m; *m=p; } void inserePessoa (struct agenda **L, struct tel *T,struct mail *M, char n[], char end[]){ struct agenda *p; p=(struct agenda*)malloc(sizeof(struct agenda)); strcpy(p->matricula,n); strcpy(p->nome,end); p->prox=*L; p->t=T; p->m=M; *L=p; } struct agenda* localiza(struct agenda *L,char n[]){ struct agenda *p; struct tel *auxt; struct mail *auxm; int cont=0; p=L; auxt=p->t; auxm=p->m; while(p!=NULL){ if (strcmp(p->matricula,n)!=0) p=p->prox; else{ printf("\n\n Matricula -> %s",p->matricula); printf("\n Nome -> %s",p->nome); while(auxt!=NULL){ printf("\n Telefone -> %s",auxt->telefone); auxt =auxt->prox; } while (auxm!=NULL){ printf("\n Email -> %s",auxm->email); auxm=auxm->prox; } return p; } } return NULL; } void listarTodos(struct agenda *L){ struct agenda *p; struct tel *auxt; struct mail *auxm; p=L; auxt=p->t; auxm=p->m; while (p!=NULL){ printf("\n\nmatricula -> %s",p->matricula); printf("\n\nnome -> %s",p->nome); while(auxt!=NULL){ printf("\n\nTelefone -> %s",auxt->telefone); auxt =auxt->prox; } while (auxm!=NULL){ printf("\n\nEmail -> %s",auxm->email); auxm=auxm->prox; } p=p->prox; printf("\n\n=================\n\n"); } } void TotalTelefones(struct agenda *L){ struct agenda *p; struct tel *auxt; struct mail *auxm; int contador; p=L; auxt=p->t; auxm=p->m; while(auxt!=NULL){ contador ++; auxt =auxt->prox; } printf("\nTotal de telefones: %d", contador); } void TotalAlunos(struct agenda *L){ struct agenda *p; struct tel *auxt; struct mail *auxm; int contador; p=L; auxt=p->t; auxm=p->m; while (p!=NULL){ contador ++; p=p->prox; //printf("\n\n=================\n\n"); } printf("\nTotal de alunos: %d", contador); } void SalvarTXT(struct agenda *L){ struct agenda *p; struct tel *auxt; struct mail *auxm; p=L; auxt=p->t; auxm=p->m; FILE *arquivo_texto; //Criando a File arquivo_texto = fopen ("agenda_eletronica.txt", "w+"); //Abrindo txt e escrevendo nele if (arquivo_texto == NULL) { printf("Erro ao abrir o arquivo.\n"); //Caso de algum erro exit(1); } while (p!=NULL){ //Correr toda lista das structs fprintf(arquivo_texto, "Matricula -> %s\n Nome -> %s\n", p->matricula, p->nome); //Inserindo dados da Struct de dados while(auxt!=NULL){ fprintf(arquivo_texto, "Telefone -> %s\n", auxt->telefone); //Inserindo dados da Struct de telefones auxt =auxt->prox; //Pula pro proximo registro } while (auxm!=NULL){ fprintf(arquivo_texto, "Email -> %s\n", auxm->email); //Inserindo dados da Struct de email auxm=auxm->prox; //Pula pro proximo registro } p=p->prox; fprintf(arquivo_texto, "=================\n"); //printf("\n\n=================\n\n"); } fclose(arquivo_texto); //fecha o arquivo } void listaLetra(struct agenda *L,char n){ struct agenda *p; struct tel *auxt; struct mail *auxm; p=L; auxt=p->t; auxm=p->m; while (p!=NULL){ if(p->matricula[0]!=n) p=p->prox; else{ printf("\n\nmatricula -> %s",p->matricula); printf("\n\nnome -> %s",p->nome); while(auxt!=NULL){ printf("\n\nTelefone -> %s",auxt->telefone); auxt=auxt->prox; } while (auxm!=NULL){ printf("\n\nEmail -> %s",auxm->email); auxm=auxm->prox; } p=p->prox; printf("\n\n======================\n\n"); } } } void alterarDados(struct agenda *L,char n[]){ int cont=0; struct agenda *p; struct tel *auxt; struct mail *auxm; auxt=p->t; auxm=p->m; p=localiza(L,n); if(p==NULL) printf("\nmatricula não encontrado"); else{ printf("\n\nDigite o novo nome:"); scanf("%s",&p->nome); while (auxt!=NULL){ printf("\n\n Digite o novo telefone:"); scanf("%s",&auxt->telefone); auxt=auxt->prox; } while (auxm!=NULL){ printf("\n\n Digite o novo email:"); scanf("%s",&auxm->email); auxm=auxm->prox; } } } struct agenda* removermatricula(struct agenda *L,char n[]){ struct agenda *p, *q; p=localiza(L,n); if (p==NULL) printf("\n\n Matricula não encontrada !"); else{ q=L; if(q==p){ L=p->prox; free(p); }else{ while (q->prox!=p) q=q->prox; q->prox=p->prox; free(p); } printf("\n\n Aluno removido com sucesso !"); } return L; } void LimpaLista(struct agenda *L){ struct agenda *p, *q; p=L; q=L; if (p==NULL) printf("\n\n Lista vazia"); else{ q=L; if(q==p){ L=p->prox; free(p); }else{ while (q->prox!=p) q=q->prox; q->prox=p->prox; free(p); } printf("\n\n Lista limpa !"); } //return L; } main(){ struct agenda *Lista; struct tel *Tel; struct mail *Mail; int op; char matricula[20], nome[30], telefone[20], email[20]; char no; Lista=criaAgenda(); Tel=criaTel(); Mail=criaMail(); do{ system("cls"); printf("\nEstrutura de Dados - Trabalho Pratico I - Gabriel de Souza\n"); printf("\n[1] - Cadastra Aluno --Falta arrumar bug dos tel"); printf("\n[2] - Pesquisa Aluno (Matricula)"); printf("\n[3] - Remove Aluno"); printf("\n[4] - Total de alunos"); printf("\n[5] - Total de telefones"); printf("\n[6] - Limpar Lista"); printf("\n[7] - Salva em Disco"); printf("\n[8] - Carrega lista"); printf("\n\nDigite -> "); fflush(stdin); scanf("%d",&op); switch (op){ case 1: printf("\nMatricula -> "); fflush(stdin); scanf("%s",matricula); printf("\nNome -> "); fflush(stdin); scanf("%s",nome); do{ printf("\nTelefone -> "); fflush(stdin); scanf("%s",telefone); insereTel(&Tel,telefone); printf("\nPossui mais telefones -> [1] Sim [2] não\n"); scanf("%d",&op); }while(op!=2); do{ printf("\nEmail -> "); fflush(stdin); scanf("%s", email); insereMail(&Mail,email); printf("\nPossui mais emails? [1] Sim [2] não\n"); scanf("%d",&op); }while(op!=2); inserePessoa(&Lista,Tel,Mail,matricula,nome); break; case 2: if(Lista==NULL) printf("\nAgenda vazia"); else{ printf("\n Digite um matricula -> "); fflush(stdin); scanf("%s",matricula); if(localiza(Lista,matricula)==NULL) printf("\n Matricula não encontrado na agenda"); } getch(); break; case 3: if(Lista==NULL) printf("\nAgenda vazia"); else{ printf("\nDigite a matricula do aluno que deseja remover -> "); scanf("%s",matricula); Lista=removermatricula(Lista,matricula); getch(); } case 4: if(Lista==NULL) printf("\nAgenda vazia"); else TotalAlunos(Lista); getch(); break; case 5: if(Lista==NULL) printf("\nAgenda vazia"); else TotalTelefones(Lista); getch(); break; case 6: if(Lista==NULL) printf("\nAgenda vazia"); else LimpaLista(Lista); getch(); break; case 7: if(Lista==NULL) printf("\nAgenda vazia"); else SalvarTXT(Lista); getch(); break; case 8: if(Lista==NULL) printf("\nAgenda vazia"); else listarTodos(Lista); getch(); break; } }while (op!=0); }