Uso de laços e while().
12 Mai
2016
12 Mai
'16
13:20
Caros, bom dia,
Estou com um problema de lógica de programação. O que eu esperava era o
seguinte: se ts[j]>4, eu abro uma operação e ela só para quando ts[j]<4.
Enquanto uma operação está aberta, não se pode abrir mais nenhuma. Para
isso eu tentei fazer de duas formas, usando e não usando o while, mas eu
não consegui.
Alguém teria alguma idéia sobre o que eu ando pensando errado?
Muito obrigada,
Michelle
Primeira opção:
> v<-c(1,2,5,4,8,9,10,4,2,7,6,8,2)
> ts<-ts(v)
>
> for(j in 1:10){
+ if(ts[j]>4){
+ #vende
+ #compra
+ #compra
+ vc<-10*ts[j]
+ while(ts[j+1]>4) j=j+1
+ for(k in j+1:10){
+ if(ts[k]<4){
+ vc2<-7*ts[k]
+
+ }
+ }
+ }
+ else print("Não houve abertura de processo")
+ j=j+k
+ vc2
+ vc
+ }
[1] "Não houve abertura de processo"
[1] "Não houve abertura de processo"
[1] "Não houve abertura de processo"
Error in if (ts[k] < 4) { : valor ausente onde TRUE/FALSE necessário
> vc2
[1] 14
>
> vc
[1] 80
Segunda opção:
> v<-c(1,2,5,4,8,9,10,4,2,7,6,8,2)
> ts<-ts(v)
>
> for(j in 1:10){
+ if(ts[j]>4){
+ #vende
+ #compra
+ #compra
+ vc<-10*ts[j]
+ for(k in j+1:10){
+ if(ts[k]<4){
+ vc2<-7*ts[k]
+
+ }
+ }
+ }
+ else print("Não houve abertura de processo")
+ j=j+k
+ vc2
+ vc
+ }
[1] "Não houve abertura de processo"
[1] "Não houve abertura de processo"
[1] "Não houve abertura de processo"
Error in if (ts[k] < 4) { : valor ausente onde TRUE/FALSE necessário
> vc2
[1] 14
>
> vc
[1] 80
12 Mai
12 Mai
13:27
Nos 2 comandos, tenta substituir:
* for(k in j+1:10){*
por
*for(k in (j+1):10){*
Acredito que isso seja suficiente para funcionar
2016-05-12 10:20 GMT-03:00 Michelle Bau Graczyk <mbgraczyk@gmail.com>:
> Caros, bom dia,
>
> Estou com um problema de lógica de programação. O que eu esperava era o
> seguinte: se ts[j]>4, eu abro uma operação e ela só para quando ts[j]<4.
> Enquanto uma operação está aberta, não se pode abrir mais nenhuma. Para
> isso eu tentei fazer de duas formas, usando e não usando o while, mas eu
> não consegui.
>
> Alguém teria alguma idéia sobre o que eu ando pensando errado?
>
> Muito obrigada,
>
> Michelle
>
> Primeira opção:
>
> > v<-c(1,2,5,4,8,9,10,4,2,7,6,8,2)
> > ts<-ts(v)
> >
> > for(j in 1:10){
> + if(ts[j]>4){
> + #vende
> + #compra
> + #compra
> + vc<-10*ts[j]
> + while(ts[j+1]>4) j=j+1
> + for(k in j+1:10){
> + if(ts[k]<4){
> + vc2<-7*ts[k]
> +
> + }
> + }
> + }
> + else print("Não houve abertura de processo")
> + j=j+k
> + vc2
> + vc
> + }
> [1] "Não houve abertura de processo"
> [1] "Não houve abertura de processo"
> [1] "Não houve abertura de processo"
> Error in if (ts[k] < 4) { : valor ausente onde TRUE/FALSE necessário
> > vc2
> [1] 14
> >
> > vc
> [1] 80
>
> Segunda opção:
>
> > v<-c(1,2,5,4,8,9,10,4,2,7,6,8,2)
> > ts<-ts(v)
> >
> > for(j in 1:10){
> + if(ts[j]>4){
> + #vende
> + #compra
> + #compra
> + vc<-10*ts[j]
> + for(k in j+1:10){
> + if(ts[k]<4){
> + vc2<-7*ts[k]
> +
> + }
> + }
> + }
> + else print("Não houve abertura de processo")
> + j=j+k
> + vc2
> + vc
> + }
> [1] "Não houve abertura de processo"
> [1] "Não houve abertura de processo"
> [1] "Não houve abertura de processo"
> Error in if (ts[k] < 4) { : valor ausente onde TRUE/FALSE necessário
> > vc2
> [1] 14
> >
> > vc
> [1] 80
>
> _______________________________________________
> R-br mailing list
> R-br@listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> código mínimo reproduzível.
>
13:48
Oi Rodrigo, primeiro obrigada pela resposta.
Acho que ainda não deu certo, porque eu tentei gravar os dados e olha como
fica:
> v<-c(1,2,5,4,8,9,10,4,2,7,6,8,2)
> ts<-ts(v)
> matrizz<-matrix(NA,13,2)
> for(j in 1:10){
+
+ if(ts[j]>4){
+
+ vc<-10*ts[j]
+ matrizz[k,1]<-vc
+ for(k in (j+1):10){
+
+ if(ts[k]<4){
+
+ vc2<-7*ts[k]
+ matrizz[k,2]<-vc2
+ }
+ }
+
+ }
+ else print("Não houve abertura de processo")
+ j=j+k
+
+ }
[1] "Não houve abertura de processo"
[1] "Não houve abertura de processo"
[1] "Não houve abertura de processo"
[1] "Não houve abertura de processo"
[1] "Não houve abertura de processo"
> vc2
[1] 14
> vc
[1] 70
> matrizz
[,1] [,2]
[1,] NA NA
[2,] NA NA
[3,] NA NA
[4,] NA NA
[5,] NA NA
[6,] NA NA
[7,] NA NA
[8,] NA NA
[9,] NA 14
[10,] 70 NA
[11,] NA NA
[12,] NA NA
[13,] NA NA
Em 12 de maio de 2016 10:27, Rodrigo Coster <rcoster@gmail.com> escreveu:
> Nos 2 comandos, tenta substituir:
>
> * for(k in j+1:10){*
>
> por
>
>
>
> *for(k in (j+1):10){*
> Acredito que isso seja suficiente para funcionar
>
> 2016-05-12 10:20 GMT-03:00 Michelle Bau Graczyk <mbgraczyk@gmail.com>:
>
>> Caros, bom dia,
>>
>> Estou com um problema de lógica de programação. O que eu esperava era o
>> seguinte: se ts[j]>4, eu abro uma operação e ela só para quando ts[j]<4.
>> Enquanto uma operação está aberta, não se pode abrir mais nenhuma. Para
>> isso eu tentei fazer de duas formas, usando e não usando o while, mas eu
>> não consegui.
>>
>> Alguém teria alguma idéia sobre o que eu ando pensando errado?
>>
>> Muito obrigada,
>>
>> Michelle
>>
>> Primeira opção:
>>
>> > v<-c(1,2,5,4,8,9,10,4,2,7,6,8,2)
>> > ts<-ts(v)
>> >
>> > for(j in 1:10){
>> + if(ts[j]>4){
>> + #vende
>> + #compra
>> + #compra
>> + vc<-10*ts[j]
>> + while(ts[j+1]>4) j=j+1
>> + for(k in j+1:10){
>> + if(ts[k]<4){
>> + vc2<-7*ts[k]
>> +
>> + }
>> + }
>> + }
>> + else print("Não houve abertura de processo")
>> + j=j+k
>> + vc2
>> + vc
>> + }
>> [1] "Não houve abertura de processo"
>> [1] "Não houve abertura de processo"
>> [1] "Não houve abertura de processo"
>> Error in if (ts[k] < 4) { : valor ausente onde TRUE/FALSE necessário
>> > vc2
>> [1] 14
>> >
>> > vc
>> [1] 80
>>
>> Segunda opção:
>>
>> > v<-c(1,2,5,4,8,9,10,4,2,7,6,8,2)
>> > ts<-ts(v)
>> >
>> > for(j in 1:10){
>> + if(ts[j]>4){
>> + #vende
>> + #compra
>> + #compra
>> + vc<-10*ts[j]
>> + for(k in j+1:10){
>> + if(ts[k]<4){
>> + vc2<-7*ts[k]
>> +
>> + }
>> + }
>> + }
>> + else print("Não houve abertura de processo")
>> + j=j+k
>> + vc2
>> + vc
>> + }
>> [1] "Não houve abertura de processo"
>> [1] "Não houve abertura de processo"
>> [1] "Não houve abertura de processo"
>> Error in if (ts[k] < 4) { : valor ausente onde TRUE/FALSE necessário
>> > vc2
>> [1] 14
>> >
>> > vc
>> [1] 80
>>
>> _______________________________________________
>> R-br mailing list
>> R-br@listas.c3sl.ufpr.br
>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
>> código mínimo reproduzível.
>>
>
>
> _______________________________________________
> R-br mailing list
> R-br@listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> código mínimo reproduzível.
>
14:09
Eu não consegui entender exatamente seu problema. Você poderia fornecer um
exemplo de como são os dados de entrada, e o que tem que estar saindo?
Mas pela sua descrição la em cima, você não quer fazer algo mais ou menos
como no exemplo abaixo?
v<-c(1,2,5,4,8,9,10,4,2,7,6,8,2)
ts_objeto<-ts(v)
j=1
operacao=FALSE
while(j<=length(v)){
if(v[j]>4) {
if(operacao==FALSE){
operacao<-TRUE
print(paste("Iniciando operacao com",v[j]))
}else{
print(paste(v[j],"em operação"))
}
} else {
if(operacao==TRUE){
operacao=FALSE
}
print(paste(v[j],"Fora de operação"))
}
j<-j+1
}
Mas acho que você precisa ser mais especifica na descrição do seu problema
para ficar mais fácil encontrar ajuda.
Em 12 de maio de 2016 09:48, Michelle Bau Graczyk <mbgraczyk@gmail.com>
escreveu:
> Oi Rodrigo, primeiro obrigada pela resposta.
>
> Acho que ainda não deu certo, porque eu tentei gravar os dados e olha como
> fica:
>
> > v<-c(1,2,5,4,8,9,10,4,2,7,6,8,2)
> > ts<-ts(v)
> > matrizz<-matrix(NA,13,2)
> > for(j in 1:10){
> +
> + if(ts[j]>4){
> +
> + vc<-10*ts[j]
> + matrizz[k,1]<-vc
> + for(k in (j+1):10){
> +
> + if(ts[k]<4){
> +
> + vc2<-7*ts[k]
> + matrizz[k,2]<-vc2
> + }
> + }
> +
> + }
> + else print("Não houve abertura de processo")
> + j=j+k
> +
> + }
> [1] "Não houve abertura de processo"
> [1] "Não houve abertura de processo"
> [1] "Não houve abertura de processo"
> [1] "Não houve abertura de processo"
> [1] "Não houve abertura de processo"
> > vc2
> [1] 14
> > vc
> [1] 70
> > matrizz
> [,1] [,2]
> [1,] NA NA
> [2,] NA NA
> [3,] NA NA
> [4,] NA NA
> [5,] NA NA
> [6,] NA NA
> [7,] NA NA
> [8,] NA NA
> [9,] NA 14
> [10,] 70 NA
> [11,] NA NA
> [12,] NA NA
> [13,] NA NA
>
> Em 12 de maio de 2016 10:27, Rodrigo Coster <rcoster@gmail.com> escreveu:
>
>> Nos 2 comandos, tenta substituir:
>>
>> * for(k in j+1:10){*
>>
>> por
>>
>>
>>
>> *for(k in (j+1):10){*
>> Acredito que isso seja suficiente para funcionar
>>
>> 2016-05-12 10:20 GMT-03:00 Michelle Bau Graczyk <mbgraczyk@gmail.com>:
>>
>>> Caros, bom dia,
>>>
>>> Estou com um problema de lógica de programação. O que eu esperava era o
>>> seguinte: se ts[j]>4, eu abro uma operação e ela só para quando ts[j]<4.
>>> Enquanto uma operação está aberta, não se pode abrir mais nenhuma. Para
>>> isso eu tentei fazer de duas formas, usando e não usando o while, mas eu
>>> não consegui.
>>>
>>> Alguém teria alguma idéia sobre o que eu ando pensando errado?
>>>
>>> Muito obrigada,
>>>
>>> Michelle
>>>
>>> Primeira opção:
>>>
>>> > v<-c(1,2,5,4,8,9,10,4,2,7,6,8,2)
>>> > ts<-ts(v)
>>> >
>>> > for(j in 1:10){
>>> + if(ts[j]>4){
>>> + #vende
>>> + #compra
>>> + #compra
>>> + vc<-10*ts[j]
>>> + while(ts[j+1]>4) j=j+1
>>> + for(k in j+1:10){
>>> + if(ts[k]<4){
>>> + vc2<-7*ts[k]
>>> +
>>> + }
>>> + }
>>> + }
>>> + else print("Não houve abertura de processo")
>>> + j=j+k
>>> + vc2
>>> + vc
>>> + }
>>> [1] "Não houve abertura de processo"
>>> [1] "Não houve abertura de processo"
>>> [1] "Não houve abertura de processo"
>>> Error in if (ts[k] < 4) { : valor ausente onde TRUE/FALSE necessário
>>> > vc2
>>> [1] 14
>>> >
>>> > vc
>>> [1] 80
>>>
>>> Segunda opção:
>>>
>>> > v<-c(1,2,5,4,8,9,10,4,2,7,6,8,2)
>>> > ts<-ts(v)
>>> >
>>> > for(j in 1:10){
>>> + if(ts[j]>4){
>>> + #vende
>>> + #compra
>>> + #compra
>>> + vc<-10*ts[j]
>>> + for(k in j+1:10){
>>> + if(ts[k]<4){
>>> + vc2<-7*ts[k]
>>> +
>>> + }
>>> + }
>>> + }
>>> + else print("Não houve abertura de processo")
>>> + j=j+k
>>> + vc2
>>> + vc
>>> + }
>>> [1] "Não houve abertura de processo"
>>> [1] "Não houve abertura de processo"
>>> [1] "Não houve abertura de processo"
>>> Error in if (ts[k] < 4) { : valor ausente onde TRUE/FALSE necessário
>>> > vc2
>>> [1] 14
>>> >
>>> > vc
>>> [1] 80
>>>
>>> _______________________________________________
>>> R-br mailing list
>>> R-br@listas.c3sl.ufpr.br
>>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
>>> código mínimo reproduzível.
>>>
>>
>>
>> _______________________________________________
>> R-br mailing list
>> R-br@listas.c3sl.ufpr.br
>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
>> código mínimo reproduzível.
>>
>
>
> _______________________________________________
> R-br mailing list
> R-br@listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> código mínimo reproduzível.
>
--
Grato
Augusto C. A. Ribas
Site Pessoal: http://recologia.com.br/ <http://augustoribas.heliohost.org>
Github: https://github.com/Squiercg
Lattes: http://lattes.cnpq.br/7355685961127056
14:11
Michelle,
Eu tinha me preocupado só com o erro enviado, não com o algoritmo. Olhando
com mais atenção, vi que tu está usando o for() para algo que não pode ser
feito com for() (ok, até pode, mas não é o ideal). O for() sempre vai
passar por todos elementos do vetor informado, mas não é isso que tu quer
que faça (tanto que, ao final do dele, tu faz com que j seja igual a j +
k). Para fazer o que tu quer, é necessário usar while() ou repeat(). Se eu
entendi bem o teu objetivo, segue uma sugestão de solução com while:
v<-c(1,2,5,4,8,9,10,4,2,7,6,8,2)
n <- length(v)
matrizz<-matrix(NA,13,2)
j <- 1
while (j <= n) {
k <- 1
if(v[j]>4){
vc<-10*v[j]
matrizz[j,1]<-vc
while (v[j + k] > 3) { k <- k + 1 }
vc2<-7*v[j + k]
matrizz[j + k,2]<-vc2
}
else print("Não houve abertura de processo")
j=j+k
}
2016-05-12 10:48 GMT-03:00 Michelle Bau Graczyk <mbgraczyk@gmail.com>:
> Oi Rodrigo, primeiro obrigada pela resposta.
>
> Acho que ainda não deu certo, porque eu tentei gravar os dados e olha como
> fica:
>
> > v<-c(1,2,5,4,8,9,10,4,2,7,6,8,2)
> > ts<-ts(v)
> > matrizz<-matrix(NA,13,2)
> > for(j in 1:10){
> +
> + if(ts[j]>4){
> +
> + vc<-10*ts[j]
> + matrizz[k,1]<-vc
> + for(k in (j+1):10){
> +
> + if(ts[k]<4){
> +
> + vc2<-7*ts[k]
> + matrizz[k,2]<-vc2
> + }
> + }
> +
> + }
> + else print("Não houve abertura de processo")
> + j=j+k
> +
> + }
> [1] "Não houve abertura de processo"
> [1] "Não houve abertura de processo"
> [1] "Não houve abertura de processo"
> [1] "Não houve abertura de processo"
> [1] "Não houve abertura de processo"
> > vc2
> [1] 14
> > vc
> [1] 70
> > matrizz
> [,1] [,2]
> [1,] NA NA
> [2,] NA NA
> [3,] NA NA
> [4,] NA NA
> [5,] NA NA
> [6,] NA NA
> [7,] NA NA
> [8,] NA NA
> [9,] NA 14
> [10,] 70 NA
> [11,] NA NA
> [12,] NA NA
> [13,] NA NA
>
> Em 12 de maio de 2016 10:27, Rodrigo Coster <rcoster@gmail.com> escreveu:
>
>> Nos 2 comandos, tenta substituir:
>>
>> * for(k in j+1:10){*
>>
>> por
>>
>>
>>
>> *for(k in (j+1):10){*
>> Acredito que isso seja suficiente para funcionar
>>
>> 2016-05-12 10:20 GMT-03:00 Michelle Bau Graczyk <mbgraczyk@gmail.com>:
>>
>>> Caros, bom dia,
>>>
>>> Estou com um problema de lógica de programação. O que eu esperava era o
>>> seguinte: se ts[j]>4, eu abro uma operação e ela só para quando ts[j]<4.
>>> Enquanto uma operação está aberta, não se pode abrir mais nenhuma. Para
>>> isso eu tentei fazer de duas formas, usando e não usando o while, mas eu
>>> não consegui.
>>>
>>> Alguém teria alguma idéia sobre o que eu ando pensando errado?
>>>
>>> Muito obrigada,
>>>
>>> Michelle
>>>
>>> Primeira opção:
>>>
>>> > v<-c(1,2,5,4,8,9,10,4,2,7,6,8,2)
>>> > ts<-ts(v)
>>> >
>>> > for(j in 1:10){
>>> + if(ts[j]>4){
>>> + #vende
>>> + #compra
>>> + #compra
>>> + vc<-10*ts[j]
>>> + while(ts[j+1]>4) j=j+1
>>> + for(k in j+1:10){
>>> + if(ts[k]<4){
>>> + vc2<-7*ts[k]
>>> +
>>> + }
>>> + }
>>> + }
>>> + else print("Não houve abertura de processo")
>>> + j=j+k
>>> + vc2
>>> + vc
>>> + }
>>> [1] "Não houve abertura de processo"
>>> [1] "Não houve abertura de processo"
>>> [1] "Não houve abertura de processo"
>>> Error in if (ts[k] < 4) { : valor ausente onde TRUE/FALSE necessário
>>> > vc2
>>> [1] 14
>>> >
>>> > vc
>>> [1] 80
>>>
>>> Segunda opção:
>>>
>>> > v<-c(1,2,5,4,8,9,10,4,2,7,6,8,2)
>>> > ts<-ts(v)
>>> >
>>> > for(j in 1:10){
>>> + if(ts[j]>4){
>>> + #vende
>>> + #compra
>>> + #compra
>>> + vc<-10*ts[j]
>>> + for(k in j+1:10){
>>> + if(ts[k]<4){
>>> + vc2<-7*ts[k]
>>> +
>>> + }
>>> + }
>>> + }
>>> + else print("Não houve abertura de processo")
>>> + j=j+k
>>> + vc2
>>> + vc
>>> + }
>>> [1] "Não houve abertura de processo"
>>> [1] "Não houve abertura de processo"
>>> [1] "Não houve abertura de processo"
>>> Error in if (ts[k] < 4) { : valor ausente onde TRUE/FALSE necessário
>>> > vc2
>>> [1] 14
>>> >
>>> > vc
>>> [1] 80
>>>
>>> _______________________________________________
>>> R-br mailing list
>>> R-br@listas.c3sl.ufpr.br
>>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
>>> código mínimo reproduzível.
>>>
>>
>>
>> _______________________________________________
>> R-br mailing list
>> R-br@listas.c3sl.ufpr.br
>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
>> código mínimo reproduzível.
>>
>
>
> _______________________________________________
> R-br mailing list
> R-br@listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> código mínimo reproduzível.
>
14:33
Oi Rodrigo e Augusto, muito obrigada, deu certo!
Rodrigo, eu as vezes me "embanano" toda tentando usar o while e por isso
acabo usando-o de modo errado e tento recorrer ao for().
Mas agora eu acho que entendi de vez: eu não preciso do for para dar
continuidade ao laço ( eu achava que além do j=j+k eu precisava usar o
for()).
Muito obrigada de novo!
Michelle
Em 12 de maio de 2016 11:11, Rodrigo Coster <rcoster@gmail.com> escreveu:
> Michelle,
>
> Eu tinha me preocupado só com o erro enviado, não com o algoritmo. Olhando
> com mais atenção, vi que tu está usando o for() para algo que não pode ser
> feito com for() (ok, até pode, mas não é o ideal). O for() sempre vai
> passar por todos elementos do vetor informado, mas não é isso que tu quer
> que faça (tanto que, ao final do dele, tu faz com que j seja igual a j +
> k). Para fazer o que tu quer, é necessário usar while() ou repeat(). Se eu
> entendi bem o teu objetivo, segue uma sugestão de solução com while:
>
>
> v<-c(1,2,5,4,8,9,10,4,2,7,6,8,2)
> n <- length(v)
> matrizz<-matrix(NA,13,2)
> j <- 1
> while (j <= n) {
> k <- 1
> if(v[j]>4){
> vc<-10*v[j]
> matrizz[j,1]<-vc
> while (v[j + k] > 3) { k <- k + 1 }
> vc2<-7*v[j + k]
> matrizz[j + k,2]<-vc2
> }
> else print("Não houve abertura de processo")
> j=j+k
> }
>
>
>
> 2016-05-12 10:48 GMT-03:00 Michelle Bau Graczyk <mbgraczyk@gmail.com>:
>
>> Oi Rodrigo, primeiro obrigada pela resposta.
>>
>> Acho que ainda não deu certo, porque eu tentei gravar os dados e olha
>> como fica:
>>
>> > v<-c(1,2,5,4,8,9,10,4,2,7,6,8,2)
>> > ts<-ts(v)
>> > matrizz<-matrix(NA,13,2)
>> > for(j in 1:10){
>> +
>> + if(ts[j]>4){
>> +
>> + vc<-10*ts[j]
>> + matrizz[k,1]<-vc
>> + for(k in (j+1):10){
>> +
>> + if(ts[k]<4){
>> +
>> + vc2<-7*ts[k]
>> + matrizz[k,2]<-vc2
>> + }
>> + }
>> +
>> + }
>> + else print("Não houve abertura de processo")
>> + j=j+k
>> +
>> + }
>> [1] "Não houve abertura de processo"
>> [1] "Não houve abertura de processo"
>> [1] "Não houve abertura de processo"
>> [1] "Não houve abertura de processo"
>> [1] "Não houve abertura de processo"
>> > vc2
>> [1] 14
>> > vc
>> [1] 70
>> > matrizz
>> [,1] [,2]
>> [1,] NA NA
>> [2,] NA NA
>> [3,] NA NA
>> [4,] NA NA
>> [5,] NA NA
>> [6,] NA NA
>> [7,] NA NA
>> [8,] NA NA
>> [9,] NA 14
>> [10,] 70 NA
>> [11,] NA NA
>> [12,] NA NA
>> [13,] NA NA
>>
>> Em 12 de maio de 2016 10:27, Rodrigo Coster <rcoster@gmail.com> escreveu:
>>
>>> Nos 2 comandos, tenta substituir:
>>>
>>> * for(k in j+1:10){*
>>>
>>> por
>>>
>>>
>>>
>>> *for(k in (j+1):10){*
>>> Acredito que isso seja suficiente para funcionar
>>>
>>> 2016-05-12 10:20 GMT-03:00 Michelle Bau Graczyk <mbgraczyk@gmail.com>:
>>>
>>>> Caros, bom dia,
>>>>
>>>> Estou com um problema de lógica de programação. O que eu esperava era o
>>>> seguinte: se ts[j]>4, eu abro uma operação e ela só para quando ts[j]<4.
>>>> Enquanto uma operação está aberta, não se pode abrir mais nenhuma. Para
>>>> isso eu tentei fazer de duas formas, usando e não usando o while, mas eu
>>>> não consegui.
>>>>
>>>> Alguém teria alguma idéia sobre o que eu ando pensando errado?
>>>>
>>>> Muito obrigada,
>>>>
>>>> Michelle
>>>>
>>>> Primeira opção:
>>>>
>>>> > v<-c(1,2,5,4,8,9,10,4,2,7,6,8,2)
>>>> > ts<-ts(v)
>>>> >
>>>> > for(j in 1:10){
>>>> + if(ts[j]>4){
>>>> + #vende
>>>> + #compra
>>>> + #compra
>>>> + vc<-10*ts[j]
>>>> + while(ts[j+1]>4) j=j+1
>>>> + for(k in j+1:10){
>>>> + if(ts[k]<4){
>>>> + vc2<-7*ts[k]
>>>> +
>>>> + }
>>>> + }
>>>> + }
>>>> + else print("Não houve abertura de processo")
>>>> + j=j+k
>>>> + vc2
>>>> + vc
>>>> + }
>>>> [1] "Não houve abertura de processo"
>>>> [1] "Não houve abertura de processo"
>>>> [1] "Não houve abertura de processo"
>>>> Error in if (ts[k] < 4) { : valor ausente onde TRUE/FALSE necessário
>>>> > vc2
>>>> [1] 14
>>>> >
>>>> > vc
>>>> [1] 80
>>>>
>>>> Segunda opção:
>>>>
>>>> > v<-c(1,2,5,4,8,9,10,4,2,7,6,8,2)
>>>> > ts<-ts(v)
>>>> >
>>>> > for(j in 1:10){
>>>> + if(ts[j]>4){
>>>> + #vende
>>>> + #compra
>>>> + #compra
>>>> + vc<-10*ts[j]
>>>> + for(k in j+1:10){
>>>> + if(ts[k]<4){
>>>> + vc2<-7*ts[k]
>>>> +
>>>> + }
>>>> + }
>>>> + }
>>>> + else print("Não houve abertura de processo")
>>>> + j=j+k
>>>> + vc2
>>>> + vc
>>>> + }
>>>> [1] "Não houve abertura de processo"
>>>> [1] "Não houve abertura de processo"
>>>> [1] "Não houve abertura de processo"
>>>> Error in if (ts[k] < 4) { : valor ausente onde TRUE/FALSE necessário
>>>> > vc2
>>>> [1] 14
>>>> >
>>>> > vc
>>>> [1] 80
>>>>
>>>> _______________________________________________
>>>> R-br mailing list
>>>> R-br@listas.c3sl.ufpr.br
>>>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>>>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
>>>> código mínimo reproduzível.
>>>>
>>>
>>>
>>> _______________________________________________
>>> R-br mailing list
>>> R-br@listas.c3sl.ufpr.br
>>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
>>> código mínimo reproduzível.
>>>
>>
>>
>> _______________________________________________
>> R-br mailing list
>> R-br@listas.c3sl.ufpr.br
>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
>> código mínimo reproduzível.
>>
>
>
> _______________________________________________
> R-br mailing list
> R-br@listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> código mínimo reproduzível.
>
3465
Idade (dias atrás)
3465
Última atividade (dias atrás)
5 comentários
3 participantes
participantes (3)
-
Augusto Ribas -
Michelle Bau Graczyk -
Rodrigo Coster