Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Entre para seguir isso  
wellokinho

Preciso de ajuda em C urgente

Recommended Posts

Pessoal, tenho um trabalho de C pra entrega dia 11 e só falta esse exercício pra mim termina. Eu não to conseguindo joga os elementos da matriz no vetor e também não sei quantos vetores usar( no começo pensei em 10 vetores, por que a matriz é 30x11, só que a coluna 0 e a linha 0 são as “molduras” da matriz) e ai depois eu teria que ordenar os vetores(isso eu sei fazer xD) e mostrar as 10 intersecções com maior numero de acidentes da matriz e o numero de acidentes ocorridos, vou colocar o enunciado do exercício e o código que eu já fiz(vou colocar ele comentado mesmo).

Exercício 1. [Ciência dos Computadores - Tremblay Bunt] Uma análise de acidentes de trânsito está sendo executada na ilha de Manhattan, cidade de New York. Por conveniência as ruas e avenidas são representadas por uma matriz como segue:

30 31 32 33 … 58

1

2 9

3

10

onde as linhas indicam as avenidas da Primeira Avenida até a Décima Avenida, e as colunas indicam as ruas da Rua 30 à Rua 58. Os elementos da matriz indicam o número de acidentes ocorridos nas proximidades no período pré-fixado. Por exemplo, no caso mostrado, nove acidentes ocorreram próximos à intersecção da Segunda Avenida com a Rua 33. Um número desconhecido de dados de acidentes é lido. Cada acidente é dado por um par de números que descrevem sua localização. Por exemplo, o par 7, 42 designa um acidente ocorrido nas vizinhanças da Sétima Avenida com a Rua 42. Formular um algoritmo para ler estas informações e preparar uma matriz da forma mostrada. Utilizar um teste para determinar o fim dos dados. Incorporar um teste para verificar se os dados não caem antes da Primeira Avenida ou após a Décima Avenida, nem antes da Rua 30 ou após a Rua 58. Rejeitar qualquer dado inválido com uma mensagem. Após ler e armazenar os dados, produzir uma listagem das dez intersecções mais perigosas.


#include <stdio.h>
#include <stdlib.h>
#define TAM_L 11
#define TAM_C 30
#define TAM_VET 290

/* definir o tamanho da tela com largura 181 e altura 60 para caber toda a matriz*/
int main()
{
int matriz[TAM_L][TAM_C],i,j;
int opcao;
int x, y, rua, av, acidentes, aux, aux1, cont;
int vetor[TAM_VET], a;

/* matriz[i][j] = 0; tentativa frustrada de fazer a digitação dar certo...*/


printf("---------------------------------------------------------------\n\n\n");
printf("\n \t1-Sorteio Aleatorio");
printf("\n \t2-Digitacao Pelo Usuario\n\n\n");
printf("---------------------------------------------------------------\n\n\n");
printf("\n\tDigite a opcao desejada: ");
scanf("%d",&opcao);
printf("\n\n\n\n\n\n");

switch (opcao)
{
/* Gera a matriz randomicamente*/
/*j=colunas e i=linhas*/
/* x e y no "palno cartesiano" */
case 1:

srand(time(NULL));

matriz[0][0] = 0;
/* preenche a coluna e a linha 0 da matriz com as ruas e avenidas*/
for (x=1;x<TAM_C;x++)
{
matriz[0][x] = x + 29;
}
for (y=1;y<TAM_L;y++)
{
matriz[y][0] = y ;
}

for (i=1;i<TAM_L;i++)
{
for(j=1;j<TAM_C;j++)
{
matriz[i][j]=rand()%10+89;
}
}

for (i=0;i<TAM_L;i++)

for(j=0;j<TAM_C;j++)
{
printf(" %d ",matriz[i][j]);
}
printf("\n");
}
break;

case 2:

/* Se o usuario escolher digitar os dados.*/

for (i=1;i<TAM_L;i++)
{
for(j=1;j<TAM_C;j++)
{
do{
printf("\nDigite os acidentes da Avenida %d com a Rua %d: ",i,j);
scanf("%d",&matriz[i][j]);
if ((matriz[i][j]>99)||(matriz[i][j]<1))
{
printf("\nNumero Invalido");
}
}while((matriz[i][j]>99)||(matriz[i][j]<1));
}
}
matriz[0][0] = 0;
/* preenche a coluna e a linha 0 da matriz com as ruas e avenidas*/
for (x=1;x<TAM_C;x++)
{
matriz[0][x] = x + 29;
}
for (y=1;y<TAM_L;y++)
{
matriz[y][0] = y ;
}
for (i=1;i<TAM_C;i++)
{
for(j=1;j<TAM_L;j++)
{
printf("%d",matriz[i][j]);
}
printf("\n");
}
break;
}

/* rua = colunas = j / avenida = linhas = i */
/* verifica se os valores digitados para as ruas e avenidas são válidos.*/
do{
printf("\n\nDigite a Rua Desejada (30 a 58): ");
scanf("%d", &rua);
if ((rua < 30) || (rua > 58))
{
printf("Digite o numero de uma rua valida, entre 30 e 58.");
}
}while((rua < 30) || (rua > 58));

do{
printf("\n\nDigite a Avenida Desejada (1 a 10): ");
scanf("%d", &av);
if ((av < 1) || (av > 10))
{
printf("Digite o numero de uma Avenida valida, entre 1 e 10.");
}
}while ((av < 1) || (av > 10));

/* Percorre a matriz com os dados digitados */
rua = rua - 29;
acidentes = (matriz[av][rua]);
rua = rua + 29;
printf("\n\nA esquina da rua [ %d ] com a avenida [ %d ] teve %d acidentes!\n\n ", rua,av,acidentes);

/* joga os elementos da matriz dentro de um vetor para ordenar e mostrar as 10
intersecções mais perigosas.... no momento ele só joga uma posição do vetor */

/* for (a=0;a<TAM_VET;a++)
{
for (i=1;i<TAM_L;i++)
{
for(j=1;j<TAM_C;j++)
{
vetor[a] = matriz[i][j];
}
}
}

for (a=0;a<TAM_VET;a++)
{
printf("\n A Posicao %d e : [%d]",a,vetor[a]);
}*/
/*printf("\n\nAs 10 interseccoes mais perigosas: \n\n");*/

/*for (cont=0;cont<10;cont++)
{
for (aux1>0;aux1<10;aux1--)
{
printf("\n\n[%d] A interseccao [ %d ] [ %d ] teve %d acidentes! ",aux,matriz[i][j],acidentes);
}
}*/
system("PAUSE");
return 0;
}
/* pra mostrar as 10 mais perigosas precisa de um contador do for e um if pra pergunta se uma
variavel auxiliar éh maior q a posição aux+1 dela e coletar esses dados da ordenação da matriz
e descobrir um jeito de ler a ordenação e mostrar na ordem certa as 10 mais perigosas...*/

Pessoal ajuda aee urgentee!! valeu!!!

PS: link com o enunciado original (penúltimo exercício): http://www.inf.ufrgs.br/~nina/INF202/ListasPascal/ArrNDIM.html

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×