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

Pinhalnovo

Euromilhões e Totoloto

Recommended Posts

thoga31

A mim o que me custou foi ver que houve cópia confessa (até aqui tudo bem) e com o pormenor de "não entendo" (também tudo bem) MAS com frases subsequentes que se resumem a "também não quero perceber". Posso ter interpretado mal, mas a ideia que ficou no ar foi a da @Someone querer ter boa nota à custa de trabalhos de outrém uma vez que é uma disciplina que não a cativa nem interessa no matter what.

Reparem: eu comecei a dissecar o código nos primeiros problemas que me surgiram, que foi o das opções válidas, e tentei saber o que é que a @Someone sabia de Pascal para conseguir orientar a minha futura explicação. Ela diz-me uma nota, que sinceramente não me interessa (eu quero saber algo concreto como "sei trabalhar com arrays", e uma nota não me diz isso - eu não sei o que foi avaliado no teste, portanto, de que me serve saber a nota?... penso eu de que...), e eu digo-lhe que tem todas as ferramentas nas suas mãos e para evitar copiar. Aquilo que me pareceu foi que a @Someone não gostou dessa parte - aquela em que eu digo que não vou aceitar trabalhar com um código copiado. Como foi dito, e muito bem, estou no meu direito.

Se assim não é nem foi nem será, as minhas desculpas, mas o caminho da conversa levou-me a concluir isto. Mais, a interpretação feita às minhas palavras levou-me mesmo a concluir o supracitado.

Eu admito quando erro e sei pedir as devidas desculpas, até porque eu não acredito na frase "as desculpas não se pedem, evitam-se". Nem os Deuses do Olimpo se podiam dar ao luxo de dizer isto, se lermos a Mitologia, que eles também erraram muito. Só preciso de perceber, neste caso, onde é que eu errei. Na minha atitude? Qual? A de dizer "não copies que isso não leva a lado nenhum"? A de oferecer ajuda com um código feito por ela?

Mais, reforço algo que a @Someone disse: ela referiu que o professor a ensinou. A minha questão é: eu dei a oportunidade de a ensinar, mas sem ter por base o código do OP deste tópico. Fui mais duro nas minhas palavras? É provável, creio que de vez em quando é preciso para espevitar uma pessoa... a questão é se a pessoa quer ser espevitada. Portanto, eu não tive a oportunidade de ensinar nada até porque me foi dito que não havia a intenção de aprender.

Eu não pretendo seguir nada que se pareça com informática, e portanto a minha intenção nesta disciplina não é aprender nem treinar, mas sim tirar uma boa nota e aumentar a minha média.

Por último, e reforço... Eu recusei-me a ajudar? Eu recusei-me a ensinar?

Portanto, para evitar o encerramento abrupto do programa, precisas de controlar o input do utilizador. Para isto tens as estruturas de repetição (ou ciclos). Dos três que tens à disposição, escolhe o que melhor se adapta à situação - e é aqui que começas a pensar, não pode ser o professor a dizer-te tudo, nem nós. Nós orientamos. ;)

(...)

Se te dedicares a fazer um código teu, eu estarei aqui para ajudar, assim como os outros membros.

Eu estou aqui, enquanto membro do P@P, para ajudar e orientar e até ensinar [...].

(...)

Nós podemos-te ajudar, e se estiveres aqui até vais conseguir terminar hoje, e vais ver que é bem mais fácil do que parece. O segredo é o que disse: dividir o problema em pedaços pequenos, pedaços esses que tu com certeza sabes resolver. Tu estás a ver o exercício como algo mais complexo porque estás a ver o problema todo de uma vez.

Como diria a minha professora de Aplicações Informáticas (também tive, sim), "inspira, calma, e divide". Assim que se tem um problema "dissecado", é mesmo simples, porque depois é só juntar peças.

Eu estou de consciência tranquila, e fico feliz por saber que no final se tenha chegado a um código correcto.

Edited by thoga31

Knowledge is free!

Share this post


Link to post
Share on other sites
pwseo

Sim, compreendo que a intenção da Someone não seja aprender ou treinar ao longo do sua vida o que não quer dizer que não estivesse disposta a compreender o problema actual e aprender a resolvê-lo. Mas isto depende sempre da interpretação que fazemos, claro (e eu posso estar errado, obviamente).

De qualquer modo, não critiquei a tua atitude, thoga31 (afinal de contas, ofereceste a tua ajuda). Referi apenas que me pareceu haver alguns mal-entendidos que azedaram a conversa para o final (ex.: dizer que a Someone só tirou um 16 por ter copiado).

  • Vote 1

Share this post


Link to post
Share on other sites
Pinhalnovo

Bem é preciso é ter calma.. Estive esta semana no tempo livre a eliminar completamente o erro do utilizador ao invés de colocar o programa com um aspecto mais janota e tal. Penso que é preferível que seja completamente funcional ao invés de bonitinho. Ontem é que me lembrei que não tinha colocado os números ordenados.

Tentei fazer como o CRLF mencionou mas não fazia o pretendido.

Program Euromilhoes_Totoloto;
Var Resp,RespF:Char;
   Apost,I,A,E:Integer;
   Num:array[1..6]of Integer;
   Est:array[1..2]of Integer;
Begin
 WriteLn ('Bem-Vindo! Este é um programa gerador de apostas do Euromilhões e do Totoloto.');
 Repeat
     Repeat
     WriteLn('Pretende efectuar apostas no Euromilhões ou no Totoloto?');
     WriteLn('E-Euromilhões');
     WriteLn('T-Totoloto');
     ReadLn(Resp);
       If (Resp <> 'E') and (Resp <> 'T') Then
        WriteLn ('Opção Inválida!');
   Until ((Resp = 'E') or (Resp = 'T'));
 Case Resp Of
   'E':Begin
         Repeat
           WriteLn('Qual é o numero de apostas?');
           ReadLn(Apost);
         Until ((Apost = 1) or (Apost = 2) or (Apost = 3) or (Apost = 4) or (Apost = 5) or (Apost = 6) or (Apost = 7) or (Apost = 8) or (Apost = 9) or (Apost = 10));
         For A:=1 to Apost do
           Begin
             For I:=1 to 5 do
                 Begin
                   Num[i]:=random(49)+1;
                 End;
             Writeln('Numeros da Aposta ', A, ':', ' ', Num[1],' ', Num[2],' ', Num[3],' ', Num[4],' ', Num[5]);
             For E:=1 to 2 do
                 Begin
                   Repeat
                   Est[E]:=random(8)+1;
                   Until (Est[1]<>Est[2]);                  
                 End;
                 WriteLn('Estrelas da Aposta ', A, ':', ' ', Est[1],' ', Est[2]);
                 WriteLn (' ');
           End; 
       End;
    'T':Begin
         Repeat
           WriteLn('Qual é o numero de apostas?');
           Writeln ('Tenha atenção que o número de apostas deve ser par, ou seja, 2, 4, 6, 8 ou 10!');
           ReadLn(Apost);
         Until ((Apost = 2) or (Apost = 4) or (Apost = 6) or (Apost = 8) or (Apost = 10));
         For A:=1 to Apost do
           Begin
             For I:=1 to 6 do
                 Begin
                   Num[i]:=random(48)+1;
                 End;
             Writeln('Numeros da Aposta ', A, ':', ' ', Num[1],' ', Num[2],' ', Num[3],' ', Num[4],' ', Num[5],' ', Num[6]);
             WriteLn (' ');
           End; 
       End;
 End;
 WriteLn ('Pretende continuar a utilizar a aplicação?');
 WriteLn ('S - Sim');
 WriteLn ('N - Não');
 ReadLn (RespF);
 Until (RespF = 'N') or (RespF = 'n');
 WriteLn ('Obrigado por ter utilizado o programa gerador de apostas do Euromilhões e do Totoloto! O programa vai terminar.');
 ReadLn;
End.

Agora falta apenas ordenar.. Ideias ou sugestões?

Edited by nunopicado
Adicionada linguagem GeShi

Share this post


Link to post
Share on other sites
nunopicado

Agora falta apenas ordenar.. Ideias ou sugestões?

Sim.

Tens um algoritmo de ordenação bastante simples, que podes usar aqui.

Chama-se "Bubble Sort", porque os valores mais baixos vão sendo "subidos" como uma bolha até à sua posição correcta.

Para tal, precisas de dois ciclos FOR, e 3 variáveis inteiras, sendo que duas delas são para controlo dos ciclos, e a outra para fazer a inversão de valores quando for necessário.

Tens aqui a forma de implementar:

https://www.portugal-a-programar.pt/topic/51480-ordenacao-algoritmo-bubblesort/

Se houver dúvidas, pergunta nesse tópico. ;)


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
thoga31

O membro não se chama "CRLF", da mesma forma que tu não te chamas "null"...

Questão: vocês não deram ainda procedimentos, funções e o operador in? Esse código todo encafuado no bloco principal está-me a fazer comichão.


Knowledge is free!

Share this post


Link to post
Share on other sites
Someone

Só para concluir e para que não haja mais mal entendidos,

eu quando disse que não queria aprender nem treinar, queria dizer que não queria ficar pro nisto.

Aliás, se aqui vim, era para poder aprender e para a próxima saber fazer sem copiar. Porque se assim não fosse, tinha ido ter com um programador, como colegas meus fizeram, e tinha um trabalho todo xpto em pouco tempo.

A minha nota no teste foi à custa do meu estudo e todos os trabalhos feitos em aula também. Este em concreto, foi o único que copiei e admiti, tanto aqui como ao professor que depois me ajudou.

Peço desculpa por ter medido mal as minhas palavras, e agradeço ao thoga31 por me tentar ajudar e por tudo. E ao pwpeo por tentar ver o meu lado e me "defender".

Com os melhores cumprimentos,

Someone.

Share this post


Link to post
Share on other sites
thoga31

Situação devidamente esclarecida. Espero que sirva de exemplo para que no futuro não sejam feitos juízos de valor precipitados. Desta vez a situação acabou bem, mas nem sempre pode ser assim. Um Aviso ficou por dar, mas desta vez escapou.

Em último lugar, a minha quota parte nesta situação está esclarecida com a @Someone.

Posto isto, @Someone, responde a isto para eu saber se posso introduzir aqui procedimentos ou não :D

vocês não deram ainda procedimentos, funções e o operador in? Esse código todo encafuado no bloco principal está-me a fazer comichão.


Knowledge is free!

Share this post


Link to post
Share on other sites
thoga31

Eu vou já dar algumas dicas:

  1. Podem poupar nos begin e end, quando as instruções de um ciclo ou bloco se resumem a uma linha a uma só instrução, eles podem ser ocultos. Exemplos:
    for i:=1 to 10 do begin
      writeln(i);
    end;
    
    // Pode ser resumido a:
    for i:=1 to 10 do
      writeln(i);
    


    for i:=1 to 9 do begin
      for j:=i to 10 do begin
         if lista[i] > lista[j] then begin
            temp := lista[i];
            lista[i] := lista[j];
            lista[j] := temp;
         end;
      end;
    end;
    
    // pode ser resumido a:
    for i:=1 to 9 do
      for j:=i to 10 do
         if lista[i] > lista[j] then begin
            temp := lista[i];
            lista[i] := lista[j];
            lista[j] := temp;
         end;
    


  2. Se usassem procedimentos, ficava tudo mais bem organizado:
    procedure euromilhoes;
    begin
      // código para o euromilhões
    end;
    
    procedure totoloto;
    begin
      // código para o totoloto
    end;
    
    begin
      repeat
         writeln('1 - euromilhoes');
         writeln('2 - totoloto');
         writeln('0 - sair');
         repeat
            readln(opcao);
         until opcao in [0..2];
         case opcao of
            1 : euromilhoes;
            2 : totoloto;
         end;
      until opcao = 0;
    end.
    


  3. No ponto anterior, usei o operador in:
    repeat
      // qq coisa
    until (aposta=2) or (aposta=4) or (aposta=6) or (aposta=8) or (aposta=10);
    
    // pode ser resumido a:
    repeat
      // qq coisa
    until aposta in [2,4,6,8,10];
    



Knowledge is free!

Share this post


Link to post
Share on other sites
Pinhalnovo

O membro não se chama "CRLF", da mesma forma que tu não te chamas "null"...

Questão: vocês não deram ainda procedimentos, funções e o operador in? Esse código todo encafuado no bloco principal está-me a fazer comichão.

Tens razão. O membro e o passarito. Olhei a pressa pois ando mesmo sem tempo.

Mas não, ainda não demos. E de facto pela forma como disseste fica mais simples mas por agora vou deixar assim.

Vou tentar fazer o que o nunopicado disse.

Edit:

Uso o "Bubble Sort" com o random?

E se sim, uso depois certo? Ou seja imediatamente antes de mostrar as apostas?

Edited by Pinhalnovo

Share this post


Link to post
Share on other sites
thoga31

No meu post, eu já acabei por te dar a solução, não sei se reparaste... :D


Knowledge is free!

Share this post


Link to post
Share on other sites
nunopicado

No meu post, eu já acabei por te dar a solução, não sei se reparaste... :D

i+1 meu velho... i+1! :P


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
Pinhalnovo

Distração :D

Ando a mil a hora. É a fazer 2 e 3 coisas ao mesmo tempo.. Ufff

Edit:

Está a dar erro na linha 32..

Program Euromilhoes_Totoloto;
Var Resp,RespF:Char;
   Apost,I,A,E,J,K,Temp:Integer;
   Num:array[1..6]of Integer;
   Est:array[1..2]of Integer;
Begin
 WriteLn ('Bem-Vindo! Este é um programa gerador de apostas do Euromilhões e do Totoloto.');
 Repeat
     Repeat
     WriteLn('Pretende efectuar apostas no Euromilhões ou no Totoloto?');
     WriteLn('E-Euromilhões');
     WriteLn('T-Totoloto');
     ReadLn(Resp);
       If (Resp <> 'E') and (Resp <> 'T') Then
        WriteLn ('Opção Inválida!');
   Until ((Resp = 'E') or (Resp = 'T'));
 Case Resp Of
   'E':Begin
         Repeat
           WriteLn('Qual é o numero de apostas?');
           ReadLn(Apost);
         Until ((Apost = 1) or (Apost = 2) or (Apost = 3) or (Apost = 4) or (Apost = 5) or (Apost = 6) or (Apost = 7) or (Apost = 8) or (Apost = 9) or (Apost = 10));
         For A:=1 to Apost do
           Begin
             For I:=1 to 5 do
                 Begin
                   Num[i]:=random(49)+1;
                 End;
                   For K:=1 to 9 do
                     Begin
                       For j:=i to 10 do begin
                         If num[K] > num[j] then
                           Begin
                             Temp := num[K];
                             num[K] := num[j];
                             num[j] := temp;
                            end;
                     end;
                 end;
             Writeln('Numeros da Aposta ', A, ':', ' ', Num[1],' ', Num[2],' ', Num[3],' ', Num[4],' ', Num[5]);
             For E:=1 to 2 do
                 Begin
                   Repeat
                   Est[E]:=random(8)+1;
                   Until (Est[1]<>Est[2]);                  
                 End;
                 WriteLn('Estrelas da Aposta ', A, ':', ' ', Est[1],' ', Est[2]);
                 WriteLn (' ');
           End; 
       End;
    'T':Begin
         Repeat
           WriteLn('Qual é o numero de apostas?');
           Writeln ('Tenha atenção que o número de apostas deve ser par, ou seja, 2, 4, 6, 8 ou 10!');
           ReadLn(Apost);
         Until ((Apost = 2) or (Apost = 4) or (Apost = 6) or (Apost = 8) or (Apost = 10));
         For A:=1 to Apost do
           Begin
             For I:=1 to 6 do
                 Begin
                   Num[i]:=random(48)+1;
                 End;
             Writeln('Numeros da Aposta ', A, ':', ' ', Num[1],' ', Num[2],' ', Num[3],' ', Num[4],' ', Num[5],' ', Num[6]);
             WriteLn (' ');
           End; 
       End;
 End;
 WriteLn ('Pretende continuar a utilizar a aplicação?');
 WriteLn ('S - Sim');
 WriteLn ('N - Não');
 ReadLn (RespF);
 Until (RespF = 'N') or (RespF = 'n');
 WriteLn ('Obrigado por ter utilizado o programa gerador de apostas do Euromilhões e do Totoloto! O programa vai terminar.');
 ReadLn;
End.

Edited by thoga31
GeSHi + indicação da linha 32

Share this post


Link to post
Share on other sites
thoga31

i+1 meu velho... i+1! :P

Bem visto, meu novo... bem visto :D

Está a dar erro na linha 32..

Qual é o erro? Convinha começares a dizer o que é que o compilador te diz, nós não adivinhamos.

E indenta bem o código, ele está ilegível... :confused:

Edited by thoga31

Knowledge is free!

Share this post


Link to post
Share on other sites
Pinhalnovo

Qual é o erro? Convinha começares a dizer o que é que o compilador te diz, nós não adivinhamos.

Diz que a posição 0 está fora dos limites do vector..

Share this post


Link to post
Share on other sites
nunopicado

Diz que a posição 0 está fora dos limites do vector..

O Array Num está declarado de 1 a 6, mas o teu J vai até 10. Logo, dá erro.


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
thoga31

Então tu limitaste-te a copiar aquilo que eu escrevi? Fiz mesmo de propósito a ver no que dava, e deu nisto... blind copy-paste.

O @nunopicado há pouco detectou uma falha. Mais, eu dei apenas um exemplo, há coisas a serem adaptadas, em especial os limites dos ciclos, como o @nunopicado agora indicou...

Antes de copiarem, vejam se percebem...

Edited by thoga31

Knowledge is free!

Share this post


Link to post
Share on other sites
Pinhalnovo

Eu copiei mas no meu compilador eu alterei e tentei perceber.

Mas já consegui :)

O problema é que aparece agora sempre 1 número repetido :confused:

Program Euromilhoes_Totoloto;
Var Resp,RespF:Char;
   Apost,I,A,E,J,Temp:Integer;
   Num:array[1..6]of Integer;
   Est:array[1..2]of Integer;
Begin
 WriteLn ('Bem-Vindo! Este é um programa gerador de apostas do Euromilhões e do Totoloto.');
 Repeat
  Repeat
  WriteLn('Pretende efectuar apostas no Euromilhões ou no Totoloto?');
  WriteLn('E-Euromilhões');
  WriteLn('T-Totoloto');
  ReadLn(Resp);
    If (Resp <> 'E') and (Resp <> 'T') Then
	 WriteLn ('Opção Inválida!');
   Until ((Resp = 'E') or (Resp = 'T'));
 Case Resp Of
   'E':Begin
	  Repeat
	    WriteLn('Qual é o numero de apostas?');
	    ReadLn(Apost);
	  Until ((Apost = 1) or (Apost = 2) or (Apost = 3) or (Apost = 4) or (Apost = 5) or (Apost = 6) or (Apost = 7) or (Apost = 8) or (Apost = 9) or (Apost = 10));
	  For A:=1 to Apost do
	    Begin
		  For I:=1 to 5 do
			  Begin
			    Num[i]:=random(49)+1;
			  End;
			  For I:=1 to 9 do
			    Begin
				  For J:=I to 5 do
				    Begin
					  If Num[i] > Num[j] then
					    Begin
						  Temp := Num[i];
						  Num[i] := Num[j];
						  Num[j] := Temp;
					    End;
				    End;
			    End;
		  Writeln('Numeros da Aposta ', A, ':', ' ', Num[1],' ', Num[2],' ', Num[3],' ', Num[4],' ', Num[5]);
		  For E:=1 to 2 do
			  Begin
			    Repeat
			    Est[E]:=random(8)+1;
			    Until (Est[1]<>Est[2]);				  
			  End;
			  WriteLn('Estrelas da Aposta ', A, ':', ' ', Est[1],' ', Est[2]);
			  WriteLn (' ');
	    End; 
    End;
 'T':Begin
	  Repeat
	    WriteLn('Qual é o numero de apostas?');
	    Writeln ('Tenha atenção que o número de apostas deve ser par, ou seja, 2, 4, 6, 8 ou 10!');
	    ReadLn(Apost);
	  Until ((Apost = 2) or (Apost = 4) or (Apost = 6) or (Apost = 8) or (Apost = 10));
	  For A:=1 to Apost do
	    Begin
		  For I:=1 to 6 do
			  Begin
			    Num[i]:=random(48)+1;
			  End;
			  For I:=1 to 9 do
			    Begin
				  For J:=I to 5 do
				    Begin
					  If Num[i] > Num[j] then
					    Begin
						  Temp := Num[i];
						  Num[i] := Num[j];
						  Num[j] := Temp;
					    End;
				    End;
			    End;
		  Writeln('Numeros da Aposta ', A, ':', ' ', Num[1],' ', Num[2],' ', Num[3],' ', Num[4],' ', Num[5],' ', Num[6]);
		  WriteLn (' ');
	    End; 
    End;
 End;
 WriteLn ('Pretende continuar a utilizar a aplicação?');
 WriteLn ('S ou s - Sim');
 WriteLn ('N ou n - Não');
 ReadLn (RespF);
 Until (RespF = 'N') or (RespF = 'n');
 WriteLn ('Obrigado por ter utilizado o programa gerador de apostas do Euromilhões e do Totoloto! O programa vai terminar.');
 ReadLn;
End.

Share this post


Link to post
Share on other sites
nunopicado

O Bubble Sort continua mal implementado...

Porquê que o J vai de I a 5 e o I vai até 9?

Outra coisa, que mencionei mais em cima: No ciclo interior do Bubble Sort, o J deve começar em I+1, e não em I. Senão ele irá comparar o número com ele próprio.


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
Pinhalnovo

O Bubble Sort continua mal implementado...

Porquê que o J vai de I a 5 e o I vai até 9?

Outra coisa, que mencionei mais em cima: No ciclo interior do Bubble Sort, o J deve começar em I+1, e não em I. Senão ele irá comparar o número com ele próprio.

Então coloco o J e o I até onde? :confused:

Está certo ;)

Share this post


Link to post
Share on other sites
nunopicado

Então coloco o J e o I até onde? :confused:

Está certo ;)

No bubble sort, o ciclo exterior (I) deve ir desde o primeiro índice até ao penúltimo.

O ciclo interior (J) deve ir desde o número seguinte ao índice do ciclo interior (I+1) até ao último.

Ou seja, para 5 elementos a ordenar, o I vai de 1 a 4, e o J vai de I+1 a 5.

Edited by nunopicado

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
thoga31

E agora eu pergunto ao @Pinhalnovo: porque é que o @nunopicado disse que eram aqueles os limites dos ciclos?


Knowledge is free!

Share this post


Link to post
Share on other sites
thoga31

Pois está, mas ainda não me respondeste.

E é normal que algumas apostas tenham números repetidos, não estás a controlar isso em lado nenhum.


Knowledge is free!

Share this post


Link to post
Share on other sites
Pinhalnovo

Pois está, mas ainda não me respondeste.

E é normal que algumas apostas tenham números repetidos, não estás a controlar isso em lado nenhum.

Por causa daquilo que o nuno disse.

Share this post


Link to post
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

×

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.