Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
MATHEUS DIAS DE CARVALHO

C++ Como modificar valores de uma lista

Recommended Posts

Olá pessoal, estou usando a biblioteca <list> para organizar um conjunto de valores, porém não estou conseguindo fazer uma alteração num valores específico da lista. Por exemplo minha lista é 1 2 3 4 5, aí quero somar 1 na quarta posição para a lista ser 1 2 3 5 5. Alguém pode me ajudar? Detalhe: não sei qual valor está na quarta posição, mas sei que quero adicionar uma unidade a ele.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

O trecho com comentário (\\) é onde deve ser feita a alteração!!

 


#include <iostream>
#include <random>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
#include <unistd.h>
#include <list>
using namespace std;
int main(void){
    short int r1,r2;
    float r3,r4,r5,NA,k1,k2,k3,k4,h1,h2,h3,h4,I,R,M,P,L,a1,a2,a3,a4,a0,c1,c2,c3,c4,tresidencia,t,tau,V;
    std::list<int> vivas;
    std::list<int> mortas;  
    std::list<int>::iterator it;
    FILE *arquivo;
    arquivo=fopen("teste.txt","w");
    if(arquivo==NULL){
        printf("Não foi possível abrir o arquivo");
        exit(0);
    }
    tresidencia=1;
    V=pow(10,-16);
    I=602000;
    R=0;
    M=602000000;
    P=0;
    L=0;
    NA=6.02*pow(10,23);
    k1=pow(10,-4);
    k2=100;
    k3=100;
    k4=pow(10,6);
    c1=k1;
    c2=k2/(V*NA);
    c3=k3/(V*NA);
    c4=2*k4/(V*NA);
    h1=I;
    h2=R*M;
    h3=P*M;
    h4=P*(P-1)/2;
    a1=h1*c1;
    a2=h2*c2;
    a3=h3*c3;
    a4=h4*c4;
    a0=a1+a2+a3+a4;
    random_device rd;
    mt19937 mt(rd());
    uniform_int_distribution<int> dist(1,1000);
    for (t=0;t<tresidencia;t=t+tau)
    {
        r1=dist(mt);
        r2=dist(mt);
        fprintf(arquivo,"%.8f %d\n ", t,R);
        tau=(1/a0)*log (1001/r1);
        if(a0*r2/1000<a1){
            I=I-1;
            R=R+2;
            h1=I;
            h2=R*M;
            a1=h1*c1;
            a2=h2*c2;
            a0=a1+a2+a3+a4;
        }
        else if (a0*r2/1000<a1+a2){
            R=R-1;
            M=M-1;
            P=P+1;
            vivas.push_front (1);
            h2=R*M;
            h3=P*M;
            h4=(P*(P-1))/2;
            a2=h2*c2;
            a3=h3*c3;
            a4=h4*c4;
            a0=a1+a2+a3+a4;
        }
        else if (a0*r2/1000<a1+a2+a3){
            M=M-1;
            uniform_int_distribution<int> dist2(1,vivas.size());
            r3=dist2(mt);


 // Nessa parte do código tenho que adicionar uma unidade a casa r3 da lista, se fosse um vetor o que equivalente seria (v[r3]=v[r3]+1)


            h2=R*M;
            h3=P*M;
            a2=h2*c2;
            a3=h3*c3;
            a0=a1+a2+a3+a4;
        }
        else{
            P=P-2;
            L=L+2;
            uniform_int_distribution<int> dist2(1,vivas.size());
            r4=dist2(mt);
            r5=dist2(mt);
            it = vivas.begin();
            advance(it,r4-1);
            mortas.splice (mortas.begin(),vivas, it);
            if(r4>r5){
                it = vivas.begin();
                advance(it,r5-1);
                mortas.splice (mortas.begin(),vivas, it);
            }
            else{
                it = vivas.begin();
                advance(it,r5-2);
                mortas.splice (mortas.begin(),vivas, it);
            }
            h3=P*M;
            h4=P*(P-1)/2;
            a3=h3*c3;
            a4=h4*c4;
            a0=a1+a2+a3+a4;
        } 
    }
    fclose(arquivo);
    system("pause");
    return 0;
}
Editado por Simon Viegas
Inserir tag CODE (e "ajuste" no texto, já que o negrito e sublinhado somem))

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×