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

    Tarefa em C

    Considere as structs abaixo: struct data { int dia; // dia da tarefa int mes; //mês da tarefa int ano; //ano da tarefa }; struct hora { int hora; //hora da tarefa int min; //minutos da tarefa int sec; //segundos da tarefa }; struct evento { char descri[80]; //descrição do evento char evento[20]; //nome do evento char tipo; //1 – escolar, 2 – médico, 3 – familiar, 4 - amigos struct data evd; //data do evento struct hora evh; //hora do evento }; Elaborar um programa em C para operar uma agenda, segundo o menu principal: Agenda de eventos EP2015 1 – Inserir novo evento 2 – Alterar evento existente 3 – Excluir evento existente 4 – Listar eventos por dia 5 – Listar eventos por semana 6 – Listar eventos por mês 7 – Listar eventos por tipo no mês ou na semana ESC - Sair Considerações: 1. Não será aceito a utilização de variáveis globais; 2. Cada uma das opções deverá ser manipulada por uma função que recebe o endereço da struct, ou seja, a função deve acessar a struct por ponteiro; 3. O main() deverá operar somente o menu principal e as operações com arquivo; 4. Ao iniciar o programa, o vetor de structs deve ser lido de um arquivo cujo nome o usuário informa; 5. Ao encerrar o programa, o vetor de structs deve ser salvo num arquivo cujo nome o usuário informou no início; 6. Na inclusão de um evento é obrigatório o preenchimento das variáveis: evento, tipo, data e hora; 7. Só poderão ser cadastrados 5 eventos no mesmo dia; 8. Quando um feriado for cadastrado, não poderão ser cadastrados eventos escolares e/ou médicos no mesmo dia; 9. Para efeitos de organização, o programador poderá incluir novas variáveis na estrutura; 10. No hora do evento, o programa deverá apresentar uma mensagem de texto e sonora alertando o evento; 11. Para criação da estrutura, utilizar struct evento agenda[365]; 12. Não serão consideradas (corrigidas) as cópias de código; 13. Na avaliação serão observados os critérios de originalidade, eficiência do código, telas de apresentação do menu e das listagens e a utilização correta dos comandos em C. Sugestão: para salvar a agenda em arquivo e posterior leitura, utilizar os comandos fread() e fwrite().
  4. 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; } ```
  5. 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.
  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. 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; }
  8. 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; }
  9. 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); } }
  10. 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)); }
  11. 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:
  12. Alguém pode me ajudar com esses 2 exercícios em C++ usando a estrutura STRUCT. grato
  13. 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]); }
  14. 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
  15. 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);}
  16. 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...
  17. 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...
  18. #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?
  19. 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).
  20. 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"); }
  21. 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.
  22. 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 "); } }
  23. -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:
  24. 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
×
×
  • Criar Novo...