Ir ao conteúdo

Posts recomendados

Postado

Boa tarde, galera preciso fazer um programa que leia o numero de pessoas que entram no elevador, a quantidade de andares do prédio o usuário vai informar, fiz alguma parte do codigo mas estou confuso, se alguém tivesse meio que pronto o código, eu agradeço.

 

844777316_WhatsAppImage2021-06-07at10_28_40.thumb.jpeg.8320ccbec76da5a4c14c22885ae6b076.jpeg

Postado
19 horas atrás, Cristiano1986 disse:

Boa tarde, galera preciso fazer um programa que leia o numero de pessoas que entram no elevador, a quantidade de andares do prédio o usuário vai informar, fiz alguma parte do codigo mas estou confuso, se alguém tivesse meio que pronto o código, eu agradeço.

 

844777316_WhatsAppImage2021-06-07at10_28_40.thumb.jpeg.8320ccbec76da5a4c14c22885ae6b076.jpeg

#include<stdio.h>
#include<locale.h>
 
 main(){ 
 
 int NumAndares, Andar, SaidaPessoas, EntradaPessoas, TotalPessoas;
 
      do{
  printf ("\nInforme a quantidade de andares do predio:");
 scanf ("%i" ,&NumAndares);
 
 
 for(Andar= 1; Andar < NumAndares; Andar++)
  {
         
         
   if(Andar >= 2){
             
                 do{
                      printf ("\nInforme o numero de pessoas que entrou no andar %d:", Andar);
                     scanf ("%i" ,&EntradaPessoas);
                 
                     if(EntradaPessoas<=0)
                    {
                      printf("\n ===>> O Numero de pessoas tem que ser maior que 0.\n");
                        } 
                         
                      } while (EntradaPessoas==0);
                          TotalPessoas= EntradaPessoas;     
                     printf ("\nInforme o numero de pessoas que desceu no andar %d:", Andar);
                     scanf ("%i" ,&SaidaPessoas);
                     TotalPessoas= TotalPessoas - SaidaPessoas; 
                 //TotalPessoas= EntradaPessoas - SaidaPessoas;
                  } else {
                    
                               do{
                                 printf ("\nInforme o numero de pessoas que entrou no andar %d:", Andar);
                                  scanf ("%i" ,&EntradaPessoas);
                             
                                 if(EntradaPessoas<=0)
                                {
                                      printf("\n ===>> O Numero de pessoas tem que ser menor que 0.\n");
                                } 
                                 TotalPessoas= EntradaPessoas;
                         } while (EntradaPessoas==0);
                           // TotalPessoas= EntradaPessoas - SaidaPessoas; 
                        }
         
               //TotalPessoas= EntradaPessoas - SaidaPessoas;
                TotalPessoas= TotalPessoas-15;
                 if(TotalPessoas>= 15){
                
                 printf("\n ===>> Excesso de passageiros. %d devem sair\n", TotalPessoas);
            }
         
   }
            if(NumAndares<=0)
                {
                  printf("\n ===>> Por favor informe a quantidade de andares.\n");
                } 
    // printf ("\nInforme o numero de pessoas que entrou no andar %d:", totalpessoas);
        } while (NumAndares==0);  
    
}

  • Amei 1
Postado

@devair1010 Inseri o código, abaixo esta melhor:

 

#include<stdio.h>
#include<locale.h>
 
 main(){ 
 
 int NumAndares, Andar, SaidaPessoas, EntradaPessoas, TotalPessoas;
 
      do{
          printf ("\nInforme a quantidade de andares do predio:");
         scanf ("%i" ,&NumAndares);
 
             for(Andar=1; Andar<NumAndares; Andar++)
              {
                      printf ("\nInforme o numero de pessoas que entrou no andar %d:", Andar);
                     scanf ("%i" ,&EntradaPessoas);
                   do{
                         if(EntradaPessoas<=0)
                            {
                             printf("\n ===>> O Numero de pessoas tem que ser maior que 0.\n");
                            } 
                                         
                    } while (EntradaPessoas==0);
                    //TotalPessoas= EntradaPessoas;
                //    TotalPessoas= EntradaPessoas;     
                   if(Andar >= 2){
                                    printf ("\nInforme o numero de pessoas que desceu no andar %d:", Andar);
                                    scanf ("%i" ,&SaidaPessoas);
                                  // TotalPessoas= TotalPessoas - SaidaPessoas; 
                                 //TotalPessoas= EntradaPessoas - SaidaPessoas;
                                  } 
                         
                           
                    //    TotalPessoas= EntradaPessoas - SaidaPessoas;
                            //TotalPessoas= TotalPessoas-15;
                    //    if(TotalPessoas>= 15){
                        //        printf("\n ===>> Excesso de passageiros. %d devem sair\n", TotalPessoas);
                               //      }
                         //
               }
                    
               
                                     
            if(NumAndares<=0 || NumAndares==1)
                {
                  printf("\n ===>> Por favor informe a quantidade de andares.\n");
                } 
                // printf ("\nInforme o numero de pessoas que entrou no andar %d:", totalpessoas);
        } while (NumAndares==0 || NumAndares==1);  
    
}

Postado
22 horas atrás, Cristiano1986 disse:

fiz alguma parte do codigo mas estou confuso, se alguém tivesse meio que pronto o código, eu agradeço.

 

Seria bacana lguém ter o código "meio que pronto" hein? E seria uma boa ocasião para agradecer a sua sorte e a ajuda.

 

Enquanto isso:

 

Use o tal botão "code" para colocar seu código dentro do formulário. É melhor pra você e pra quem puder te ajudar.

 

Sobre seu programa:

 

Está indo pelo caminho comum. E o caminho comum não sei porque é sempre o muito complicado: não perca seu tempo lendo dados e perguntando coisas pra você mesmo toda vez que for testar isso. Só vai perder tempo. Muito tempo.

 

Use constantes. Comece logo a testar a lógica e não dúzias de printf() scanf() fgets() ou sei lá o que. 

 

Não precisa de menus, perguntas e respostas, nada.

 

Escreva em torno dos dados. Tem apenas um elevador e a passagem do tempo. Leia de um arquivo ou de um vetor. O simples.

 

O que são os dados?

  • quantos andares tem  o prédio. Acha mesmo que precisa ler isso TODA vez que for testar o programa? Não precisa.
  • para cada andar: quantos desceram e subiram no elevador.
  • ao parar em cada andar vai resolver se excedeu a capacidade ou não e agir de acordo. No mundo real pode ter um sensor de peso e disparar um alarme, acender um alerta e parar a máquina enquanto o peso não estiver dentro do limite
  • a entrada pode ser em linhas no formato AA +NN -NN onde tem o óbvio: o andar em que parou, quantos subiram e quantos desceram. Pode ler isso num único comando em C, claro. Uma vez que sabe quantos subiram e quantos desceram e obviamente sabe quantos tinham lá dentro e a capacidade em termos do número de pessoas, sabe o que fazer para atender o enunciado: somar e subtrair.
  • ao chegar no ;ultimo andar sabe quantos estarão descendo. Subindo não vai ter ninguém, já que é o último andar. 

    EXEMPLO
3 andares
T +2 -1 entram 2 saiu 1...
1 +3 -2 ficaram 2
2 +14 ? ficaram 16 um vai ter que descer
3 -8  vão descer os 7 que estão la dentro

 

Isso acima num arquivo "elevador.txt"  já daria pra testar seu programa:  tem 3 andares mais o térreo. O elevador está subindo. A cada andar entram e / ou saem pessoas. O último andar é o 3 onde deve dizer quantos estão descendo. Nada mais.

 

Note que pode escrever qualquer coisa no arquivo depois dos campos que precisa ler em cada linha então esse arquivo assim mesmo já deve servir.

  • Obrigado 1
Postado

@arfneto amigo, acho que n leu o enunciado da questão (a imagem anexada), ele solicita que o usuário informe, e também n posso usar vetores e matrizes, poderia agradecer, claro, mas quando se tem ajuda, não um textão que só fala nada com nada. 

  • Curtir 1
Postado
4 minutos atrás, Cristiano1986 disse:

@arfneto amigo, acho que n leu o enunciado da questão (a imagem anexada), ele solicita que o usuário informe, e também n posso usar vetores e matrizes, poderia agradecer, claro, mas quando se tem ajuda, não um textão que só fala nada com nada. 

 

Por outro lado talvez seja fácil taxar algo que não leu direito como um textão e avaliar o conteúdo como "nada com nada"... 

 

Em 09/06/2021 às 13:21, arfneto disse:

Leia de um arquivo ou de um vetor. O simples.

 

E eu te dei um exemplo...

 

3 andares
T +2 -1 entram 2 saiu 1...
1 +3 -2 ficaram 2
2 +14 ? ficaram 16 um vai ter que descer
3 -8  vão descer os 7 que estão la dentro

 

Isso aí acima, em um arquivo ou vetor, resolveria o seu problema. E seria a mesma coisa se o cara digitar linha a linha. Só que se o cara for você testando o programa talvez entenda o quanto isso é inadequado e chato. Não sei se alguém pode preferir ficar digitando linhas e linhas de testes enquanto o programa está sendo escrito e eventualmente fecha na cara do usuário (autor) depois dele digitar 10 linhas de campos de resposta... Talvez seja seu caso, claro, mas não é o comum.

 

Não vi sua solução, mas posso te mostrar uma já que resolveu :) Podemos estar os dois certos. Eu estou, ao menos, só que o problema não é minha tarefa. Só estou tentando ajudar. Talvez pudesse postar sua solução aqui para ajudar outros com problemas parecidos.

 

Não precisa claro agradecer, mesmo que venha a entender o que eu expliquei.

 

Sobre o enunciado...

 

Talvez possa imaginar que o "usuário informar" não quer dizer que não possa ser um arquivo, e mesmo que fosse o caso um arquivo pode ser usado ao invés do teclado usando um simples sinal de '<'. É chamado redirecionamento.

 

Usaria assim em sua solucao:

 

	solucao < elevador.txt

 

E não seria nada novo. Ok, algo com 50 anos pode ser novo numa escala geológica.

 

E você não pode impedir um usuário (como seu instrutor ao corrigir seu programa) de usar arquivos de teste padronizados, a fim de corrigir seu programa e os de seus colegas e avaliar as soluções. Ou acha que ele vai rodar um a um os programas e ficar digitando dezenas de campos para cada programinha de aluno.

 

Sugiro reler o que eu te expliquei e ver se entende algo do tal textão ;) Pode ficar surpreso.

 

 

  • Obrigado 1
Postado
23 minutos atrás, Cristiano1986 disse:

não podia usar VETOR nem MATRIZ, nem buscar as informações em um arquivo externo

 

ok, vou te explicar uma última vez:

  • o arquivo externo é SEMPRE uma possibilidade para essas funções que operam com stdin, stdout e stderr. É a realidade.  Do seu programa por exemplo. scanf(), printf() e funções assim não tem como saber que onde vem os dados. Ou para onde vão.
     
  • seu professor ou instrutor por exemplo não vão ficar parados em frente ao terminal testando seu programa ou os de seus colegas de turma, se é que faz um curso, como te expliquei. Se eles vão, lamento por seu curso. Pelo visto você ficou. 
     
  • vetor ou matriz não fazem diferença, o programa não requer isso. Mas como eu disse podia usar para testar mais rápido, definindo constantes para testar a lógica. Outro caso de realidade. Depois que testar sua lógica e se fosse preciso retirar não faria diferença. 

 

  • Em 08/06/2021 às 15:00, Cristiano1986 disse:

fiz alguma parte do codigo mas estou confuso, se alguém tivesse meio que pronto o código, eu agradeço.

 

Você não postou o programa como está agora. Estava bem ruim inicialmente. Imagino que tenha feito algo positivo já que agora está rodando...
 

Em 09/06/2021 às 15:28, Cristiano1986 disse:

Já resolvi, obrigado

 

Você estava confuso, como disse, e você  queria ver um código meio que pronto. Quando eu puder te mostro um pronto e talvez você entenda porque você está errado em suas afirmações. . . Talvez devesse julgar esses tópicos com mais humildade: provavelmente um usuário que postou o tópico e o programa que postou não saberia julgar propriamente um "textão"  como "nada a ver".... ;) como avaliou o que tentei te explicar

 

Bom que conseguiu resolver.


Talvez devesse se aproximar dessas questões com mais humildade. 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!