Ofereço ajuda em Java, C/C++, Python, C#, LISP, AutoLisp, AutoCAD
+55 (062) 98553-6711
Ofereço ajuda em PHP, Python, C#, JavaScript, Laravel, Google Ads e SEO
+55 (062) 98243-1195

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresCódigo-Fonte Software de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Você está aqui: C++ ::: Dicas & Truques ::: Data e Hora

Entendendo o tipo time_t do header <ctime>

Quantidade de visualizações: 6414 vezes
O tipo time_t, presente no header <ctime> é usado quando precisamos representar datas e horas e, quando necessário, efetuar operações aritméticas envolvendo as mesmas. Este tipo é obtido por meio de uma chamada à função time(). Veja:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    // declara uma variável do tipo time_t e atribui a ela
    // o resultado de uma chamada à função time()
    time_t hora_atual = time(NULL);
    cout << "Segundos desde 01/01/1970: " <<  hora_atual << "\n\n";
    
    system("PAUSE");
    return EXIT_SUCCESS;
}

Ao executar este trecho de código teremos algo parecido com:

Segundos desde 01/01/1970: 1334017044

Como podemos ver, o tipo time_t é apenas um apelido para um long, como declarado no header time.h:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

typedef	long time_t;

Desta forma, time_t guarda a quantidade de segundos decorridos desde a meia-noite do dia 01/01/1970 UTC.

Link para compartilhar na Internet ou com seus amigos:

C++ ::: Win32 API (Windows API) ::: Processos

Como usar a função EnumProcesses() da WinAPI em seus códigos C++ para obter os identificadores de cada processo ativo no Windows

Quantidade de visualizações: 8398 vezes
A função EnumProcesses() pode ser usada quando queremos obter os ids de todos os processos sendo executados no momento no Windows. Veja o protótipo desta função:

BOOL WINAPI EnumProcesses(
  DWORD* pProcessIds,
  DWORD cb,
  DWORD* pBytesReturned
);


Esta função possui três parâmetros:

a) DWORD* pProcessIds - Um ponteiro para uma matriz que receberá a lista de identificadores dos processos. É importante definir uma matriz um pouco grande, visto que não sabemos de antemão quantos processos serão retornados.

b) DWORD cb - O tamanho da matriz pProcessIds em bytes.

c) DWORD* pBytesReturned - O números de bytes retornados na matriz pProcessIds. Podemos facilmente saber quantos processos foram encontrados simplesmente dividindo o número de bytes retornados pela quantidade de bytes em um DWORD.

Veja um trecho de código no qual listamos os ids de todos os processos sendo executados atualmente.

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

#include <cstdlib>
#include <iostream>
#include <windows.h>
#include <psapi.h>

/*
  Este exemplo usa o header <psapi.h>
  É necessário fazer uma referência à psapi.lib 
*/

using namespace std;

int main(int argc, char *argv[]){
  DWORD processos[1024]; // vamos listar até 1024 processos   
  DWORD pBytesReturned; // bytes retornados pela função EnumProcesses()
  
  // vamos listar os processos
  EnumProcesses(processos, sizeof(processos), &pBytesReturned);
  
  // quantidade de processos retornados
  int retornados = pBytesReturned / sizeof(DWORD);
  
  // agora vamos listar os ids dos processos retornados
  for(int i = 0; i < retornados; i++){
    if(!processos[i] == 0){
      cout << "Processo " << (i + 1) << ": " << processos[i] << endl;
    }          
  }
  
  system("PAUSE");
  return EXIT_SUCCESS;
} 

O id de um processo pode ser fornecido para muitas funções úteis do Windows, entre elas OpenProcess().

Veja um trecho de código no qual fechamos (forçadamente) um processo mediante o fornecimento de seu id:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

#include <cstdlib>
#include <iostream>
#include <windows.h>

using namespace std;

int main(int argc, char *argv[]){
  // vamos fechar o processo com o id 3040
  
  // CUIDADO: Verifique o id do processo antes de fechá-lo
  // pode ser que você esteja fechando processos essenciais
  // para o bom funcionamento do Windows
  
  // vamos abrir o processo desejado
  // vai retornar ERROR_INVALID_HANDLE se o processo não
  // puder ser aberto
  HANDLE hProcesso = OpenProcess(PROCESS_TERMINATE, 0, 3040);

  // vamos fechar o processo
  if(TerminateProcess(hProcesso, 0)){
    cout << "Processo finalizado com sucesso." << endl; 
  }
  else{
    cout << "Erro ao finalizar o processo: " << 
      GetLastError() << endl;   
  }

  // vamos fechar o handle do processo
  CloseHandle(hProcesso);
  
  system("PAUSE");
  return EXIT_SUCCESS;
}



C++ ::: Dicas & Truques ::: MIDI Musical Instrument Digital Interface, Mapeamento e sequenciamento MIDI, Entrada e saída MIDI

Como definir o tipo de instrumento (programa) em um evento MIDI e enviar a mensagem para a função midiOutShortMsg() da API Win32 do Windows

Quantidade de visualizações: 1014 vezes
Vimos em dicas nessa seção como usar a função midiOutShortMsg() da API Win32 do Windows para tocar notas musicais no dispositivo de saída MIDI. No entanto, nos exemplos anteriores, a nota tocada foi no instrumento padrão, ou seja, Acoustic Grand Piano, e no canal 1.

Nesta dica mostrarei como definir o instrumento e também falarei um pouco mais sobre como tocar as notas em canais diferentes. Vamos então, com muita atenção.

Analisando a documentação MIDI, encontramos que uma mudança de programa (instrumento musical) no canal 1 é representada pelo código de status 192 (hexadecimal C0), seguido pelo código do instrumento a ser usado (um valor inteiro que vai de 0 a 127, e que deverá ser convertido em hexadecimal). Assim, é bom dar uma olhada nessa lista:

Piano Timbres:

 1	Acoustic Grand Piano
 2	Bright Acoustic Piano
 3	Electric Grand Piano
 4	Honky-tonk Piano
 5	Rhodes Piano
 6	Chorused Piano
 7	Harpsichord
 8	Clavinet

Chromatic Percussion:
 9	Celesta
10	Glockenspiel
11	Music Box
12	Vibraphone
13	Marimba
14	Xylophone
15	Tubular Bells
16	Dulcimer

Organ Timbres:
17	Hammond Organ
18	Percussive Organ
19	Rock Organ
20	Church Organ
21	Reed Organ
22	Accordion
23	Harmonica
24	Tango Accordion
 
Guitar Timbres:
25	Acoustic Nylon Guitar
26	Acoustic Steel Guitar
27	Electric Jazz Guitar
28	Electric Clean Guitar
29	Electric Muted Guitar
30	Overdriven Guitar
31	Distortion Guitar
32	Guitar Harmonics

Bass Timbres:
33	Acoustic Bass
34	Fingered Electric Bass
35	Plucked Electric Bass
36	Fretless Bass
37	Slap Bass 1
38	Slap Bass 2
39	Synth Bass 1
40	Synth Bass 2

String Timbres:
41	Violin
42	Viola
43	Cello
44	Contrabass
45	Tremolo Strings
46	Pizzicato Strings
47	Orchestral Harp
48	Timpani
 
Ensemble Timbres:
49	String Ensemble 1
50	String Ensemble 2
51	Synth Strings 1
52	Synth Strings 2
53	Choir "Aah"
54	Choir "Ooh"
55	Synth Voice
56	Orchestral Hit

Brass Timbres:
57	Trumpet
58	Trombone
59	Tuba
60	Muted Trumpet
61	French Horn
62	Brass Section
63	Synth Brass 1
64	Synth Brass 2

Reed Timbres:
65	Soprano Sax
66	Alto Sax
67	Tenor Sax
68	Baritone Sax
69	Oboe
70	English Horn
71	Bassoon
72	Clarinet
 
Pipe Timbres:
73	Piccolo
74	Flute
75	Recorder
76	Pan Flute
77	Bottle Blow
78	Shakuhachi
79	Whistle
80	Ocarina

Synth Lead:
81	Square Wave Lead
82	Sawtooth Wave Lead
83	Calliope Lead
84	Chiff Lead
85	Charang Lead
86	Voice Lead
87	Fifths Lead
88	Bass Lead

Synth Pad:
89	New Age Pad
90	Warm Pad
91	Polysynth Pad
92	Choir Pad
93	Bowed Pad
94	Metallic Pad
95	Halo Pad
96	Sweep Pad
 
Synth Effects:
 97	Rain Effect
 98	Soundtrack Effect
 99	Crystal Effect
100	Atmosphere Effect
101	Brightness Effect
102	Goblins Effect
103	Echoes Effect
104	Sci-Fi Effect

Ethnic Timbres:
105	Sitar
106	Banjo
107	Shamisen
108	Koto
109	Kalimba
110	Bagpipe
111	Fiddle
112	Shanai

Sound Effects:
113	Tinkle Bell
114	Agogo
115	Steel Drums
116	Woodblock
117	Taiko Drum
118	Melodic Tom
119	Synth Drum
120	Reverse Cymbal
 
Sound Effects:
121	Guitar Fret Noise
122	Breath Noise
123	Seashore
124	Bird Tweet
125	Telephone Ring
126	Helicopter
127	Applause
128	Gun Shot

A especificação MIDI define que o canal 10 seja reservado
para os kits de percussão. Os instrumentos abaixo possuem
os números de notas a serem enviados neste canal.

35	Acoustic Bass Drum
36	Bass Drum 1
37	Side Stick
38	Acoustic Snare
39	Hand Clap
40	Electric Snare
41	Low Floor Tom
42	Closed High Hat
43	High Floor Tom
44	Pedal High Hat
45	Low Tom
46	Open High Hat
47	Low Mid Tom
48	High Mid Tom
49	Crash Cymbal 1
50	High Tom
51	Ride Cymbal 1
52	Chinese Cymbal
53	Ride Bell
54	Tambourine
55	Splash Cymbal
56	Cowbell
57	Crash Cymbal 2
58	Vibraslap
59	Ride Cymbal 2
60	High Bongo
61	Low Bongo
62	Mute High Conga
63	Open High Conga
64	Low Conga
65	High Timbale
66	Low Timbale
67	High Agogo
68	Low Agogo
69	Cabasa
70	Maracas
71	Short Whistle
72	Long Whistle
73	Short Guiro
74	Long Guiro
75	Claves
76	High Wood Block
77	Low Wood Block
78	Mute Cuica
79	Open Cuica
80	Mute Triangle
81	Open Triangle


É uma lista bem longa e ficará a ser cargo estudá-la ou usá-la como referência. Meu interesse maior é o código C/C++. Assim, vamos ver logo como definir o instrumento no canal 1 como Overdriven Guitar. Este instrumento possui o código 30 mas, na programação, devemos diminuí-lo em 1, ficando 29, e, ao passarmos para hexadecimal teremos 1D.

A mudança de programa no canal 1 é representada pelo código 192, o que em hexadecimal é C0. Pronto, agora basta construirmos o DWORD da forma que fizemos nas dicas anteriores e chamar a função midiOutShortMsg(). Veja:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

#include <cstdlib>
#include <iostream>
#include <windows.h>

using namespace std;

int main(int argc, char *argv[]) {
  unsigned int erro; // guarda o erro caso algo dê errado
  HMIDIOUT saida; // handle para o dispositivo de saída MIDI.

  // vamos abrir o dispositivo de saída MIDI
  erro = midiOutOpen(&saida, MIDI_MAPPER, 0, 0, CALLBACK_NULL);
  if (erro != MMSYSERR_NOERROR) {
    printf("Não foi possível abrir o mapeador MIDI: %d\n", erro);
  }
  else {
    printf("Mapeador MIDI aberto com sucesso\n");
  }

  // vamos definir o instrumento como Overdriven Guitar
  // no canal 1
  midiOutShortMsg(saida, 0x00001DC0);

  // vamos tocar o dó central com velocidade 100
  midiOutShortMsg(saida, 0x00643C90);
  Sleep(1000); // a nota vai durar 1 segundo
  // dispara a mensagem Note-off
  midiOutShortMsg(saida, 0x00643C80);

  // agora vamos fechar o dispositivo de saída MIDI
  midiOutClose(saida);

  system("PAUSE");
  return EXIT_SUCCESS;
}


Execute esse código e ouça um nota dó sendo tocada na guitarra com uma linda distorção. Se você quiser tocar a nota nó no canal 2 ou canal 3, basta usar C1, C2, e assim por diante. Uma última observação é você ficar atento ao fato de que os códigos de Note-on e Note-off para o canal 1 é 90 e 80 (em hexadecimal). Se for no canal 2, os códigos correspondentes serão 91 e 81 (sempre em hexadecimal).


C++ ::: Dicas & Truques ::: Strings e Caracteres

Como remover parte de uma string em C++ usando a função erase()

Quantidade de visualizações: 17154 vezes
Em algumas situações nós precisamos remover parte de uma palavra, frase ou texto em C++. Para isso nós podemos usar a função erase().

Esta função é usada para remover parte de uma string, consequentemente diminuindo seu tamanho. Veja a sua assinatura:

string& erase(size_t pos = 0, size_t n = npos);
Veja que temos que informar a posição inicial (pos) e a quantidade de caracteres que serão removidos (npos). A string sem a substring removida é retornada ao chamador do método.

Veja o código C++ completo para o exemplo:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

#include <string>
#include <iostream>

using namespace std;

int main(int argc, char *argv[]){
  // vamos criar uma string
  string frase("Gosto de MySQL");
   
  // Antes da remoção
  cout << "Antes da remocao: " << frase << endl;
	
  // vamos remover "My"
  string nova_frase = frase.erase(9, 2);
  
  // e mostramos o resultado
  cout << "Depois da remocao: " << nova_frase << endl;
	  
  system("PAUSE"); // pausa o programa
  return EXIT_SUCCESS;
}

Ao executar este código C++ nós teremos o seguinte resultado:

Antes da remoção: Gosto de MySQL
Depois da remoção: Gosto de SQL


C++ ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Controle

Exercício Resolvido de C++ - Como testar se um ano é bissexto em C++ - Um programa que lê um ano com quatro dígitos e informa se ele é bissexto ou não

Quantidade de visualizações: 405 vezes
Pergunta/Tarefa:

Chama-se ano bissexto o ano ao qual é acrescentado um dia extra, ficando ele com 366 dias, um dia a mais do que os anos normais de 365 dias, ocorrendo a cada quatro anos (exceto anos múltiplos de 100 que não são múltiplos de 400). Isto é feito com o objetivo de manter o calendário anual ajustado com a translação da Terra e com os eventos sazonais relacionados às estações do ano. O último ano bissexto foi 2012 e o próximo será 2016.

Um ano é bissexto se ele for divisível por 4 mas não por 100, ou se for divisível por 400.

Escreva um programa C++ que pede ao usuário um ano com quatro dígitos e informa se ele é bissexto ou não.

Sua saída deverá ser parecida com:

Informe o ano: 2024
O ano informado é bissexto.
Resposta/Solução:

Veja a resolução comentada deste exercício usando C++:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

#include <iostream>

using namespace std;

// função principal do programa
int main(int argc, char *argv[]){
  // variáveis usadas para resolver o problema
  int ano;
  
  // vamos solicitar que o usuário informe um ano
  cout << "Informe o ano: ";
  cin >> ano;
	
  // vamos verificar se o ano informado é bissexto
  if(((ano % 4 == 0) && (ano % 100 != 0)) || (ano % 400 == 0)){
    cout << "O ano informado é bissexto.";  
  }
  else{
    cout << "O ano informado não é bissexto.";  
  }
  
  cout << "\n" << endl;
  system("PAUSE"); // pausa o programa
  return EXIT_SUCCESS;
}



C++ ::: Desafios e Lista de Exercícios Resolvidos ::: C++ Básico

Exercício Resolvido de C++ - Como ler um número inteiro e imprimir seu sucessor e seu antecessor em C++

Quantidade de visualizações: 1560 vezes
Pergunta/Tarefa:

Escreva um programa C++ para ler um número inteiro e imprimir seu sucessor e seu antecessor. O usuário poderá informar um valor positivo ou negativo.

Sua saída deverá ser parecida com:

Informe um número inteiro: 16
O número informado foi: 16
O antecessor é 15
O sucessor é: 17
Resposta/Solução:

Veja a resolução comentada deste exercício usando C++:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

#include <string>
#include <iostream>

using namespace std;

int main(int argc, char *argv[]){
  // variáveis usadas na resolução do problema
  int numero, sucessor, antecessor;
  
  // vamos pedir para o usuário informar um número inteiro
  cout << "Informe um número inteiro: ";
  cin >> numero;
    
  // vamos calcular o sucessor do número informado
  sucessor = numero + 1;
    
  // vamos calcular o antecessor do número informado
  antecessor = numero - 1;
    
  // e agora mostramos os resultados
  cout << "O número informado foi: " << numero << endl;
  cout << "O antecessor é " << antecessor << endl;
  cout << "O sucessor é: " << sucessor << endl;
  
  system("PAUSE"); // pausa o programa
  return EXIT_SUCCESS; 
}



C++ ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes)

Exercícios Resolvidos de C++ - Desafio do número ausente. Dado um vetor de números naturais 1..n, encontre o valor ausente

Quantidade de visualizações: 648 vezes
Pergunta/Tarefa:

Dado o vetor:

int valores[] = {1, 8, 7, 2, 6, 5, 3};


Encontre o elemento ausente na sequência de valores do vetor, sabendo que o primeiro valor é 1 e o último elemento é 8. Perceba que o vetor não precisa estar ordenado. Além disso, o entrevistador se certificará de que os valores serão sempre positivos e não haverá valores repetidos.

Sua saída deverá ser parecida com:

O número ausente é: 4
Resposta/Solução:

Dica: Use a fórmula n * (n + 1) / 2 para facilitar a resolução do exercício.

Veja a resolução comentada deste exercício usando C++:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

#include <string>
#include <iostream>

using namespace std;

int main(int argc, char *argv[]){
  // vamos declarar um vetor de inteiros faltando
  // um valor na sequência (não necessariamente ordenada)
  // Note a ausência do número 4
  int valores[] = {1, 8, 7, 2, 6, 5, 3};
  int i, soma_n, ausente, soma_elementos;
  int quant = 8; // tamanho do vetor + 1
    
  // o primeiro passo é obter a soma de 1..n elementos
  // natuais usando a fórmula n*(n+1)/2
  soma_n = (quant * (quant + 1)) / 2;
    
  // agora vamos somar os elementos do vetor
  soma_elementos = 0;
  for(i = 0; i < 7; i++){
    soma_elementos = soma_elementos + valores[i];
  }
    
  // agora calculamos o valor ausente
  ausente = soma_n - soma_elementos;
    
  // vamos mostrar o resultado
  cout << "O número ausente é: " << ausente << endl;
  
  system("PAUSE"); // pausa o programa
  return EXIT_SUCCESS; 
}



C++ ::: Desafios e Lista de Exercícios Resolvidos ::: Recursão (Recursividade)

Exercício Resolvido de C++ - Um método recursivo que conta de 0 até 10

Quantidade de visualizações: 918 vezes
Pergunta/Tarefa:

Escreva um método recursivo que conta e exibe os valores de 0 até 10. Seu método deverá possuir a seguinte assinatura:

void contar_recursivamente(int n){
  // sua implementação aqui
}
Veja que o método deverá receber o valor 0 e efetuar novas chamadas a si mesmo até que os valores de 0 a 10 sejam exibidos. O ponto de parada da recursividade é a exibição do valor 10.

Sua saída deverá ser parecida com:

0  1  2  3  4  5  6  7  8  9  10
Resposta/Solução:

Veja a resolução comentada deste exercício usando C++:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

#include <iostream>
#include <cstdlib>
   
using namespace std;

// método recursivo que conta de 0 até 10;
void contar_recursivamente(int n){
  // vamos exibir o número atual
  cout << n << " ";
    
  // devemos prosseguir com a recursividade?
  if(n < 10){
    // incrementa o valor de n
    n++;  
    contar_recursivamente(n); // e faz uma nova chamada recursiva
  }
}  
   
// função principal do programa   
int main(int argc, char *argv[]){
  // efetua uma chamada ao método recursivo fornecendo o primeiro valor
  contar_recursivamente(0); 
       
  cout << "\n\n";     
  system("PAUSE"); // pausa o programa
  return EXIT_SUCCESS;
}



C++ ::: STL (Standard Template Library) ::: Vector C++

Como retornar uma referência ao primeiro elemento de um vector C++ usando a função front()

Quantidade de visualizações: 6641 vezes
O primeiro elemento em um contêiner STL vector do C++ pode ser acessado por meio da função front(). Como esta função é sobrecarregada, temos duas opções:

reference front();
const_reference front() const;  
A primeira versão é do tipo T&, ou seja, retorna uma referência ao primeiro elemento. Veja:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

#include <iostream>
#include <vector>

using namespace std;

int main(int argc, char *argv[]){
  // um vector vazio que conterá inteiros
  vector<int> valores;

  // vamos inserir três elementos
  valores.push_back(54);
  valores.push_back(13);
  valores.push_back(87);

  // vamos obter o valor do primeiro elemento do vector
  // Note que front() pode ser usada dos dois lados
  // de uma operação de atribuição
  int valor = valores.front();
  cout << "Primeiro elemento: " << valor << endl;

  // vamos alterar o valor do primeiro elemento
  valores.front() = 102;

  // vamos testar o resultado
  cout << "Primeiro elemento: " << valores.front() << endl;

  system("PAUSE"); // pausa o programa
  return EXIT_SUCCESS;
}

Note que aqui nós usamos:

int valor = valores.front();
para guardar o valor do primeiro elemento na variável valor. Poderíamos também usar:

int& valor = valores.front();
valor = 102;
Agora valor é uma referência direta ao primeiro elemento do vector. Desta forma, qualquer alteração no valor da variável valor afetará também o primeiro elemento do vector.

Observe agora o seguinte trecho de código:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

int valor = valores.front(); // o primeiro elemento é 54
valores.front() = 20;
cout << "Primeiro elemento: " << valor << endl;

Aqui nós acessamos o valor do primeiro elemento, guardarmos-o na variável valor e atribuímos o valor 20 à valores.front(). Porém, ao imprimirmos a variável valor o seu conteúdo ainda é 54. De fato, o que gostaríamos é que uma alteração em valores.front() afetasse também a variável valor. Assim:

int& valor = valores.front(); // o primeiro elemento é 54
valores.front() = 20;
cout << "Primeiro elemento: " << valor << endl;
Mas, como evitar alterações diretas na variável valor? Podemos declarar valor como uma referência constante, ou seja, usar a segunda versão da função front(), a saber const T&, que retorna uma referência constante. Veja:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

const int& valor = valores.front(); // o primeiro elemento é 54
valores.front() = 20;
valor = 300; // esta linha não compila
cout << "Primeiro elemento: " << valor << endl;

Agora o efeito que queríamos é alcançado. Alterações em valores.front() afetam a variável valor, mas, não podemos alterar valor diretamente, já que esta variável é uma referência constante agora.


Vamos testar seus conhecimentos em Ética e Legislação Profissional

Ética Empresarial e Profissional: Noções Gerais

A partir dos anos 80, a questão da ética começou a ganhar mais destaque e importância nas rotinas das empresas brasileiras. Indique a alternativa que contém os fatores que contribuem para essa mudança.

A) O enxugamento dos cargos de comando; a competição interna pelos cargos mais elevados; a conquista de maior autonomia pelos empregados.

B) O enxugamento dos cargos de comando; a competição externa pelos cargos mais elevados; a conquista de maior autonomia pelos empregados.

C) O enxugamento dos cargos operacionais; a competição interna pelos cargos mais elevados; a conquista de maior autonomia pelos empregados.

D) O enxugamento dos cargos operacionais; a competição interna pelos cargos mais elevados; as parcerias com os fornecedores.

E) Maior contratação para os cargos operacionais; a competição interna pelos cargos mais elevados; a conquista de maior autonomia pelos empregados.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em JavaScript

Analise o seguinte código JavaScript

var palavra = 'b' + 'a' + + 'a' + 'a';
palavra = palavra.toLowerCase();
document.write(palavra);

Qual é o resultado de sua execução?

A) baaa.

B) banana.

C) anana.

D) bananas.

E) Um erro de execução.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Fenômeno de Transportes e Hidráulica

Viscosidade dos fluidos

A velocidade é um fator determinante na viscosidade de um fluido. Muitos estudos apresentam o cálculo da viscosidade a partir da velocidade média de um fluido viscoso. Como é chamado o fluido com viscosidade variável com a velocidade em que a tensão de cisalhamento não é diretamente proporcional à taxa de deformação?

A) Fluido compressível.

B) Fluido não compressível.

C) Fluido newtoniano.

D) Fluido não newtoniano.

E) Fluido relativo.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Python

Qual o resultado da execução do seguinte código Python?

frase = "Gosto Muito de Python"
frase = frase.swapcase()
print(frase)

A) gOSTO mUITO DE pYTHON

B) Gosto muito de python

C) Gosto Muito De Python

D) PYTHON DE MUITO GOSTO

E) gosto MUITO de PYTHON
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em

Vidros

Qual dos tipos abaixo não é um modelo de vidro:

A) Float.

B) Acrílico.

C) Laminado.

D) Aramado.

E) Cromogênico.
Verificar Resposta Estudar Cards Todas as Questões

Desafios, Exercícios e Algoritmos Resolvidos de C++

Veja mais Dicas e truques de C++

Dicas e truques de outras linguagens

E-Books em PDF

E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 27 usuários muito felizes estudando em nosso site.