Ir para conteúdo
Fórum Script Brasil

vangodp

Membros
  • Total de itens

    883
  • Registro em

  • Última visita

Posts postados por vangodp

  1. tal como você tem da a entender que estão separados por espaço...

    while (arquivo >> dados)
    cout << dados << endl; 

    a) o menor dos números:

    você precisa de uma variável na qual você deve inicializar com o maior valor possivel ao que possa ser armazenado em um int. logo ir guardando cada int lido caso seja menor que a tal variável.
     

    #include<iostream>
    #include<climits>
    using namespace std;
    
    int main(){
        int n = INT_MAX;
        int aux = 3000;
        cout << "Antes" << n << endl;
        cout << "Antes" << aux << endl;
    
        //n é maior que aux, vai ser atribuido o valor de aux a n
        if ( aux < n ){
            n = aux;
        }
        cout << "Depois" << n << endl;
        cout << "Depois" << aux << endl;
    
        aux = 5000;
    
        //agora n é menor que aux, n vai acontecer nada
        if ( aux < n ){
            n = aux;
        }
        cout << "Agora" << n << endl;
        cout << "Agora" << aux << endl;
    
        aux = 10;
    
        //aux é menor que n... sempre que isso acontecer o valor de aux vai ser guardado em n "anotando" o menor numero sempre.
        if ( aux < n ){
            n = aux;
        }
        cout << "Fim" << n << endl;
        cout << "Fim" << aux << endl;
        return 0;
    }

    é dizer... cada vez que ler um numero guarda ele na aux e compara ele com n para ver si aux é menor, caso for assim você copia o aux no n. Por isso precisa inicializar n com o maior valor possivel, isso acontece quando fazemos int n = INT_MAX. O INT_MAX é o maior valor que cabe em um int, se fizer um ++ ao n você verá que passa a ser negativo. também tem INT_MIM etc. você pode ver aqui exemplos: https://www.cplusplus.com/reference/climits/

     

    b) o maior dos números
    o maior dos números é a mesma coisa... só que desta vez com INT_MIN ou simplesmente atribuindo 0 ao n. Tome cuidado porque si tiver números negativos melhor usar INT_MIN, e em caso de n ter negativos talvez inicializando n com 0 seja suficiente. Dica.. se no arquivo n tiver numeros negativos talvez seja melhor usar unsigned int n em vez de int... fica mais "profissional".

    tenta ai e me diz como foi.
     

    c) a soma de todos os números.
    A soma é o mais fácil... você precisa de uma variável chamada somatória do tipo int que deve ser inicializado e cada vez que ler um numero do arquivo você deve fazer:
    n = n+aux;

     

  2. pode ser que o codeblocks n ache gdb.exe, você tem que indicar para codeblocks. vai em settings/Debuger Settings e en default você precisa buscar o gdb.exe. O gbd.exe costuma estar na pasta do compilador chamada bin.
    https://prnt.sc/WcjVReXc6Zjd

    Se tiver dificuldade me avise e pode que seja possivel lhe ajudar.

    gbd.exe costuma estar junto na pasta do gcc.exe, g++.exe etc(pasta bin)

    como na foto em executable path você precisa indicar a pasta bin e o nome do arquivo... neste caso gdb.exe

  3. Em 16/04/2022 em 04:52, M. Karolina Souza disse:

    O que eu mais gosto de usar é o Clion da JetBrains galera, quem fizer faculdade ou algum curso superior, tem uma assinatura gratuita com todos os produtos da JetBrains, eu uso o Clion e o Pycharm nela, depois procurem sobre, é uma IDE muito boa!

    é uma ide muito boa sim.. mas também muito dependente de cmake, para estudo isso adiciona uma nova capa de complexidade.

     

  4. também vamos ter de adivinhar o que faz o programa...? se você comentar ele ou talvez explicar o que você achar que ele deveria fazer nas partes mais criticas do seu programa.

    Assim de entrada vejo coisas que podem causar erros como a linha "double maior;" dentro da função maior.

    quando declarar uma variável tenha em mente que você esta reservando um espaço da memoria, e que esse espaço pode vir com dados de outros programas incluídos("lixo"), se outro programa tiver usado esse espaço anteriormente é bem provável que lá tenha algum valor previo.

    Dai se você fizer...

    	int i;
    	double maior;
    	for(i=0; i!=tam; i++){
    		if(vetor[i] > maior){
    			maior=vetor[i];

    pensando que maior vale 0 você pode topar com erros pois na realidade se a função tiver lixo poderia ser algo como isso
     

    	int i;
    	double maior = (aqui poderia ter qualquer valor);
    	for(i=0; i!=tam; i++){
    		if(vetor[i] > maior){
    			maior=vetor[i];

    isso pode causar erros imprevisíveis, porque poderia funcionar seu programa, ou funcionar as vezes, ou até mesmo sair dragão na tela.

    Quando você precisar fazer cálculos com uma variável o melhor é dar um valor inicial

    	int i;
    	double maior = 0; // aqui temos controle porque sabemos que valor inicial vai ter
    	for(i=0; i!=tam; i++){
    		if(vetor[i] > maior){
    			maior=vetor[i];

    Fora isso você deveria comentar as formulas e cada parte critica etc. Somos todos pessoas ocupadas e realmente eu não sou estudante de pscologia XDDD. E ainda sou bem ruim em matematicas kkk. Se você me facilitar o que você espera que o programa faça, talvez, ou certamente seja possivel lhe ajudar. A linguagem C faz muitas coisas implícitas, que muitas vezes o programador desconhece, por isso você pode estar tendo problemas.

  5. No c e c++ se você errar uma coisinha da "tropecentos" mil erros. o truco é ir arrumar o primeiro que provavelmente o resto volte a vuncionar. Para isso preste atenção nesta linha:
     

    \Users\magsm\OneDrive\┴rea de Trabalho\desafios\passagem de aviÒo\passagens.cpp: In function 'int main()': 

    No arquivo passagens.cpp: dentro da função main na linha 20 acontece o seguinte erro:
     

    error: expected primary-expression before ')' token

    esta esperando uma expressão antes do parêntesis de fechamento )
     

       20 |    switch (){  
          |            ^   

    talvez você n saiba... ou pode que sim. tanto switch, como if, como while , etc, quer que você ponha algo dentro de ( e ) para ser avaliado. Dependendo do resultado da expressão dentro dos parêntesis for verdadeiro o falso se entra no corpo {} ou não. se os parêntesis estão vazios, o switch n serve para nada, e esse é o erro pois n se avalia nada.

    só com isso deve se arrumar os outros 200 mil erros kkk

  6. "Lixo" no buffer.
    Insira depois de cada cin "cin.sync();" para sincronizar a entrada padrão com o que for guardado na variável, isso evitará problemas.

    cin>>blabla...
    cin.sync();

    busque sobre  como limpar o buffer em c++.

  7. Aparte disso você esta multiplicando um double por outro double e tentando guardar o resultado em um float causando assim a perda de informação. O que acontece neste caso é uma conversão implícita de tipos de double a float e isso pode dar lugar a erros importantes no seu código em um futuro.

    procure fazer desta forma:

    float a = 100.64f * 100.64f;

    O sufixo especifica o  de literal de numero real:

    (sem sufixo) se define um double

    Com sufixos f ou F se define float

    Com sufixos l ou L se define long double

     

    O numero 100.64 se diz que é um literal de ponto flotante porem pode dar lugar a ambiguidades. você pode querer um double, um float, um long double, etc, por isso você deve informar o compilador usando os sufixos acima mencionados assim da a entender que você tem o controle do seu programa.

    Existem muitos tipos de literais, para praticamente todos os tipos, lhe recomendo que procure sobre o tema.

×
×
  • Criar Novo...