Headbanger_tr00 Postado Junho 30, 2010 Denunciar Share Postado Junho 30, 2010 (editado) 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 diacom precisão de segundos . Um dos programas deve usar a estrutura de controle FOR e o outroWHILE. Cada hora deve ser impressa no formato hh:mm:ss, um por linha.00:00:0000:00:0100:00:02...23:59:5723:59:5823:59:592)Faça dois programas que imprimam na saída padrão (tela) um retângulo sólido N x Mformado por conjuntos de letras 'o's separadas por espaços. Um dos programas deve usar aestrutura de controle FOR e o outro WHILE. A largura N e o comprimento M devem ser lidos daentrada padrão (tela).Entrada:4 10Saída:o o o o o o o o o oo o o o o o o o o oo o o o o o o o o oo o o o o o o o o oAgradeço à quem puder me ajudar! :blush: Editado Junho 30, 2010 por quintelab Título alterado Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonathan Queiroz Postado Julho 10, 2010 Denunciar Share Postado Julho 10, 2010 As suas chaves estão incorretas. Ao invés de:{ while(condição) instruções } O correto é: while(condição){ instruções } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Headbanger_tr00 Postado Julho 11, 2010 Autor Denunciar Share Postado Julho 11, 2010 #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. =/ Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonathan Queiroz Postado Julho 11, 2010 Denunciar Share Postado Julho 11, 2010 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"); } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Headbanger_tr00 Postado Julho 11, 2010 Autor Denunciar Share Postado Julho 11, 2010 (editado) Deu certo, valeu! =PVou 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 Julho 11, 2010 por Headbanger_tr00 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Julho 11, 2010 Denunciar Share Postado Julho 11, 2010 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonathan Queiroz Postado Julho 11, 2010 Denunciar Share Postado Julho 11, 2010 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Headbanger_tr00 Postado Julho 12, 2010 Autor Denunciar Share Postado Julho 12, 2010 (editado) Acho que todos os programas que eu perguntei já foram resolvidos. =PNã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 Julho 12, 2010 por Headbanger_tr00 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 webpantoja Postado Julho 12, 2010 Denunciar Share Postado Julho 12, 2010 Headbanger,Que bom que você conseguiu evoluir aí nos programas.Agora, eu juro que não consegui entender a sua última pergunta... tenta expor de forma mais condensada qual sua dúvida.Att,WebPantoja Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Headbanger_tr00 Postado Julho 12, 2010 Autor Denunciar Share Postado Julho 12, 2010 É um programa bem parecido com o anterior, com uma pequena diferença.O anterior gerava retângulos/quadrados fechados:ooooooooooooooooE esse novo gera quadrados/retângulos vazios (expressei-me mal com 'abertos', he he), assim:ooooo oo oooooMesma coisa mesmo, mas não consigo entender como criar um programa que deixe as figuras vazias. =/ Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonathan Queiroz Postado Julho 12, 2010 Denunciar Share Postado Julho 12, 2010 ooooo oo oooooAcho 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(" "); } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Headbanger_tr00 Postado Julho 13, 2010 Autor Denunciar Share Postado Julho 13, 2010 #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? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Durub Postado Julho 13, 2010 Denunciar Share Postado Julho 13, 2010 Headbanger, somente if's aceitam a expressão else após seu fechamento. while, for, etc. são apenas estruturas de repetição.Abraços. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Headbanger_tr00 Postado Julho 14, 2010 Autor Denunciar Share Postado Julho 14, 2010 Ainda não aprendi direito a mexer com If. No caso, como ficaria o código adaptado com if's e else's? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 webpantoja Postado Julho 14, 2010 Denunciar Share Postado Julho 14, 2010 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"); } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonathan Queiroz Postado Julho 15, 2010 Denunciar Share Postado Julho 15, 2010 O webpantoja sem querer esqueceu um ponto-e-vírgula na primeira condicional (a segunda está correta). O correto é printf (" "); ain invés de printf (" "). Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Headbanger_tr00 Postado Julho 16, 2010 Autor Denunciar Share Postado Julho 16, 2010 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/ Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonathan Queiroz Postado Julho 16, 2010 Denunciar Share Postado Julho 16, 2010 Que bom que conseguiu! Qualquer coisa posta aí.Obs.:O tópico foi marcado como Resolvido. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 maltagomes Postado Março 13, 2015 Denunciar Share Postado Março 13, 2015 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.. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 maltagomes Postado Março 14, 2015 Denunciar Share Postado Março 14, 2015 Alguém poderia me ajudar a resolver esses dois exercícios. 1-Alterar a busca sequencial para que ela encontre mais de um registro com a mesma chave. 2-adicionar uma função para alterar um registro no programa de busca binária Se alguém poder me ajudar agradeço desde já Obrigado Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Headbanger_tr00
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 quintelabTítulo alterado
Link para o comentário
Compartilhar em outros sites
44 respostass a esta questão
Posts Recomendados
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.