24
Aug

Curso C++ – Aula 59 – Manipulando Planilhas – eXcript


Fala galera! Sejam todos bem-vindos a mais
um episódio do Curso de C++! E nesta aula, nós vamos efetuar a soma dos valores de cada
linha, e por fim, nós vamos apresentar a soma da soma dos valores de cada linha. Ou
seja, nós vamos pegar o total de cada linha, vamos somar todos eles e vamos apresentar
o resultado final. Eu fiz aqui uma representação visual pra que seja mais fácil o entendimento
dos nossos exercícios. Então, nós vamos criar uma planilha que tenha 6 colunas e 5
linhas, porém, nós só vamos definir valores para as 5 primeiras posições, até porque,
a sexta posição do nosso Array irá conter a soma dos 5 primeiros elementos. Então,
quando nós calcularmos a soma de todos os elementos do nosso Array da somatória das
linhas, e por fim, nós apresentaremos o valor resultante da soma da soma. Ou seja, o valor
resultante da soma do total de cada linha. Então, a primeira coisa que nós temos que
fazer é definir um Array do tipo double, do nome plan. E vamos dizer que esse Array
vai ter 6 colunas e 5 linhas. Então, vai ser um Array de 6 por 5. Feito isso, vamos
inicializar esse Array com o valor zero, ou seja, quando nós abrimos e fechamos chaves
e adicionamos ao nosso Array nós estamos dizendo que o valor de todas as posições
seja igual a zero. Feito isso, vamos declarar um laço de repetição. Então vamos dizer
que nós queremos um laço for, nesse nós queremos uma variável inteira de nome X e
vamos inicializar a mesma com zero. Vamos dizer que esse laço deve ser repetido enquanto
que X for menor do que 5 e deve ser incrementado uma unidade a cada ciclo. Abrimos e fechamos
chaves. Agora vamos copiar e colar esse ciclo aqui, colocamos pra frente. Vamos colocar
o valor de Y aqui dentro. Ou seja, vamos agilizar o nosso trabalho. Opa! Aqui não é Y aqui
é X. X recebe zero, X menor do que 5 e mais mais. Y é igual a zero. Y menor do que 5.
Y mais mais. Como nós podemos ver, nós temos 6 posições aqui. Porém, a sexta posição,
que no caso é de índice igual a 5, nós vamos reservar para colocar a soma dos valores.
Então, vamos gerar valores aleatórios, ou seja, vamos utilizar uma função do C++ de
nome rand() que vem da palavra Random, ou seja, uma função que gera números aleatórios.
Pra que nós possamos utilizar a função rand() vamos importar uma biblioteca de nome
standart library. Então vamos dizer que nós queremos importar a biblioteca s t d l i b
ponto h. Opa. stdlib.h. Ou seja, standart library. Feito isso vamos ir aqui no nosso
código e vamos dizer que para cada posição da nossa matriz, plan, vamos colocar aqui,
plan x, y, nós queremos atribuir um valor aleatório. Então, vamos invocar a nossa
função de nome rand() abrimos e fechamos parêntesis, vamos dar um cast nesta função
pra double, vamos colocar aqui double a frente e vamos dividir o resultado retornado pela
constante de nome RAND_MAX. Ou seja, essa aqui é uma constante que está definida dentro
da biblioteca standart library. Então, o que que nós estamos fazendo? Nós estamos
gerando um número aleatório através da função rand() e então nós dividimos por
um determinado valor. Logo, nós temos que o valor que será retornado será um valor
do tipo double, por isso que nós damos o cast a frente da expressão. Então agora
o que que nós vamos fazer, é mandar imprimir todos os valores da nossa planilha. Nós temos
que nós poderíamos imprimir os valores da nossa planilha utilizando esses laços de
repetição que nós definimos aqui, porém, somente por questões didáticas, nós vamos
duplicar código, ou seja, aqui nós estamos gerando uma planilha somente para que nós
possamos estudar e pra nós fazermos isso nós utilizamos laço de repetição aninhados.
Porém, pra nós imprimirmos todos os itens de uma tabela nós também precisamos utilizar
laços de repetições aninhados. Então, nós poderíamos utilizar somente esses 2
laços aqui, porém, vamos partir do pressuposto que nesses primeiros 2 laços é a formação
da planilha, ou seja, nesta situação nós estamos gerando a planilha, mas nós poderíamos
receber a mesma. E o código a seguir é o código pra nós imprimirmos a planilha. Então,
se nós partirmos do pressuposto que nós vamos receber a planilha esses códigos aqui
eles não existiriam, somente por isso é que nós vamos duplicar códigos, do contrário,
nós utilizaríamos essa mesma estrutura. Então vamos lá! Vamos copiar e colar esse
código aqui abaixo. E agora, vamos mandar imprimir cada posição da nossa planilha.
Então, console output, operador de inserção o que que nós queremos mandar imprimir? A
posição da nossa planilha. E qual é a posição? A posição X. Ou seja, nós estamos definindo
X igual a zero, X menor do que 5 e X mais mais. Y é igual a zero, Y é menor do que
5 e Y mais mais. Logo, nós estamos percorrendo todos os campos da nossa planilha. Feito isso
nós estamos mandando imprimir no console. Então, plan x y, operador de inserção,
endl, ponto e vírgula pra finalizar a instrução. Aqui nós temos que fazer uma única alteração,
nós temos que imprimir o nosso laço mais aninhado, tem que ser impresso enquanto y
for menor do que 6, até porque, nós temos 6 posições, ou seja, a sexta posição é
onde nós iremos guardar a somatória de cada linha. Então por isso que nós estamos dizendo
que nós queremos imprimir enquanto Y for menor do que 6. Agora nós temos 2 situações,
vamos definir aqui uma String, e vamos colocar aqui. Nós temos que será impresso primeiro
um número, depois será dado uma vírgula espaço, segundo número, terceiro número,
quarto número, e quinto número. Então, esses 5 números aqui serão impressos e irão
formar a nossa linha. Agora o que nós temos que fazer, é adicionar ao final dessa linha
o sinal de igual e então, imprimir a sexta posição, que no caso, é a somatória de
todos esses valores aqui. Da posição zero até a posição 4 nós temos que imprimir
uma vírgula. Da posição 4 pra posição 5 nós temos que imprimir o sinal de igual
e na posição 5 nós temos que dar uma quebra de linha. Então vamos lá! Vamos declarar
uma variável String, vamos chamar essa variável de end e vamos definir duas condições. Então
vamos definir a primeira condição, com y sendo menor do que 4. Ou seja, quando Y for
igual a zero será impresso uma vírgula, quando Y for igual a 1 será impresso uma
vírgula, Y for igual a 2 será impresso uma vírgula, Y for igual a 3 será impresso uma
vírgula, porém, quando Y deixar de ser menor do que 4, ou seja, y ser igual a 4 nós vamos
imprimir o sinal de igual. Então nós estamos dizendo que, se o Y for menor do que 4 colocamos
o sinal de interrogação, e vamos dizer que nós queremos que seja impresso os caracteres
vírgulas e espaço. Feito isso colocamos 2 pontos, até porque nós vamos definir mais
uma condição, vamos dar um Enter, e vamos colocar a segundo condição. Se Y for diferente
de 5 colocamos uma interrogação, vamos dizer que nós queremos que seja impresso o sinal
de igual. Senão, vamos dizer que nós queremos que seja impresso simplesmente um valor qualquer,
no caso, vamos colocar aqui, um espaço qualquer. Ponto e vírgula pra finalizar a instrução.
Então nós estamos dizendo que quando nós chegarmos na quinta posição essas condição
aqui não mais será satisfeita, até porque, o Y será igual a 4 e como nós estamos dizendo
que esse valor aqui só pode ser impresso enquanto Y for menor do que 4, nós não estamos
dizendo que deve ser impresso enquanto Y for menor ou igual a 4 nós temos que essa condição
aqui será verificada, então, se Y for diferente de 5, vamos mandar imprimir um sinal de igual,
senão, vamos mandar imprimir uma quebra de linha. Ou seja, se o Y for diferente de 5
nós mandamos imprimir um espaço, e quando o Y for igual a 5 nós vamos mandar quebrar
a linha. Ou seja, o x vai ser igual a 5 quando nós estivermos acessando a sexta posição,
por isso nós mandamos quebrar a linha. Agora, ao invés de nós passarmos endl aqui, vamos
passar a nossa variável end. Feito isso, vamos executar o nosso programa, e olha só,
nós temos que foram impressos uma série de valores aleatórios, e aqui no final, nós
temos que foi impresso um valor qualquer, até porque, nós ainda não efetuamos a soma.
Vamos fechar. Então aqui ao invés de nós fazermos y diferente de 5 vamos dizer que
enquanto y for menor do que 5. Vamos mandar executar e vamos ver. E olha só. Nós temos
que está sendo gerado uma série de números aleatórios e aqui na última coluna, onde
é pra ser representado a soma, esta aparecendo esse valor aqui que não deveria aparecer.
Isso está acontecendo porque nós estamos definindo uma matriz de 6 por 5 e a matriz
tem que ser de 5 por 6. Aqui vamos fazer uma alteração e vamos somar esse valor aqui,
e vamos dividir o RAND_MAX por 100. Então, RAND_MAX dividido por 100. Desta forma, nós
vamos conseguir valores com menos casas decimais, e também nós vamos conseguir uns números
mais aleatórios. Então vamos ver o que nós já estamos fazendo. Nós geramos uma tabela
aleatoriamente. Em seguida, nós imprimimos essa tabela na tela. Ou seja, nós já temos
as 2 principais funções prontas. A função pra gerar uma tabela aleatoriamente, e em
seguida a função pra imprimir a tabela. Agora o que nós temos que fazer é calcular
a soma de todos os valores de uma linha. Então, a forma mais fácil que nós temos pra somar
o valor de todas as colunas, é nós implementarmos isso aqui no primeiro looping. Porém, nós
vamos copiar e colar o código novamente, até porque, aqui nós estamos gerando a tabela.
Gerando a tabela. Aqui em baixo nós estamos imprimindo a tabela. Opa, aqui não é tabela
é planilha. Até porque, aqui nós estamos gerando a planilha. Aqui em baixo, o que que
nós estamos fazendo? Nós estamos imprimindo a planilha. E agora o que nós vamos fazer,
é calcular o valor das linhas. Então, vamos copiar e colar esse código aqui, vamos colocar
esse código aqui, e vamos dizer que nós estamos fazendo o cálculo dos valores. Vamos
ajeitar o nosso texto, vamos ir aqui acima, vamos ajeitar também. Vamos ajeitar esse
texto aqui também. Então, nós temos que percorrer todas as linhas, e adicionar pra
nossa sexta coluna o valor da soma de todas as outras colunas. Então, pra nós fazermos
isso, nós vamos dizer que a nossa sexta coluna, ou seja, na nossa coluna x 5 vai ser mais
igual, o valor da respectiva posição. Ou seja, o valor da posição x y que nós estamos
executando. Então vamos colocar aqui, plan x y. Ponto vírgula pra finalizar a instrução.
Então o que que nós estamos fazendo? O x ele percorre todas as nossas linha, enquanto
que o y percorre todas as nossas colunas. Como nós temos que somar o valor das nossas
colunas, nós estamos fazendo o seguinte, nós estamos dizendo que o valor de cada coluna
ele deve ser incrementado ao valor da nossa sexta coluna, a nossa coluna de índice 5.
Então, o laço de repetição aninhado ele percorre as colunas de uma tabela. Logo, nós
vamos somar o valor de todas as colunas, quando nós estamos percorrendo as colunas nós vamos
somando o valor da coluna onde nós estamos, ou o valor que já foi adicionado a nossa
última coluna. Então por exemplo, quando y for igual a zero, o valor da somatória
vai ser igual a zero também, até porque, não foi somado nenhum valor ainda. Então,
o valor de Y ele vai ser somado com o valor que está contido na nossa sexta coluna que
no caso é o valor zero. No próximo ciclo vai ser somando o valor da próxima coluna
com o valor da coluna anterior. No terceiro ciclo será somado o valor da terceira coluna
com o valor das outras duas, e assim sucessivamente. Agora o que nós vamos fazer é toda vez que
nós acabarmos de somar o valor de todas as colunas e nós adicionarmos esse valor pra
nossa sexta coluna, a nossa coluna de índice igual a 5, nós vamos somar com o valor de
uma variável que nós vamos declarar externamente. Então vamos declarar uma variável externamente,
do tipo double, de nome total e vamos inicializar a mesma com zero. Vamos dizer que total é
mais igual ao valor de plan, na linha x na posição 5. Nós temos que esse laço aninhado
ele percorre todas as colunas e vai somando o valor de cada uma com o valor da nossa quinta
coluna que no caso é o valor da somatória. Então, a partir do momento que esse laço
de repetição for finalizado nós temos que a sexta coluna da posição X já irá conter
o valor da somatória da linha, então, nós vamos pegar esse valor e vamos incrementar
a uma variável que nós declaramos externamente no laço de repetição mais externo, e vamos
dizer que esse valor é mais igual. Então no primeiro ciclo nós vamos dizer que zero
mais o valor do cálculo, no segundo ciclo o valor que foi calculado anteriormente com
o valor do respectivo cálculo e assim por diante. Então, essa aqui é a operação
mais importante pra nós entendermos nessa aula, ou seja, a operação que nós estamos
fazendo no laço de repetição aninhado e a operação que nós estamos fazendo no bloco
de instrução do laço de repetição mais externo. Como nós podemos ver, aqui dentro
nós executamos uma operação e quando estes laço é finalizado nós vamos executar uma
outra operação, até porque, nós sabemos que toda vez que esse laço for finalizado
a nossa sexta coluna da posição X irá conter a somatória, então nós já podemos incrementar
o valor dessa somatória com o total de todas as colunas. Agora, a única coisa que nós
temos que fazer é imprimir o valor total, então vamos ir aqui abaixo e vamos escrever,
console output, operador de inserção, abrimos e fechamos chaves, e vamos dizer, o valor
da soma é, dois pontos espaço, operador de inserção e aqui nós passamos a nossa
variável total. Vamos colocar um operador de inserção novamente, endl, ponto e vírgula
pra finalizar a instrução. Vamos mandar executar, e olha só agora nós temos o valor
de cada coluna e no final nós temos uma somatória, feito isso nós temos que o valor da somatória
de todas as linhas é igual ao valor dez ponto trinta e cinco novamente e cinco. Ou seja,
nós somamos o valor de todas as colunas e no final nós pegamos esses resultados e somamos
todos eles, logo, nós temos que o valor foi igual a dez ponto trinta e cinco noventa e
cinco. Então é isso ai, vejo vocês na nossa próxima aula, muito obrigado e até mais,
tchau!!

Tags: , , , , , , , , , , , , , , , , , , , , , ,

15 Comments

  • Pedro Carvalho says:

    Lime, like!
    Obrigado por estar sempre compartilhando conteúdo sobre programação connosco, amigo!

  • Samuel Arao says:

    Muito obrigado por não desistir , e compartilhar seu conhecimento . Te desejo tudo de bom e sucesso.

  • Ivan motociclista says:

    Oi Claudio tudo bem? parabéns pela iniciativa, legal mesmo ! mas as vídeos aulas 60 e 61 não podemos acessar, elas estão no modo privado, que pena. um grande abraço.

  • Midia Virgem says:

    Vc é pica cara !
    Muito sucesso para vc!

  • Canal do tio Luffy says:

    Quando você vai falar sobre as funções?

  • Wesley 'Kenpachi' says:

    Professor , o meu eu fiz da seguinte forma:

    #include <iostream>
    #include <stdlib.h>
    using namespace std;

    int main()
    {
    double plan[5][6] = {};
    double valorSoma = 0;

    // AQUI A TABELA E GERADA
    for (int x = 0 ; x < 5 ; x++){
    for (int y = 0 ; y < 5 ; y++){
    plan[x][y] = (double)rand()/RAND_MAX;
    }
    }

    // AQUI E EFETUADO A SOMA DOS VALORES CONTIDOS EM Y
    for (int x = 0 ; x < 5 ; x++){
    for (int y = 0 ; y < 5 ; y++){
    valorSoma = valorSoma + plan[x][y];
    plan [x][5] = valorSoma;
    }
    }

    // AQUI A TABELA E IMPRESSA
    for (int x = 0 ; x < 5 ; x++){
    for (int y = 0 ; y < 6 ; y++){
    string finLinha = (y < 4) ? ", " :
    (y < 5) ? " = " :
    (y == 5) ? "n": " ";
    std::cout.precision(2);
    std::cout << std::fixed << plan[x][y] << finLinha;
    }
    }
    cout << endl;

    system("pause");
    return 0;
    }

  • william Pietro says:

    meeu Deus kkkk
    sim professor, confesso que nessa aula eu dei uma viajada em algumas partes
    acho que é porque foi bem rapido que vc fez as coisas no final
    ai como eu tbm to digitando como vc eu me perco
    vou rever essas ultimas aulas mesmo

  • Faraó says:

    Aff, vou desistir de programação, kkkk

  • Jakson Souza says:

    Com essa explicação fica impossível não entender, parabéns professor!

  • Bruno Mello says:

    Cheguei até aqui sem problema algum, felizão kkkkk chegou essa aula eu n entendi foi nada ;-;

    Vou procurar uns exercicios sobre esse assunto pra treinar mais

  • Alexandre Pereira says:

    Muito bom, parabéns pelo conteúdo 🙂

  • Aegyr TM says:

    Você poderia ensinar a fazer Janelas Windows com C++, eu quero muito aprender sobre essa livraria do windows.

  • Ektor Phillipe says:

    Professor, copiei o mesmo programa que você, só que, a soma das colunas esta dando o dobro do que deveria. depois se possível da uma conferida.
    Parabéns pelo trabalho!

  • Lucas Eduardo says:

    Obrigado professor pelas ótimas aulas, até aqui entendi foi tudo porém ainda não peguei a prática, vou fazer seu curso de python, sua explicação é muito boa e dá para entender tudo facilmente sem ter que ficar revendo e revendo o vídeo vlw 😀

  • Beni S says:

    isso não foi um curso de C++. Não se falou nada de orientação ao objeto,classes etc

Leave a Reply

Your email address will not be published. Required fields are marked *