Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) trabalho


Headbanger_tr00

Pergunta

Alguém tem como me ajudar com um trabalho? São duas perguntas bem simples, mas eu tenho dificuldades (em C)

1)Faça dois programas que imprimam na saída padrão (tela) todas as horas existentes no dia

com precisão de segundos . Um dos programas deve usar a estrutura de controle FOR e o outro

WHILE. Cada hora deve ser impressa no formato hh:mm:ss, um por linha.

00:00:00

00:00:01

00:00:02

.

.

.

23:59:57

23:59:58

23:59:59

2)Faça dois programas que imprimam na saída padrão (tela) um retângulo sólido N x M

formado por conjuntos de letras 'o's separadas por espaços. Um dos programas deve usar a

estrutura de controle FOR e o outro WHILE. A largura N e o comprimento M devem ser lidos da

entrada padrão (tela).

Entrada:

4 10

Saída:

o o o o o o o o o o

o o o o o o o o o o

o o o o o o o o o o

o o o o o o o o o o

Agradeço à quem puder me ajudar! :blush:

Editado por quintelab
Título alterado
Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

#include <stdio.h>
#include <stdlib.h>
int main ()
{
int n, m, i, j;
printf ("Digite linha e colune separadamente:");
scanf ("%d%d", &n, &m);
i=0;
while (i<n){
i++;
}
j=0;
while (j<m){
j++;
}
printf("o");
printf ("\n");
system ("pause");
return 0;
}

Ainda dá o mesmo erro. =/

Link para o comentário
Compartilhar em outros sites

  • 0

O loop secundário deve fazer parte do principal. Além disso, você deve imprimir "o" dentro do loop secundário e "\n" no principal.

Ao invés de:

i=0;
while (i<n){
i++;
}
j=0;
while (j<m){
j++;
}
printf("o");
printf ("\n");
Utilize:
i=0;
while (i<n){
  i++;
  j=0;
  while (j<m){
    printf("o");
    j++;
  }
  printf ("\n");
}

Link para o comentário
Compartilhar em outros sites

  • 0

Deu certo, valeu! =P

Vou tentar aqui fazer o programa das horas com while, postarei se tiver alguma dúvida, thanks! o/

EDIT: Dorgas, não consigo achar o erro:

#include <stdio.h>
#include <stdlib.h>
int main ()
{
int horaDezena = 0, horaUnidade = 0, minutoDezena = 0, minutoUnidade = 0, segundoDezena = 0, segundoUnidade = 0;
while( horaDezena <= 2 )
{
   while( horaUnidade <= 3 )
   {
      while( minutoDezena <=5 )
      {
         while (minutoUnidade <=9)
         {
            while (segundoDezena <=5)
            {
               while (segundoUnidade <=9)
               {
printf ("%d %d %d %d %d %d\n", horaDezena, horaUnidade, minutoDezena, minutoUnidade, segundoDezena, segundoUnidade);
                  segundoUnidade++;
               }
               segundoDezena++;
            }
            minutoUnidade++;
         }
        minutoDezena++;
      }
      horaUnidade++;
   }
  horaDezena++;
}
system ("pause");
return 0;
}

Ele simplesmente pára em 9 segundos. Mas não há nada escrito no código pedindo pra parar em 9 segundos. O quê está errado?

Editado por Headbanger_tr00
Link para o comentário
Compartilhar em outros sites

  • 0

acho q você teria q zerar a variavel do segundo depois do while. alias o certo seria zerar cada variavel antes de comecar o while dela.

exemplo, antes de while( horaDezena <= 2 ), faca horaDezena = 0; e antes de while( horaUnidade <= 3 ), faca horaUnidade = 0; e assim por diante.

assim nem precisa zerar na declaracao.

Link para o comentário
Compartilhar em outros sites

  • 0

Segue o código das linhas e colunas caso alguém esteja precisando:

#include <stdio.h>
#include <stdlib.h>
int main ()
{
int n, m;
printf ("Digite linha e colune separadamente: ");
scanf ("%d%d", &n, &m);
printf("%d - %d\n",n,m);
unsigned int i=0,j;

while(i<n)
{
j=0;
while(j<m)
{
printf("o");
j++;
}
printf ("\n");
i++;
}
system ("pause");
return 0;
}[/codebox]

No código das horas você esqueceu de limpar as variáveis a cada iteração. O correto é algo assim:

[code]#include <stdio.h> #include <stdlib.h> int main () {     int horaDezena=0, horaUnidade, minutoDezena, minutoUnidade, segundoDezena, segundoUnidade;     while( horaDezena <= 2 )     {        horaUnidade=0; //limpa a variável        while( horaUnidade <= 3 )        {           minutoDezena=0; //limpa a variável           while( minutoDezena <=5 )           {              minutoUnidade=0; //limpa a variável              while (minutoUnidade <=9)              {                 segundoDezena=0; //limpa a variável                 while (segundoDezena <=5)                 {                    segundoUnidade=0; //limpa a variável                    while (segundoUnidade <=9)                    {                       printf ("%d %d %d %d %d %d\n", horaDezena, horaUnidade, minutoDezena, minutoUnidade, segundoDezena, segundoUnidade);                       segundoUnidade++;                    }                    segundoDezena++;                 }                 minutoUnidade++;              }             minutoDezena++;           }           horaUnidade++;        }       horaDezena++;     }     system ("pause");     return 0; }[/code]

O mais indicado, no entanto, é, ao invés de uma variável para unidade e dezena, usar uma única variável para todo o número. Você precisaria apenas das variáveis hora, minuto e segundo. Se não me engano o código utilizando for já está assim.

Obs.:

Quando conseguir resolver um problema, poste a solução de forma a ajudar outros usuários com a mesma dúvida.

Edit:

O kuroi postou alguns segundos antes de mim.

Link para o comentário
Compartilhar em outros sites

  • 0

Acho que todos os programas que eu perguntei já foram resolvidos. =P

Não tinha postado a solução pois a mesma já foi dita por outros, sorry.

Acho que o único programa que eu ainda não consigo fazer é o do retângulo/quadrado aberto com for ou while. Vou tentar montá-lo, se não conseguir, posto aqui. No mais, tudo resolvido. o/

EDIT: Apenas uma dúvida de conceito. No programa de figuras fechadas, eu não precisava botar nenhuma informação para não preencher um espaço com 'o'. No programa de figuras abertas, eu certamente precisarei fazer isso. Mas... Como faço essa instrução? Quais comandos eu uso, e onde exatamente eles devem ser escritos?

Editado por Headbanger_tr00
Link para o comentário
Compartilhar em outros sites

  • 0

É um programa bem parecido com o anterior, com uma pequena diferença.

O anterior gerava retângulos/quadrados fechados:

oooo

oooo

oooo

oooo

E esse novo gera quadrados/retângulos vazios (expressei-me mal com 'abertos', he he), assim:

oooo

o o

o o

oooo

Mesma coisa mesmo, mas não consigo entender como criar um programa que deixe as figuras vazias. =/

Link para o comentário
Compartilhar em outros sites

  • 0
oooo

o o

o o

oooo

Acho que o exemplo postou está errado (o fórum removeu o excesso de espaços). Creio que o objetivo seja fazer algo assim:

ooooo
o    o
o    o
o    o
ooooo
Quando precisar manter o espaçamento o recomendável é utilizar a tag code ao invés da quote. Para deixar a figura vazia é relativamente simples. Na primeira e última posição (seja no loop principal ou secundário) você escreve "o"; nas demais, escreve " ". Algo assim:
if(i==0 || i==tamanho_principal-1 || j==0 || j==tamanho_secundario-1){
printf("o");
}else{
printf(" ");
}

Link para o comentário
Compartilhar em outros sites

  • 0

#include <stdio.h>
#include <stdlib.h>
int main ()
{
int n, m;

        printf("Digite linha e coluna separadamente: ");
        scanf("%d %d", &n, &m);

        int matriz[n][m];

        for( int i=0; i<n; i++ )
        {
                for( int j=0; j<m; j++ )
                {
                        printf("o");
                }else{
                printf (" ")
                }
                printf("\n");
        }
        system ("pause"); 
        return 0;
        }
"Expected primary-expression before "else"". Era isso mesmo, não sabia dessa diferença da tag quote pra code, he he. O com while deu errado também:
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int n, m, i, j;
printf ("Digite linha e coluna separadamente:");
scanf ("%d%d", &n, &m);
i=0;
while (i<n){
  i++;
  j=0;
  while (j<m){
    printf("o");
}else{
      printf (" ");
    j++;
  }
  printf ("\n");
}
system ("pause");
return 0;
}

Mesmo erro, novamente (expected primary-expression before else). Sou meio noob, há há. Onde eu errei?

Link para o comentário
Compartilhar em outros sites

  • 0

Head,

Faltou só a condição do IF... não existe else sem if.

for( int i=0; i<n; i++ )
     {
         for( int j=0; j<m; j++ )
         {
            if(i==0 || i==tamanho_principal-1 || j==0 || j==tamanho_secundario-1)
            {
               printf("o");
            }
            else
            {
                printf (" ")
            }
            printf("\n");
        }
   }


   while (i<n)
   {

      j=0;

      while (j<m)
      {
         if(i==0 || i==tamanho_principal-1 || j==0 || j==tamanho_secundario-1)
         {
            printf("o");
         }else
         {
            printf (" ");
         }
         j++;
     }
     i++; // Deixa para incrementar i no final
     printf ("\n");
   }

Link para o comentário
Compartilhar em outros sites

  • 0

Opa, consegui fazer esses programas, mas ficou um pouco diferente do modo quê vocês falaram. =)

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

int main ()
{
         int n, m;

        printf("Digite linha e coluna separadamente: ");
        scanf("%d %d", &n, &m);
        
        for( int i=0; i<n; i++ )
        {
                for( int j=0; j<m; j++)
                   if (0<i && i<n - 1 && 0<j && j<m -1 )
                        printf(" ");
                else
                       printf("o");
                printf("\n");
        }
        system ("pause");
        return 0;
}
E:
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int n, m, i, j;
printf ("Digite linha e coluna separadamente:");
scanf ("%d%d", &n, &m);
i=0;
while (i<n){
   j=0;
  while (j<m){
        if (0<i && i<n - 1 && 0<j && j<m - 1)
    printf(" ");
else
      printf ("o");
    j++;
  }
   i++;
  printf ("\n");
}
system ("pause");
return 0;
}

No mais, obrigado à todos pela ajuda. Todas as minhas dúvidas já foram respondidas. o/

Link para o comentário
Compartilhar em outros sites

  • 0

Alguém pode me ajudar?

Estou com dois problemas e não consigo resolver,

1- busca sequencial com mais de registro na mesma chave

2- adicionar um função para alterar um registro no programa de busca binaria

não estou conseguindo resolver esses problemas se alguém aqui poder me ajudar.

Obrigado..

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...