Krazzi Posted April 8, 2009 at 03:53 PM Report #255899 Posted April 8, 2009 at 03:53 PM Boas...já não programo em c a ja algum tempo, não consigo lembrar como o que faço um um programa que gere aleatoriamente uma matriz quadrada com valores inteiros que podem variar de 1 a 100, que visualize a matriz gerada e que determine as somas dos elementos da diagonal principal e da diagonal secundária. Use funções e considere que as dimensões da matriz nunca ultrapassam 10×10. Alguém me ajude?
Ferreira Posted April 8, 2009 at 04:27 PM Report #255904 Posted April 8, 2009 at 04:27 PM Em que parte é que precisas de ajuda? http://twitter.com/ferreira
Baderous Posted April 8, 2009 at 04:30 PM Report #255905 Posted April 8, 2009 at 04:30 PM http://www.portugal-a-programar.pt/index.php?showtopic=25856 http://www.portugal-a-programar.pt/index.php?showtopic=24501
Krazzi Posted April 8, 2009 at 08:25 PM Author Report #255964 Posted April 8, 2009 at 08:25 PM Tenho duvidas em gerar a matriz aleatória......pois todos os exemplos que tenho visto e pra colocar determinados valores em certos sitios
Baderous Posted April 8, 2009 at 09:43 PM Report #255979 Posted April 8, 2009 at 09:43 PM Basta iterar sobre a matriz e, em cada elemento utilizar as funções de geração de números aleatórios para obter um valor.
KiNgPiTo Posted April 8, 2009 at 11:20 PM Report #256003 Posted April 8, 2009 at 11:20 PM Com 1 simples ciclo for, faz-se isso rapidamente, atribuindo valores à matriz... Não sou grande adepto de fornecer código, mas pega lá algo que fiz à pressa: #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { //Declaração de Variaveis int matriz[10][10], i, k; //Iniciar o gerador de numeros srand (time(NULL)); //Parte para gerar os valor for (i=0; i<10; i++){ for (k=0; k<10; k++) matriz[i][k] = rand() % 100; //Se quiseres incluir o 100 nas possibilidades isto passa para 101 } //Vizualizar os valores gerados for (i=0; i<10; i++){ for (k=0; k<10; k++) printf("[%d][%d] = %d\n", i, k , matriz[i][k]); } system("pause"); return 0; }
Krazzi Posted April 10, 2009 at 10:22 PM Author Report #256238 Posted April 10, 2009 at 10:22 PM Muito obrigado 😞
Krazzi Posted April 12, 2009 at 09:20 PM Author Report #256435 Posted April 12, 2009 at 09:20 PM Mas agora com com outra duvida. Eu quero que no final do programa ele me apresente a soma da diagonal principal e secundaria. De momento tou com as funcoes assim: float somp() { float total=0; int i,c; int matriz[c][c]; for(i=0;i<c;i++) total+=total+matriz[c][c]; printf("A somda diagonal principal e: \n",total); } float soms() { float total=0; int i,c,l; int matriz[c][c]; for(i=0;i<c;i++) for(i=0;i<l;i--) total+=matriz[l][c]; printf("A somda diagonal secundaria e: \n",total); } Mas o programa da-me sempre erro o que se passa?
Ferreira Posted April 12, 2009 at 09:24 PM Report #256436 Posted April 12, 2009 at 09:24 PM Se disseres que erro dá é mais fácil. http://twitter.com/ferreira
Krazzi Posted April 12, 2009 at 09:33 PM Author Report #256437 Posted April 12, 2009 at 09:33 PM error while dumping state(probably corrupted stack) Segmentation fault(core dumped)
pedrosorio Posted April 12, 2009 at 10:09 PM Report #256443 Posted April 12, 2009 at 10:09 PM int i,c; int matriz[c][c]; Continua a usar variáveis não inicializadas e hás-de ter uma grande sorte. Esse c é o quê? Declaras o c mas não lhe atribuis nenhum valor. Estás a definir uma matriz de que tamanho nesse caso? Se isso são funções têm que ter argumentos (nesse caso um apontador para apontadores para inteiros que é a matriz, e um inteiro que é a dimensão da matriz quadrada). Para além disso não percebo porque é que funções que somam inteiros devolvem float. Não respondo a dúvidas por mensagem.
Krazzi Posted April 12, 2009 at 10:24 PM Author Report #256447 Posted April 12, 2009 at 10:24 PM c e uma variavel na qual eu vou definir o tamanho maximo
pedrosorio Posted April 12, 2009 at 10:28 PM Report #256449 Posted April 12, 2009 at 10:28 PM Parece que não queres ser ajudado. É evidente que esse código não executa nada. Em C precisas de uma função main para o código ser executado. Tal como está presumi que tinhas uma função main que estava a chamar essas funções. E partindo disso, essas funções tal como estão, estão mal. Não têm argumentos, têm variáveis essenciais que não são inicializadas. E reparei agora que ao somares os elementos fazes total+=total+matriz[c][c] que obviamente está mal, porque x+=a faz x=x+a, pelo que essa linha de código faz total=total+total+matriz[c][c]. Não respondo a dúvidas por mensagem.
Krazzi Posted April 13, 2009 at 03:51 PM Author Report #256532 Posted April 13, 2009 at 03:51 PM mas as variaveis nao podem ser as que foram inicialmente declaradas? mas entao como e que crio a funcao que desejo? e o que tal mal de modo a que eu posso modificar? Obrigado
pedrosorio Posted April 13, 2009 at 04:01 PM Report #256535 Posted April 13, 2009 at 04:01 PM Se queres usar as variáveis inicialmente declaradas então não as declaras de novo na função. Mas o mais correcto seria as funções receberem como argumento as variáveis. Neste caso seria algo do género: int somp(int** matriz, int c) Não respondo a dúvidas por mensagem.
Krazzi Posted April 13, 2009 at 06:33 PM Author Report #256561 Posted April 13, 2009 at 06:33 PM mas entao o total passa a receber total+matriz ?
pedrosorio Posted April 13, 2009 at 06:43 PM Report #256565 Posted April 13, 2009 at 06:43 PM Nesta linha de código? total+=total+matriz[c][c] não percebeste porque é que está errado? Não respondo a dúvidas por mensagem.
Krazzi Posted April 13, 2009 at 07:37 PM Author Report #256578 Posted April 13, 2009 at 07:37 PM Nao, porque na minha prepetiva tou a somar ao total o "valor" do que se encontra na dada posicao da matriz
pedrosorio Posted April 13, 2009 at 09:17 PM Report #256592 Posted April 13, 2009 at 09:17 PM Sim, isso corresponde a escrever total = total + matriz[c][c] Somo o total ao valor que se encontra numa dada posição e coloco esse novo valor no total. Não respondo a dúvidas por mensagem.
Krazzi Posted April 13, 2009 at 09:25 PM Author Report #256593 Posted April 13, 2009 at 09:25 PM Sim por acaso ja fiz isso mas ele nao efectua a soma. deve ser por nao guardar a matriz gerada....devo igualar a um outro vector e assim fazer as operacoes com o novo vector?
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