Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

alisonfw

Erro Matriz, Procedimento

Recommended Posts

Estou com dificuldade para fazer esse programa em C. Basicamente ele exibe uma matriz 5x5, depois o valor mais alto, qual o bairro e depois exibe com a alteração de 5% no valor para apartamentos < 250

Eu consegui fazer no VisualG e ele está rodando 100%

 

algoritmo 
// Função :
// Autor : 
// Data : 
// Seção de Declarações

var

matriz:vetor [1..5,1..5] de inteiro
i, j:inteiro
maiorvalor:inteiro
l,m:inteiro
bairro:literal

procedimento lermatriz

var

inicio

para i de 1 ate 5 faca
   para j de 1 ate 5 faca
      matriz[1,1] <- 70
      matriz[2,1] <- 120
      matriz[3,1] <- 100
      matriz[4,1] <- 180
      matriz[5,1] <- 90

      matriz[1,2] <- 80
      matriz[2,2] <- 180
      matriz[3,2] <- 150
      matriz[4,2] <- 250
      matriz[5,2] <- 130

      matriz[1,3] <- 90
      matriz[2,3] <- 240
      matriz[3,3] <- 200
      matriz[4,3] <- 360
      matriz[5,3] <- 170

      matriz[1,4] <- 100
      matriz[2,4] <- 300
      matriz[3,4] <- 300
      matriz[4,4] <- 410
      matriz[5,4] <- 210

      matriz[1,5] <- 200
      matriz[2,5] <- 360
      matriz[3,5] <- 450
      matriz[4,5] <- 540
      matriz[5,5] <- 350
   fimpara
fimpara

Escreva (" Valores Expressos em MIL REAIS")

fimprocedimento

procedimento escrevamatriz

var

inicio

para i de 1 ate 5 faca
   escreval ("")
   para j de 1 ate 5 faca
      escreva (matriz[i,j]:6)
   fimpara
fimpara

fimprocedimento

funcao maiorpreco:inteiro

var

maior:inteiro

inicio

maior<-0

para i de 1 ate 5 faca
   para j de 1 ate 5 faca
      Se (matriz[i,j] > maior) entao
         maior <-matriz[i, j]
         maiorvalor<-i
      fimse
   fimpara

fimpara

retorne maior

fimfuncao

funcao menorpreco:inteiro

var

min,menor:inteiro

inicio

menor<-l
para j de 1 ate 5 faca
   Se (matriz[maiorvalor,j] < menor) entao
      menor <- matriz[maiorvalor,j]
   fimse
   min<- menor
fimpara

retorne min

fimfuncao

procedimento aumentoap

var

k:real

inicio

para i de 1 ate 5 faca
   escreval("")
   para j de 1 ate 5 faca
      se matriz[i,j]<250 entao
         k<-matriz[i,j] + (matriz[i,j]*0.05)
      fimse
      se matriz[i,j] >= 250 entao
         k<-matriz[i,j]
      fimse
      escreva (k:6)
   fimpara
fimpara
escreval ("")
escreval ("")

fimprocedimento

inicio

lermatriz

escrevamatriz

l<-maiorpreco
Escreval (" ")
escreval (" ")
escreva("O valor do apartamento mais caro de Porto Alegre é:",l," mil Reais")
escreval ("")

m<-menorpreco

para i de 1 ate 5 faca
   se maiorvalor = 1 entao
      bairro<- "Centro"
   fimse

   se maiorvalor = 2 entao
      bairro<- "Bela Vista"
   fimse

   se maiorvalor = 3 entao
      bairro<- "Petrópolis"
   fimse

   se maiorvalor = 4 entao
      bairro<- "Moinhos"
   fimse

   se maiorvalor = 5 entao
      bairro<- "Bom Fim"
   fimse
fimpara





escreva("O bairro que tem o apartamento mais caro de Porto Alegre é: ",bairro)
escreval ("")
escreva("O valor do apartamento mais barato no bairro ",bairro," é: ",m," mil Reais")
escreval (" ")

aumentoap

fimalgoritmo

Em C eu comecei, mas ele tá dando erro, ele mostra a matriz mas a posicao 0,4 substitui a posicao 1,0, dps a 1,4 substitui a 2,0 e assim por diante. Depois na atribuição da variavel bairro para colocar uma string de caracteres eu nao aceita a atribuiçao "=" se eu nao colocar a comparação "==" ele nao roda, estou usando "==" só para rodar, não sei onde está o erro. Alguém poderia me ajudar?

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>

int Matriz[4][4];
int i,j,maiorvalor,l,m;
char bairro[20];



void lermatriz()
{
           Matriz [0][0] = 70;
           Matriz [0][1] = 120;
           Matriz [0][2] = 100;
           Matriz [0][3] = 180;
           Matriz [0][4] = 90;
           Matriz [1][0] = 80;
           Matriz [1][1] = 180;
           Matriz [1][2] = 150;
           Matriz [1][3] = 250;
           Matriz [1][4] = 130;
           Matriz [2][0] = 90;
           Matriz [2][1] = 240;
           Matriz [2][2] = 200;
           Matriz [2][3] = 360;
           Matriz [2][4] = 170;
           Matriz [3][0] = 100;
           Matriz [3][1] = 300;
           Matriz [3][2] = 300;
           Matriz [3][3] = 410;
           Matriz [3][4] = 210;
           Matriz [4][0] = 200;
           Matriz [4][1] = 360;
           Matriz [4][2] = 450;
           Matriz [4][3] = 540;
           Matriz [4][4] = 350;

            printf ("Valores Expressos em Mil Reais \n");
}

void escrevamatriz()
{

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


 int maiorpreco()
 {
 int maior;
 maior = 0;

 for (i=0;i<5;i++){
  for (j=0;j<5;j++);

      if (Matriz[i][j] > maior){
      maior = Matriz[i][j];
      }
      else{
      maiorvalor = i;}

      }
      return maior;
  }


 int menorpreco()
 {
 int min,menor;
 menor = l;

   for (j=0;j<5;j++)
   {
       if (Matriz[maiorvalor][j] < menor)
          menor = Matriz[maiorvalor][j];
          else
          min = menor;
   }
    return min;
  }

 void aumentoap()
 {
   float k;

   for (i=0;i<5;i++){
     for (j=0;j<5;j++);

       if (Matriz[i][j] < 250){
         k = Matriz[i][j] + (Matriz[i][j]*5/100);
         }
         if (Matriz[i][j] >= 250){
            k = Matriz [i][j];
         }
         printf ("%f",k);
     }
   }

int main()
{



     lermatriz();
     escrevamatriz();

l = maiorpreco();
m = menorpreco();


   for (i=0;i<5;i++)
   {
       if (maiorvalor == 1){
        bairro == ("centro");
        }
        else if (maiorvalor == 2){
        bairro = ("bela vista");
        }
        else if (maiorvalor == 3){
        bairro = ("petropoles");
        }
        else if (maiorvalor == 4){
        bairro = ("moinhos");
        }
        else (maiorvalor == 5){
        bairro = ("bom fim");
        }
   }

   printf ("O valor do apartamento mais caro de Porto Alegre e:%d Mil Reais",l);
   printf ("\n");
   printf ("O bairro que tem o apartamento mais caro de Porto Alegre e:%s",bairro);
   printf ("\n");
   printf ("O valor do apartamento mais barato no bairro %s e: %d mil Reais",bairro,m);
   printf ("\n");

   aumentoap();



 }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em relação a matriz, o problema está no tamanho declarado. A matriz que você deseja é 5x5, portanto, a matriz deve corresponder ao tamanho desejado. É só olhar para as suas atribuições dos elementos da matriz, que vão de 0 a 4, portanto, 5 linhas e 5 colunas. Sua declaração devia ser: int Matriz[5][5]

Quanto as variáveis que representam os bairros, a atribuição não está correta. Em C, atribuir cadeias de caracteres diretamente a uma variável já declarada não é possível. De uma olhada na função strcpy(), da biblioteca string.h.

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.