• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

lesiano

Fazer ciclo até input ser NULL

20 mensagens neste tópico

int main(){
char evento[100];
int concorrente[100],i=0;
unsigned int tempo[100];

do {
	scanf("%c %d %d", &evento[i], &concorrente[i], &evento[i]);
	i++;
} while ( evento[i-1] != NULL );

system("PAUSE");
}

Aqui acontece uma coisa mt estranha. Se na primeira introdução lhe der um valor igual a 0, ele salta logo do ciclo. Mas até pode ser no concorrente ou no evento...

Se ñ lhe der nenhum zero, ele continua infinitamente.

Sinceramente ñ sei o q pensar...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

NULL = zero. Assim que colocas um zero no array evento, a condição do while torna-se verdadeira.

Quando dizes que no concorrente também sai, qual é o input que estás a dar ao programa?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso é do problema do teste de ontem :D

Tendo em conta o problema e que o input são uma série de linhas com 3 argumentos, eu fiz assim:

int x;
do {
    if((x = scanf("%c %d %d\n", &evento, &concorrente, &evento))) {
        // Guarda e/ou trabalha os dados lidos!
    }
} while(x == 3);

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Uma coisa que não tinha reparado antes e que está a acontecer no código de ambos: assim estão a perder o %c. É de propósito?

Nazgulled: podes optimizar isso fazendo só um teste:

while (scanf("%c %d %d\n", &evento, &concorrente, &evento) == 3) {
    // Guarda e/ou trabalha os dados lidos!
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estamos a perder o %c? Qual? O do inicio antes dos %d %d? Não não estamos... Quer dizer, nao sei porque razão estás a dizer, mas será por estar &evento em vez de apenas evento? Não me lembro ao certo o código que usei no teste, mas não perdi o %c.

Sim, eu sei que podia optimizar, mas quando estás a fazer um teste com tempo, o que interessa é que funcione :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estamos a perder o %c? Qual? O do inicio antes dos %d %d? Não não estamos... Quer dizer, nao sei porque razão estás a dizer, mas será por estar &evento em vez de apenas evento? Não me lembro ao certo o código que usei no teste, mas não perdi o %c.

Não, é por estares a escrever no mesmo endereço de memória duas vezes na mesma linha.

Sim, eu sei que podia optimizar, mas quando estás a fazer um teste com tempo, o que interessa é que funcione :P

Às vezes a optimização também conta para a nota. Falo por experiência própria :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tas a falar do &evento, &concorrente, &evento? É que nem se quer tinha reparado até teres dito isso... Copiei do código inicial e alterei umas coisas mas nem tinha reparado no nome da variável, a última era suposto ser &tempo.

Às vezes a optimização também conta para a nota. Falo por experiência própria :D

Não nos testes que a gente fez. O tipo de optimização que mencionaste, os profs tão-se a cagar, se não tivessem, nunca mais acabavam de corrigir os trabalhos de toda a gente a ver linha a linha essas coisas tão pequenas. E além do mais, os testes foram feitos no mooshak, duvido que olhem para o código fora da hora do teste.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tas a falar do &evento, &concorrente, &evento? É que nem se quer tinha reparado até teres dito isso... Copiei do código inicial e alterei umas coisas mas nem tinha reparado no nome da variável, a última era suposto ser &tempo.

Era isso mesmo.

Não nos testes que a gente fez. O tipo de optimização que mencionaste, os profs tão-se a cagar, se não tivessem, nunca mais acabavam de corrigir os trabalhos de toda a gente a ver linha a linha essas coisas tão pequenas. E além do mais, os testes foram feitos no mooshak, duvido que olhem para o código fora da hora do teste.

Então não queiras fazer testes escritos sobre programação concorrente ::P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas ninguém falou em testes escritos, os testes são no mooshak e os alunos são bastantes, os profs cá têm mais que fazer...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas não tem lógica nenhuma falares, é como estarmos a discutir se laranjas são boas e tu chegas aqui "ah e tal bananas é que é", tipo, não faz sentido nenhum... A discussão não era laranjas vs bananas, era apenas sobre laranjas, logo, não faz sentido nenhum falares em bananas.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas ninguém falou em testes escritos, os testes são no mooshak e os alunos são bastantes, os profs cá têm mais que fazer...

Também parece que ninguém tinha falado em testes no mooshak.

Mas não tem lógica nenhuma falares, é como estarmos a discutir se laranjas são boas e tu chegas aqui "ah e tal bananas é que é", tipo, não faz sentido nenhum... A discussão não era laranjas vs bananas, era apenas sobre laranjas, logo, não faz sentido nenhum falares em bananas.

Pode não fazer sentido, mas toda a gente faz isso...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas não tem lógica nenhuma falares, é como estarmos a discutir se laranjas são boas e tu chegas aqui "ah e tal bananas é que é", tipo, não faz sentido nenhum... A discussão não era laranjas vs bananas, era apenas sobre laranjas, logo, não faz sentido nenhum falares em bananas.

Se é isso que achas, ficas na tua que nós ficamos nas nossas, e acabou o offtopic que não vai levar a lado nenhum.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bom, agr em Braga, onde estudo, está a decorrer o grandioso enterro da gata '08. Ora ñ venho aqui há séculos.

Agr é q vi, agradeço a ajuda, ñ fazia a mínima ideia q dava para fazer como aí está, e dizer q na primeira linha me enganei.

Era de facto &evento, &concorrente, &tempo.

Mais uma vez, obg.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Bom, agr em Braga, onde estudo, está a decorrer o grandioso enterro da gata '08. Ora ñ venho aqui há séculos.

Este ano não está a ser lá grande espingarda... Ainda bem que só fui um dia, mas correu tão mal que nem devia ter ido...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Este ano não está a ser lá grande espingarda... Ainda bem que só fui um dia, mas correu tão mal que nem devia ter ido...

Eu fui todos os dias e adorei a cena. De 0 a 10, levava um 7 na boa. A de Coimbra foi mt melhor, mas esta ñ esteve nada mal...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso é do problema do teste de ontem :D

...

Olha uma coisa:

#include <stdio.h>

int main(){
           
           char evento[100];
           int concorrente[100],i=1,t=1,o=0;
           unsigned int tempo[100];

           while (scanf("%c %d %d", &evento, &concorrente, &tempo) == 3) {

              scanf("%c %d %d", &evento[i], &concorrente[i], &tempo[i]);
              i++;
                                                           
              }
              
           while ( t!=i ){
                     
                          if (concorrente[t-1] == concorente[t]   {   (?)
                                                                                           (2?) o++
                                                                                          }
                          t++;

                         }                          
                            
              system("PAUSE");
           }

i) Onde está o (?) quero comparar a posição t-1 do array concorrente com todas as outras, está correcto assim?

ii) No (2?) quero adicionar uma unidade ( concorrente ) ao o. No final é imprimi-lo, certo?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

i) Sim, mas dessa forma apenas estas a comprar com o concorrente anterior e não com todos. Não sei bem o que estas a tentar fazer, mas acho que precisas de comparar com todos...

ii) Não percebi...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

for (k=0;k<i;k++)
for (j=k;j<i;j++)
	if (concorrente[k]==concorrente[j])

Isto assim vai comparar todos os elementos do array. Não sei se é isto que queres, mas já deve dar para ver como se faz.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora