Programação C - Problema - Versão de Impressão +- Forum Pplware (http://forum.pplware.com) +-- Fórum: Mais Tech (/forumdisplay.php?fid=11) +--- Fórum: Programação e Web (/forumdisplay.php?fid=16) +--- Tópico: Programação C - Problema (/showthread.php?tid=23014) |
Programação C - Problema - Gonkf7 - 21-11-2016 13:55 Boa tarde, Tenho um pequeno projeto para fazer em C, mas estou a ter alguns problemas a entender o porquê de me estar a dar tantos erros e de não compilar, e infelizmente não sou muito experiente em C.. O objetivo deste programa é inserir/consultar componentes, consultar o estado e estatisticas gerais. Embora o meu problema neste momento é conseguir meter a função "inserirComponentes" e entender como é que tenho de fazer futuramente sem dar erros desnecessários. Não sei se é relevante, mas estou a usar o Codeblocks como compilador. Em anexo envio o ficheiro com o código que tenho todo. - "C.txt" Agradeço desde já toda a ajuda que puderem fornecer. RE: Programação C - Problema - PsySc0rpi0n - 22-11-2016 01:54 Dava jeito colocares o código num site tipo Ideone.com. Facilita muito a leitura e compreensão do código. Sent from my GT-I9505 using Tapatalk RE: Programação C - Problema - Gonkf7 - 22-11-2016 11:58 (22-11-2016 01:54)PsySc0rpi0n Escreveu: Dava jeito colocares o código num site tipo Ideone.com. Facilita muito a leitura e compreensão do código. PsySc0rpi0n desde já obrigado pela resposta. Não sabia como dispor o código no forum e não tinha conhecimento que havia compiladores online. Espero que assim seja mais fácil a leitura e compreensão. http://ideone.com/fork/sUhV8T Cumps. RE: Programação C - Problema - PsySc0rpi0n - 22-11-2016 13:26 (22-11-2016 11:58)Gonkf7 Escreveu:(22-11-2016 01:54)PsySc0rpi0n Escreveu: Dava jeito colocares o código num site tipo Ideone.com. Facilita muito a leitura e compreensão do código. Como podes imaginar não é fácil depurar um código desses assim de cabeça. Mas posso apontar/questioner alguns pontos, pelo menos: A tua função char lerTipoC(void) funciona bem???? É que estás a declarar uma variável (tipoC) como char mas depois estás a compará-la com uma string!!! Depois de tentar compilar esse código no ideone.com, só posso dizer uma coisa! Resolve o máximo de erros possível porque assim nem vale a pena continuar a olhar! Pelo menos os erros... Os warnings logo se vê! A linha 203 é um caso... Porque raio usas um asterisco antes do nome da variável??? Isso devia ser mais algo do género *(numeroComponentes + i) ou numeroComponentes[i]... E olha bem também para a linha 189. novo = realloc(componentes,(*numeroComponentes+1)*sizeof(tComponente)); De certeza que é isto que queres fazer? RE: Programação C - Problema - Gonkf7 - 22-11-2016 15:03 (22-11-2016 13:26)PsySc0rpi0n Escreveu:(22-11-2016 11:58)Gonkf7 Escreveu:(22-11-2016 01:54)PsySc0rpi0n Escreveu: Dava jeito colocares o código num site tipo Ideone.com. Facilita muito a leitura e compreensão do código. Realmente estava a declarar uma char e comparar com uma string, erro meu - obrigado. Relativamente aos outros pontos ao qual referiste, tive a ver alguns exemplos que me deram para criar e guardar informação e foi assim que me disseram para fazer. Existe outra maneira para eu puder recolher os dados que pretendo e guarda los para depois conseguir consultar e entre outras funções possíveis. Quando falo em guardar não me estou a referir em ficheiros. O objectivo deste programa seria criar uma ficha para o utilizador preencher com os requisitos de entrada e saída de material informático e depois alterar o estado. Agradeço a compreensão que tens tido PsySc0rpi0n. Cumps. RE: Programação C - Problema - PsySc0rpi0n - 22-11-2016 16:10 A tua pergunta que tu fazes de como recolher dados é muito vaga. Pode-la fazer de várias maneiras. Eu não vejo problema nenhum em criar uma estrutura como tu fizeste e usá-la. Tens é que fazer corresponder os tipos de dados que as funções devolve com a declaração da função, ou seja, se dizes que uma função vai devolver um ponteiro para um inteiro, não podes devolver um inteiro. Ou melhor, poder até podes, o resultado é que provavelmente não sera o que tu queres! Eu também não sou nenhum expert em C, e para saber o pouco que sei, e para desenvolver um programa como estes, tens que saber bem o que são ponteiros e como trabalhar com eles e também saber como se trabalha com ponteiros para estruturas. Na minha opinião, um programa destes trabalha sempre da seguinte maneira: Função que mostra os menus e recebe uma opção para, através de um Switch Case, chamar a função correspondente à opção seleccionada. Função que pede dados ao user para adicionar à base de dados Função que pede dados ao user para remover da base de dados Função que procura dados na base de dados e o apresenta na consola Função que lê a base de dados para a memória Função que grava a base de dados em disco. Assim por alto seria isto, mas teria que ser feito com base em listas ligadas pois é relativamente mais fácil gerir uma base de dados dinâmica que uma base de dados que são no fundo uma array de estruturas! Quanto ao teu código em concreto, procura eliminar erros do género: -assignment from incompatible pointer type -expected 'tComponente * {aka struct <anonymous> *}' but argument is of type 'tComponente ** {aka struct <anonymous> **}' -request for member 'codigo' in something not a structure or union -request for member 'marca' in something not a structure or union -too few arguments to function 'lerString' -request for member 'tipo' in something not a structure or union -return from incompatible pointer type Estes são erros que quer queiras quer não, tens que os corrigir ou o teu programa nunca vai funcionar nem bem nem mal! RE: Programação C - Problema - Gonkf7 - 22-11-2016 16:59 (22-11-2016 16:10)PsySc0rpi0n Escreveu: A tua pergunta que tu fazes de como recolher dados é muito vaga. Pode-la fazer de várias maneiras. Eu não vejo problema nenhum em criar uma estrutura como tu fizeste e usá-la. Ok, vou tentar resolver estes erros. Obrigado pelos esclarecimentos. RE: Programação C - Problema - PsySc0rpi0n - 22-11-2016 18:37 Esses erros são quase todos fáceis de resolver. Qualquer coisa diz, que eu tento ajudar. Sent from my GT-I9505 using Tapatalk |