Ir ao conteúdo

Posts recomendados

Postado

Olá, estou criando um programinha console simples onde eu possa definir uma hora para o PC desligar.

Minha dúvida é: Como colocar o resultado de " "\nSegundos : " << (((hora*60)+minuto)*60); " dentro de "system("shutdown -s -t "XX" "); " no lugar dessas duas letras X.

sou super novato em linguagem de programação, e até agora não achei nenhuma explicação clara.

Obrigado!

 

 

#include <iostream>

using namespace std;

int main()
{
    
    int hora=0;
    int minuto=0;
    
    cout << "Digite a hora: ";
    cin >> hora;
    cout << "digite um minuto: ";
    cin >> minuto;

    cout << "\nHora: " << hora << "\nMinuto: " << ((hora*60)+minuto) << "\nSegundos : " << (((hora*60)+minuto)*60);
    cout << "\n";

    

    system("shutdown -s -t "XX" ");

    system("pause");
    return 0;
}

Postado

1.  Para o método/função system() está faltando ser incluído o cabeçalho "stdlib.h" ou "cstdlib"
 

2. O método system() recebe um char[] como parâmetro, o que dificulta bastante a conversão de tipos nesse caso já que os métodos padrões do C++ são para conversões entre string e char* como o c_str() por exemplo

Primeiro seria necessário converter os números inteiros da expressão em uma string, pois desconheço uma forma de converter int direto para char[] e se tiver deveria dar uma grande volta, pois provavelmente teria que colocar cada número do resultado da expressão dentro de um array de int e cada numero do int no array de char. Fazer parsing em C++ não é tão melzinho na chupeta com C# e Java. O jeito mais fácil de se fazer isso seria:
 

// requer <sstream>

    stringstream strparse;
    strparse << (hora * 60 + minuto) * 60;
    string result = strparse.str();

 

Em seguida precisará converter essa string em char[]

 

char output[result.length()];
    for (int i = 0; i < result.length(); i++){
        output[i] = result[i];
    }

Por último você precisará concatenar os dois arrays (um com o comando e o outro com o valor), o que também é bem chatinho de se fazer no C/C++. Existe n maneiras de se fazer isso. Uma simples sem precisar usar outras funções e bibliotecas.
 

 char command[15 + sizeof(output)] = { "shutdown -s -t " };
    int x = 0;
    for (int i = 15; i < 15 + sizeof(output); i++){
        command[i] = output[x];
        x++;
    }

Testado.thumb.png.d7b8e27e9d0615dde4ac8df6261dc052.png

 

Postado

Obrigado pela resposta! 

testei os códigos porém surgiram erros.

 

1>------ Build started: Project: Hora, Configuration: Debug Win32 ------
1>Compiling...
1>HoraCode.cpp
1>c:\users\william\desktop\hora\hora\hora\horacode.cpp(22) : error C2057: expected constant expression
1>c:\users\william\desktop\hora\hora\hora\horacode.cpp(22) : error C2466: cannot allocate an array of constant size 0
1>c:\users\william\desktop\hora\hora\hora\horacode.cpp(22) : error C2133: 'output' : unknown size
1>c:\users\william\desktop\hora\hora\hora\horacode.cpp(23) : warning C4018: '<' : signed/unsigned mismatch
1>c:\users\william\desktop\hora\hora\hora\horacode.cpp(26) : error C2070: 'char []': illegal sizeof operand
1>c:\users\william\desktop\hora\hora\hora\horacode.cpp(26) : error C2117: 'command' : array bounds overflow
1>        c:\users\william\desktop\hora\hora\hora\horacode.cpp(26) : see declaration of 'command'
1>c:\users\william\desktop\hora\hora\hora\horacode.cpp(26) : error C2117: 'command' : array bounds overflow
1>        c:\users\william\desktop\hora\hora\hora\horacode.cpp(26) : see declaration of 'command'
1>c:\users\william\desktop\hora\hora\hora\horacode.cpp(26) : error C2078: too many initializers
1>c:\users\william\desktop\hora\hora\hora\horacode.cpp(28) : error C2070: 'char []': illegal sizeof operand
1>Build log was saved at "file://c:\Users\William\Desktop\Hora\Hora\Hora\Debug\BuildLog.htm"
1>Hora - 8 error(s), 1 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

 

Vou precisar tirar um tempo ai para estudar mais a linguagem, pelo que vi tem bastante coisa pra ver.
 

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

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

Mostrar 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

Mostrar mais  
×
×
  • Criar novo...