Matrizes && Função

1. Matrizes && Função

João Pedro de Souza Santos
jpssantos

(usa Linux Mint)

Enviado em 05/06/2015 - 20:09h

Pessoal, estou tentando resolver esse trabalho da faculdade por meio de funções.. porém esse matéria ainda não foi dada (funções), está dando um erro "Segmentation fault" quando tento girar as matrizes..
Estou no 1º semestre, então não sei se meu código e lógica estão bons..
Aceito críticas para melhorar algo.
Se alguém puder me ajudar agradeço :D
Um grande abraço!

/************************************************************************
Laboratório de Programação

Autor: João Pedro de Souza Santos

Trabalho proposto:

Gerar uma matriz 5x5 aleatória sem repetição,
com opção de girar 90º a direita e esquerda
***********************************************************************/

/* Bibliotecas */

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>

/* Dimensões da Matriz */

#define linha 5
#define coluna 5

int matriz[linha][coluna]; // Declarando variável com escopo GLOBAL

/* Protótipos das funções */

int geraMenu();
int geraMatriz();
int giraDireita();
int giraEsquerda();

/*********************************** MAIN *********************************************/
int main(){

int opcao, valida;

do{
inicio:
geraMenu(); // Chama a função que gera o Menu

printf("\nOpcao desejada -> ");
scanf("%d", &opcao); // Lê a função desejada do menu

valida = 1;

if(opcao < 1 || opcao > 4){
printf("Opcao invalida\n");
printf("Digite a opcao correta!\n");
usleep(1990000);
//_sleep(tempo) para Windows
system("clear");
//system("cls") para Windowns
valida = 0;
} // Testa se a opção é válida

if(!valida) goto inicio; // se não for valida, ir para o inicio

switch(opcao){

case 1: geraMatriz(); break;
case 2: giraDireita(); break;
case 3: giraEsquerda(); break;
}

}while(opcao != 4); // Se a opção desejada for 4, fim do laço

printf("\nFim do Programa\n");

return 0;
}

/************************************** Funções *********************************************/

int geraMenu(){

printf("\n Menu\n");
printf("**********************************\n");
printf("**** 1- Gerar matriz ****\n");
printf("**** 2- Girar 90º a esquerda ****\n");
printf("**** 3- Girar 90º a direita ****\n");
printf("**** 4- Sair ****\n");
printf("**********************************\n");
}

/*********************************************************************************************/

int geraMatriz(){

int i, j, k, l;
int existe;

srand(time(NULL));
system("clear");
//system("cls") para Windows

for(i=0; i < linha; i++){
for(j=0; j < coluna;){
matriz[i][j] = rand()%100;
existe = 0;

for(k=0; k < i; k++){
for(l=0; l < coluna; l++){
if(matriz[i][j] == matriz[k][l]){
existe = 1;
break;
}
}

if(existe) break;
}

if(!existe){
for(k=0; k < j; k++){
if(matriz[i][k] == matriz[i][j]){
existe = 1;
break;
}
}
}

if(!existe) j++;
}
}
/* Mostrando a matriz na tela */
printf("\n");
printf(" Matriz criada\n\n");

for (i=0; i < linha; i++){
for (j=0; j < coluna; j++)
printf("%4d\t", matriz[i][j]);

printf("\n");
}
}
/********************************************************************************************/

int giraDireita(){

int i, j;
int aux[i][j];

for(i=0; i < linha; i++){
for(j=0; j < coluna; j++)
aux[i][j] = matriz[4-j][i];
}

for (i=0; i < linha; i++){
for (j=0; j < coluna; j++){
printf("%4d\t", aux[i][j]);
}

printf("\n");
}
}

/********************************************************************************************/

int giraEsquerda(){

int i, j;
int matriz[i][j];
int aux[i][j];

for(i=0; i < linha; i++){
for(j=0; j < coluna; j++){
aux[i][j] = matriz[j][i-4];
}
}

for (i=0; i < linha; i++){
for (j=0; j < coluna; j++)
printf("%4d\t", aux[i][j]);

printf("\n");
}
}

/**********************************************************************************************/



  


2. Re: Matrizes && Função

Thiago Henrique Hüpner
Thihup

(usa Manjaro Linux)

Enviado em 07/06/2015 - 12:31h

Conseguiu?

Qualquer dúvida só postar aqui.

[]'s

T+

--

Programador encontrado morto na banheira cinco dias após ter sido dado como desaparecido. Junto a ele foi encontrado um shampoo com as seguintes instruções:

LAVAR;
ENXAGUAR;
REPETIR;




3. Re: Matrizes && Função

João Pedro de Souza Santos
jpssantos

(usa Linux Mint)

Enviado em 07/06/2015 - 14:00h

Consegui resolver sozinho :D
Só preciso corrigir alguns bugs..






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts