Jump to content

Fazer ciclo até input ser NULL


lesiano
 Share

Recommended Posts

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...

Link to comment
Share on other sites

Guest id194

Isso é do problema do teste de ontem 😄

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);
Link to comment
Share on other 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!
}

Desaparecido.

Link to comment
Share on other sites

Guest id194

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 😛

Link to comment
Share on other 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 😛

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

Desaparecido.

Link to comment
Share on other sites

Guest id194

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 😄

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.

Link to comment
Share on other 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 :😛

Desaparecido.

Link to comment
Share on other sites

Guest id194

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.

Link to comment
Share on other 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...

Link to comment
Share on other 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.

Desaparecido.

Link to comment
Share on other 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.

Link to comment
Share on other sites

Guest id194
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...

Link to comment
Share on other 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...

Link to comment
Share on other sites

Isso é do problema do teste de ontem 😄

...

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?

Link to comment
Share on other sites

Guest id194

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...

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.