Jump to content

Recommended Posts

Posted

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?

Posted

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;    

}
Posted

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?

Posted

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.

Posted

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.

Posted

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

Posted

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.

Posted

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?

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.