alisonfw 0 Denunciar post Postado Junho 8, 2013 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
Israel Laurensi 1 Denunciar post Postado Junho 10, 2013 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
alisonfw 0 Denunciar post Postado Junho 10, 2013 Resolvido, era isso o erro mesmo e atribuição do bairro eu criei um vetor bairro[5] e atribui a cada posição um bairro. Valeu Compartilhar este post Link para o post Compartilhar em outros sites