Aviron Posted December 29, 2015 at 04:06 PM Report Share #591121 Posted December 29, 2015 at 04:06 PM Boas, estou a tentar criar uma struct, lá dentro contém um vetor onde quero guardar alguns dados já pré definidos, ou seja preferencialmente uma função, que mal o programa inicie é executada e armazena logo esses dados. Para tal tenho de usar apontadores, mas não faço ideia onde os colocar na struct. Alguém pode ajudar? Cumps Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted December 29, 2015 at 04:48 PM Report Share #591122 Posted December 29, 2015 at 04:48 PM a questão está colocada de forma pouco perceptível do que realmente queres. afinal queres ter na struct um vector ou uma função ? podes ser mais claro no que realmente queres. dá exemplos ou pedaços de código de forma que seja mais claro possível 1 Report IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Aviron Posted December 29, 2015 at 05:43 PM Author Report Share #591123 Posted December 29, 2015 at 05:43 PM (edited) Já consegui resolver 🙂 usei uma função para preencher a struct: int preenche(struct carro v[], int n) { strcpy(v[n].marca, "Ford"); v[n].ano = 2015; v[n].km = 1300; n++; /* ... */ } Mas agora estou a obter o erro :error: incompatible types in assignment of 'int' to 'int [10]' na linha v[n].ano = 2015; Sabes como resolver? Edited December 30, 2015 at 03:43 PM by pwseo syntax highlight. Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted December 29, 2015 at 06:09 PM Report Share #591124 Posted December 29, 2015 at 06:09 PM sem a definição dos dados usados é completamente impossível determinar qual o problema 1 Report IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Richard597 Posted January 13, 2016 at 12:48 AM Report Share #591914 Posted January 13, 2016 at 12:48 AM (edited) #include <stdio.h> #include <string.h> struct carro{ char marca[50]; int ano; float km; }; int main(){ int preenche(struct carro v[], int n) { strcpy(v[n].marca, "Ford"); v[n].ano = 2015; v[n].km = 1300; n++; } int i; struct carro m[3]; i = 3; preenche(&m[0], i); printf("%s %d %f", m[3].marca, m[3].ano, m[3].km); return 0; } NO caso, quando chamei a função, ao passar o vetor como argumento, eu utilizei o "&"(address operator) juntamente com o vator tipo carro, ou seja: preenche(&m[0], i); Edited January 13, 2016 at 12:57 AM by Richard597 Link to comment Share on other sites More sharing options...
Richard597 Posted January 13, 2016 at 01:24 AM Report Share #591915 Posted January 13, 2016 at 01:24 AM Nota! no exemplo que coloquei, eu fiz a chamada da função da seguinte forma: preenche(&m[0], i); Mas pode ser desta forma também: preenche(m, i); ou seja, só o nome do vetor serve. Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted January 13, 2016 at 02:30 AM Report Share #591916 Posted January 13, 2016 at 02:30 AM nesse exemplo, existem vários problema : - declaras a função preenche no meio da declaração da função main - estás a passar para a função preenche o índice de um registo que não se encontra na lista m - na função printf, estás a pedir os dados do mesmo registo que não existe ainda existem elementos que são completamente desnecessários - o incremento do valor de n na função preenche é irrelevante - a chamada da função não necessita desses redireccionamentos todos, basta : preenche(m, i) IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Richard597 Posted January 19, 2016 at 06:19 AM Report Share #592157 Posted January 19, 2016 at 06:19 AM (edited) nesse exemplo, existem vários problema : - declaras a função preenche no meio da declaração da função main - estás a passar para a função preenche o índice de um registo que não se encontra na lista m - na função printf, estás a pedir os dados do mesmo registo que não existe ainda existem elementos que são completamente desnecessários - o incremento do valor de n na função preenche é irrelevante - a chamada da função não necessita desses redireccionamentos todos, basta : preenche(m, i) Eu peguei só o começo do exemplo pra continuar e dar uma ideia ao colega que fez a pergunta, segui o começo dele e continuei... O incremento não serve pra nada mesmo. Agora só não sei explicar o porque que O printf usado ali (com indice 3 em m), dar certo e mostra os valores retornado pela função preenche. Tentei com indice menores que 3 e não deu certo... Será que foi porque eu passei i=3 para função??? Sim! e eu não entendi porque não pode declarar funções dentro de outras funções, isso dará algum problema sério?? Pelo que eu entendo, se eu quero usar uma função somente no escopo de outra, então acho que não tem problema algum declarar uma função dentro da "main()". Ou tem?? Edited January 19, 2016 at 06:30 AM by Richard597 Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted January 20, 2016 at 10:58 AM Report Share #592194 Posted January 20, 2016 at 10:58 AM Agora só não sei explicar o porque que O printf usado ali (com indice 3 em m), dar certo e mostra os valores retornado pela função preenche. Tentei com indice menores que 3 e não deu certo... Será que foi porque eu passei i=3 para função??? sim, ao passar 3 como argumento da função estás a "dizer" para gravar num local que não faz parte do array pode não fazer parte do array mas o valor é gravado na mesma (se não for num local problemático), e é por isso que posteriormente o valor é apresentado no printf Sim! e eu não entendi porque não pode declarar funções dentro de outras funções, isso dará algum problema sério?? Pelo que eu entendo, se eu quero usar uma função somente no escopo de outra, então acho que não tem problema algum declarar uma função dentro da "main()". Ou tem?? já alguma vez compilaste um código em que tal acontece ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Richard597 Posted January 21, 2016 at 11:10 PM Report Share #592295 Posted January 21, 2016 at 11:10 PM (edited) já alguma vez compilaste um código em que tal acontece ? Sim! a resposta eh sim... Inclusive o exemplo que coloquei aqui foi compilado. Sim! E obrigado pela explicacao do "printf". Edited January 21, 2016 at 11:12 PM by Richard597 Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted January 21, 2016 at 11:21 PM Report Share #592296 Posted January 21, 2016 at 11:21 PM e achas que o código que apresentas necessita de teres uma função local ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now