Fitorinaudo Posted March 13, 2013 at 05:55 PM Report #499064 Posted March 13, 2013 at 05:55 PM Boa tarde. Alguem me pode explicar como é que ao darmos ( na linha de comandos ) , por exemplo, a letra A, como é que se faz para 'chamar' um método que adiciona o próximo numero dado como argumento? obrigado
HappyHippyHippo Posted March 13, 2013 at 06:01 PM Report #499065 Posted March 13, 2013 at 06:01 PM podes ser mais claro no teu problema ? talvez com um exemplo ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Fitorinaudo Posted March 13, 2013 at 06:18 PM Author Report #499069 Posted March 13, 2013 at 06:18 PM o que eu tenho de escrever na linha de comandos: ./exercicio A 1 A 2 A 3. Objectivo disto: adicionar o 1, dps adicionar o 2 ao 1, e dps adicionar o 3 ao 2 + 1. Ou seja o A, tem de chamar uma função que faça a soma dos argumentos certo? Como eq isso se faz, essa relação? Obrigado
pmg Posted March 13, 2013 at 06:26 PM Report #499071 Posted March 13, 2013 at 06:26 PM Se definires a funcao main com os parametros [t]argc[/tt] e argv podes usar esses parametros para identificar os argumentos passados na linha de comandos. [t]argc[/tt] tem o numero de argumentos O array [t]argv[/tt] tem cada um dos argumetnos, incluindo quando possivel, o nome do programa. Ora experimenta: #include <stdio.h> int main(int argc, char **argv) { int k; for (k = 0; k < argc; k++) { printf("argumento #%d: %s\n", k, argv[k]); } return 0; } What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
HappyHippyHippo Posted March 13, 2013 at 06:28 PM Report #499073 Posted March 13, 2013 at 06:28 PM o que eu tenho de escrever na linha de comandos: ./exercicio A 1 A 2 A 3. Objectivo disto: adicionar o 1, dps adicionar o 2 ao 1, e dps adicionar o 3 ao 2 + 1. Ou seja o A, tem de chamar uma função que faça a soma dos argumentos certo? Como eq isso se faz, essa relação? Obrigado essa explicação continua a não fazer muito sentido, afinal para que serve o A ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Fitorinaudo Posted March 13, 2013 at 06:34 PM Author Report #499075 Posted March 13, 2013 at 06:34 PM (edited) Certo eu isso percebo. Agora outra dúvida. Esta função é so para fazer um somatorio de numeros dados nos argumentos. Podem-me ajudar com o erro sff? Diz 'Core Dumped'. #include <stdio.h> #include <stdlib.h> int main(int argc, char * argv[]){ printf("A soma dos números dado dá: %d\n", soma(argc, *argv)); return 0; } int soma(int argc, char *argv[]){ int somatorio; int i=0;//Serve para percorrer o vector. for(i = 1 ; i < argc ; i++) somatorio += atoi(argv[i]); //Somatorio vai somando os 'numeros' que sao convertidos de chars para inteiros com a função atoi. return somatorio; } HappyHippyHippo o A serve para chamar um método que adiciona o número que está logo depois do A. Como é que isso se faz? Edited March 13, 2013 at 06:35 PM by pmg GeSHi
pmg Posted March 13, 2013 at 06:38 PM Report #499076 Posted March 13, 2013 at 06:38 PM (edited) Podem-me ajudar com o erro sff? Diz 'Core Dumped'. Duas coisas importantes: 1) falta-te um prototipo 'activo' para a funcao soma quando a chamas na main. 2) nao incializaste a variavel somatorio. O resultado pode ser uma coisa qualquer. Nota: como que queres que o teu programa se comporte com os arguemntos "A 1 A 2 A 3" (nomeadamente os 'A')? Edited March 13, 2013 at 06:39 PM by pmg What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
Fitorinaudo Posted March 13, 2013 at 06:46 PM Author Report #499077 Posted March 13, 2013 at 06:46 PM 1) Podes-me ajudar então primeiro a resolver o problema do codigo em cima. Inicializar a variavel somatorio onde? Na função mesmo? ou no Main? Podes mostrar-me o codigo como corrigir esse problema da variavel sff? Ja tentei tudo.. Obrigado
Marzkor Posted March 13, 2013 at 06:48 PM Report #499078 Posted March 13, 2013 at 06:48 PM (edited) Acho que devias fazer o seguinte : for (i=0;i<argc;i=i+2) Se argv == A então soma = soma + argv[i+1] Nota : A sintaxe deste codigo está incorrecta Edit int i; i=0; Edited March 13, 2013 at 06:48 PM by Marzkor
pmg Posted March 13, 2013 at 06:50 PM Report #499081 Posted March 13, 2013 at 06:50 PM 1) acrescenta antes da funcao main a linha com o prototipo da funcao soma int soma(int argc, char *argv[]); 2) para inicializares uma variavel, na linha onde a defines acrescenta um = e um valor int somatorio = 0; OUTRA COISA: liga o maximo de warnings do teu compilador e corrige-os todos antes de aceitares um programa como terminado. What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
Marzkor Posted March 13, 2013 at 06:55 PM Report #499083 Posted March 13, 2013 at 06:55 PM Já agora pq meter o i = 0 e depois a 1 ? int i=0;//Serve para percorrer o vector. for(i = 1 ; i < argc ; i++)
Fitorinaudo Posted March 13, 2013 at 06:58 PM Author Report #499085 Posted March 13, 2013 at 06:58 PM Marzkor, Entao devia fazer como? for( int i=1, ........) ? Inicializá-lo dentro do for? Já tentei fazer isso so que na linha diz que isso só da no C99 ou uma coisa assim.
Marzkor Posted March 13, 2013 at 07:01 PM Report #499086 Posted March 13, 2013 at 07:01 PM nop int i; for (i=0; --- ;i++)
Fitorinaudo Posted March 13, 2013 at 07:05 PM Author Report #499087 Posted March 13, 2013 at 07:05 PM ah fiz assim porque o argv[0] é o nome do executavel e nao quero que isso entre no somatorio. pmg, Ja meti o prototipo da função soma. E agora onde inicializo a variavel? Podes mostrar-me exactamente? Inicializá-la no meu codigo.. Ja tentei de tudo ..
Marzkor Posted March 13, 2013 at 07:12 PM Report #499090 Posted March 13, 2013 at 07:12 PM (edited) Peço desculpa pelo o meu desconhecimento em relação o pq de 1. #include <stdio.h> #include <stdlib.h> int main(int argc, char * argv[]){ printf("A soma dos números dado dá: %d\n", soma(argc, argv)); return 0; } int soma(int argc, char *argv[]){ int somatorio=0; int i=0;//Serve para percorrer o vector. for(i = 1 ; i < argc ; i++) somatorio += atoi(argv[i]); //Somatorio vai somando os 'numeros' que sao convertidos de chars para inteiros com a função atoi. return somatorio; } no vs sem problemas Edited March 13, 2013 at 07:14 PM by Marzkor
Fitorinaudo Posted March 13, 2013 at 07:22 PM Author Report #499093 Posted March 13, 2013 at 07:22 PM pois Markzor, assim dá-me erro. Core dumped. Não podes ajudar-me sff? nao encontro o erro mesmo ...que treta
Marzkor Posted March 13, 2013 at 07:29 PM Report #499094 Posted March 13, 2013 at 07:29 PM (edited) Podes meter o erro aqui ? Fizeste copy paste do meu codigo ? A unica coisa que o VS deu foi um warning mas a resolução é esta #include <stdio.h> #include <stdlib.h> int soma(int argc, char *argv[]){ int somatorio=0; int i=0;//Serve para percorrer o vector. for(i = 1 ; i < argc ; i++) somatorio += atoi(argv[i]); //Somatorio vai somando os 'numeros' que sao convertidos de chars para inteiros com a função atoi. return somatorio; } int main(int argc, char * argv[]){ printf("A soma dos números dado dá: %d\n", soma(argc, argv)); return 0; } Primeiro as Funções e depois o Main. Edited March 13, 2013 at 07:30 PM by Marzkor
Fitorinaudo Posted March 13, 2013 at 07:38 PM Author Report #499095 Posted March 13, 2013 at 07:38 PM soma.c: In function ‘soma’: soma.c:8:20: error: ‘argv’ undeclared (first use in this function) soma.c:8:20: note: each undeclared identifier is reported only once for each function it appears in soma.c:8:28: error: expected ‘;’ before ‘)’ token soma.c:8:28: error: expected statement before ‘)’ token copiei o teu codigo e aparece isto na linha de comandos
Marzkor Posted March 13, 2013 at 07:43 PM Report #499098 Posted March 13, 2013 at 07:43 PM tas a usar que compilador e que ide ?
Fitorinaudo Posted March 13, 2013 at 07:44 PM Author Report #499100 Posted March 13, 2013 at 07:44 PM Nenhum lol. Text Editor do linux, e compilo com gcc. e compilo na linha de comandos do linux, onde corro tambem o executavel.
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