Ir ao conteúdo
  • Cadastre-se

Compilador para notepad++?


danielpcl

Posts recomendados

Pessoal, peguei o seguinte exercício na apostila:

Exercício

C++ permite o uso de operadores combinados, como +=, *=, -= e \=, para simplificar a escrita de operações

como:

a = a + b;

// Pode ser escrito como:

a += b;

Escreva um programa que utilize o operador += com strings. Faça com que o resultado exibido na tela evidencie

esse uso.

Mas, isso não está entrando de jeito nenhum na minha cabeça... como eu faço pra fazer uma soma dessas, com strings? :(

Link para o comentário
Compartilhar em outros sites

a biblioteca C++ padrão te dá o cabeçalho string que contém funções para concatenar strings, ou seja atribuir o valor a uma string de uma combinação de strings,

Acesse aí, você terá uma definição da biblioteca e o que você pode fazer com ela

http://www.cplusplus.com/reference/

Link para o comentário
Compartilhar em outros sites

a biblioteca C++ padrão te dá o cabeçalho string que contém funções para concatenar strings, ou seja atribuir o valor a uma string de uma combinação de strings,

Acesse aí, você terá uma definição da biblioteca e o que você pode fazer com ela

http://www.cplusplus.com/reference/

Então... esse negócio de concatenar strings eu entendi, antes desse exercício eu tinha feito um sobre isso, mas eu não entendi esse negócio de "stringA = stringA + stringB"... Mas acho que agora eu consegui entender. :lol:

E, tô com mais um problema, tô com um exercício aqui, e, quando eu rodo ele, parece que o calculo estoura a váriavel, ficando um valor negativo, totalmente ao contrario do que eu precisava... Se alguém puder ajudar:

Exercício

A distância percorrida pela luz em um ano, conhecida como ano-luz, pode ser calculada pela seguinte fórmula:

anoLuz = KM_POR_SEGUNDO * SEGUNDOS_POR_MINUTO * MINUTOS_POR_HORA *

HORAS_POR_DIA * DIAS_POR_ANO;

Utilize #define de maneira que a fórmula acima possa ser usada diretamente em um programa C++. Dica:

velocidade da luz = 300.000 Km/s.

E a seguir a solução que eu tentei montar:

#include <cstdlib>

#include <iostream>

#define anoLuz 300000*60*60*24*365

using namespace std;

int main(int argc, char *argv[])

{

cout << "Velocidade da Luz: " << anoLuz << "\n";

system("PAUSE");

return EXIT_SUCCESS;

}

Mas, como eu disse, no calculo 300000*60*60*24*365 a váriavel parece que estoura...

Link para o comentário
Compartilhar em outros sites

#define anoLuz 300000*60*60*24*365

Isso aí não é variável. É macrossubstituição.

O pré-processador, antes de compilar, substitui todos os textos do #define pelo valor correspondente.

Ele não calcula. Ele só corta e cola em cima.

Tem mais coisa prá configurar.

Então, é exatamente isso que o texto da apostila deixa a entender, "A diretiva #define faz simplesmente uma substituição de texto.. Porém, o exercício diz "[i]Utilize #define de maneira que a fórmula acima possa ser usada diretamente em um programa C++. Dica:

velocidade da luz = 300.000 Km/s.". Como eu resolveria isso?

Link para o comentário
Compartilhar em outros sites

Então... esse negócio de concatenar strings eu entendi, antes desse exercício eu tinha feito um sobre isso, mas eu não entendi esse negócio de "stringA = stringA + stringB"... Mas acho que agora eu consegui entender. :lol:

E, tô com mais um problema, tô com um exercício aqui, e, quando eu rodo ele, parece que o calculo estoura a váriavel, ficando um valor negativo, totalmente ao contrario do que eu precisava... Se alguém puder ajudar:

E a seguir a solução que eu tentei montar:

Mas, como eu disse, no calculo 300000*60*60*24*365 a váriavel parece que estoura...

Se a velocidade da luz é 300.000 km/s porq você tá querendo colocar esse número gigante aí?

você ta multiplicando 300.000 por 60 e por 60 de novo e depois por 24 e depois por 365, cara tú não tá no pc da NASA :wacko:

Leia:

Inteiros

O tipo inteiro é um tipo bastante comum. Sua declaração dá-se através da palavra reservada int.

int inteiro = 500;

O tipo inteiro pode armazenar números que vão da faixa de -2.147.483.648 até 2.147.483.647 (um total de 232 números, ou 4.294.967.296).

Você pode modificar esta faixa de valores usando as palavras reservadas signed, unsigned, short e long. Veremos estas palavras reservadas (chamadas de modificadores de intervalo) logo abaixo.

Importante: se você quiser utilizar um número que esteja além dessa faixa de valores, você deve utilizar o tipo double.

double inteiro = 45687921681287; // um inteiro armazenado dentro do tipo double.

Ponto flutuante

Representa números fracionários e números reais (o que inclui os números inteiros). A faixa de valores varia de 1,2e-38 até 3,4e+38.

A declaração é feita através da palavra reservada float:

Ponto flutuante (dupla precisão)

Igualmente ao tipo float, utilizado para números fracionários e reais, porém com precisão ainda maior. A faixa de valores varia de de 2,2e-308 até 1,8e+308.

A declaração é com a palavra reservada double:

double numero=558749.16846516487975132156857452131274127412974812794812794812798412;

Essa multiplicação que você ta fazendo aí extrapola todos os limites de C++

Link para o comentário
Compartilhar em outros sites

Se a velocidade da luz é 300.000 km/s porq você tá querendo colocar esse número gigante aí?

você ta multiplicando 300.000 por 60 e por 60 de novo e depois por 24 e depois por 365, cara tú não tá no pc da NASA :wacko:

Leia:

Essa multiplicação que você ta fazendo aí extrapola todos os limites de C++

Então, é EXATAMENTE isso que pede no exercício... Pior que são dois exercícios assim seguidos, e eu não consigo resolver nenhum, poís aparenta ser impossível, pelo menos pro C++, fazer esse calculo (mas eu consegui fazer na calculadora do Windows).

Também tô com outro problema, só que dessa vez pra usar enum...

Tô tentando declarar as enum assim:

enum Horas

{

UmaHora = 1

DuasHoras = 2

TresHoras = 3

QuatroHoras = 4

CincoHoras = 5

SeisHoras = 6

SeteHoras = 7

OitoHoras = 8

NoveHoras = 9

DezHoras = 10

OnzeHoras = 11

DozeHoras = 12

}

Porém, o C++ não tá aceitando.. já tentei colocar, depois do 1, 2, 3, etc, vírgulas e ponto e vírgula, mas não adianta nada, e continua dando erro... alguma luz?

Link para o comentário
Compartilhar em outros sites

300000*60*60*24*365 = 9460800000000

O que dá 44 bits, se não errei aqui.

Ou 5 bytes e 1 nibble.

Ou 5 1/2 bytes.

Ou 11 nibbles.

Ou ...

unsigned long long int aguenta?

Sim, sim, é esse valor mesmo, porém, se eu tento executar a conta no C++, o resultado sai -1012953088... Então, como eu resolveria a questão? Já tô quase desistindo dessa questão :lol:

Link para o comentário
Compartilhar em outros sites

Espero que não saia torto.


short int <= int <= long int
float <= double <= long double


Type Bytes Bits Range

short int 2 16 -16,384 -> +16,383 (16kb)
unsigned short int 2 16 0 -> +32,767 (32Kb)
unsigned int 4 16 0 -> +4,294,967,295 ( 4Gb)
int 4 32 -2,147,483,648 -> +2,147,483,647 ( 2Gb)
long int 4 32 -2,147,483,648 -> +2,147,483,647 ( 2Gb)
signed char 1 8 -128 -> +127
unsigned char 1 8 0 -> +255
float 4 32
double 8 64
long double 12 96

Link para o comentário
Compartilhar em outros sites

Então, é EXATAMENTE isso que pede no exercício... Pior que são dois exercícios assim seguidos, e eu não consigo resolver nenhum, poís aparenta ser impossível, pelo menos pro C++, fazer esse calculo (mas eu consegui fazer na calculadora do Windows).

Também tô com outro problema, só que dessa vez pra usar enum...

Tô tentando declarar as enum assim:

Porém, o C++ não tá aceitando.. já tentei colocar, depois do 1, 2, 3, etc, vírgulas e ponto e vírgula, mas não adianta nada, e continua dando erro... alguma luz?

Tenta assim:

enum Horas

{

UmaHora = 1,

DuasHoras = 2,

TresHoras = 3,

QuatroHoras = 4,

CincoHoras = 5,

SeisHoras = 6,

SeteHoras = 7,

OitoHoras = 8,

NoveHoras = 9,

DezHoras = 10,

OnzeHoras = 11,

DozeHoras = 12,

};

-

Link para o comentário
Compartilhar em outros sites

@Listeiro 037, sim, a apostila tem uma tabela igualzinha essa, indicando os valores...

@Deadrools, eu tentei desse jeito que você fez, e foi :lol:

e @Dani0liveira, o jeito que você fez o enum também funcionou, mas eu tive que colocar ponto e vírgula depois que fecha as chaves

Cara, qual apostila você ta usando? passa o link ai onde você baixou pra mim dar uma olhada nela? fiquei abismado agoraa

Ou então coloca o enunciado da questão.

Cara, a apostila é daqui do trampo, tava no servidor aqui, mas eu achei um link pra ela, saca só:

http://pt.scribd.com/doc/68662486/5423-C-ou-C

O exercício tá na página 23 :lol:

Link para o comentário
Compartilhar em outros sites

Quebrei a cabeça e no final me lembrei disto:

#include<stdio.h>

int main(void) {

printf ("%d\n", sizeof(short int));

return 0;

}

Procura na internet por este cara aqui: Martin Leslie

Foi ele quem escreveu a referencia. Quer dizer, esta a qual me refiro.

Caramba... Até variável de shell é maior...

Link para o comentário
Compartilhar em outros sites

Quebrei a cabeça e no final me lembrei disto:

#include<stdio.h>

int main(void) {

printf ("%d\n", sizeof(short int));

return 0;

}

Procura na internet por este cara aqui: Martin Leslie

Foi ele quem escreveu a referencia. Quer dizer, esta a qual me refiro.

Caramba... Até variável de shell é maior...

Cara, não entendi esse código ai não. :huh:

Tem como você dar uma explicada?

Link para o comentário
Compartilhar em outros sites

Sim, sim, é esse valor mesmo, porém, se eu tento executar a conta no C++, o resultado sai -1012953088... Então, como eu resolveria a questão? Já tô quase desistindo dessa questão :lol:

Coloca assim:

#define anoLuz 365*24*60*60*300000.f

Ou assim:

#define anoLuz (float)365*24*60*60*300000

Vê se é isso aí q você ta querendo.

Link para o comentário
Compartilhar em outros sites

94608e+012 = ano-luz

É o mesmo valor só q aí tá simplificado.

Não achei um jeito pra mostrar com zeros :(

Ah, eu tinha feito um calculo no #define que também tinha dado esse número ai, mas considerei errado, e agora até esqueci o que tinha feito :lol:

Mas, esse "e+012" significa o que? Isso seria hexadecimal, octadecimal, ou algo assim?

Link para o comentário
Compartilhar em outros sites

Ah, eu tinha feito um calculo no #define que também tinha dado esse número ai, mas considerei errado, e agora até esqueci o que tinha feito :lol:

Mas, esse "e+012" significa o que? Isso seria hexadecimal, octadecimal, ou algo assim?

Esquece o q eu disse.

substitua a linha do cout por essa:

cout << "Velocidade da Luz: " << (long long)anoLuz << "\n";

Pode passar pro próximo exercício. :)

Link para o comentário
Compartilhar em outros sites

Atenção:

#include <stdio.h>
#include <limits.h> // obs #1

int main(void) {

printf ("%llu\n", ULLONG_MAX); // obs #2

return 0;

}

Obs #1: Isso aí é um header que tem informações sobre capacidades dos tipos pré-definidos do C.

Quanto cabe num int, num long int, num long long int, num char, num float etc.

Obs #2: Coisas diferentes (geralmente) aqui:

- A máscara "%llu" serve para mostrar formatação unsigned long long int.

Quem rodar o código acima verá que o resultado é maior que o valor do ano-luz.

- Esse valor ULLONG_MAX veio no header <limits.h>.

Ele vale pelo menos 2^64. Um acima ou um abaixo, como sempre.

Agora, falando de C++:

É vício de C não usar esses COUTs, mas eu não me lembro dos nomes e no caso, deve-se configurar um tipo de formatador que acompanha o objeto COUT. Alguma coisa que se escreve como std():: ou ::std().

Se a variável aguenta, então o problema pode ser na formatação do printf e semelhantes.

Vale prá qualquer variável gigante.

Link para o comentário
Compartilhar em outros sites

Esquece o q eu disse.

substitua a linha do cout por essa:

Pode passar pro próximo exercício. :)

AEEEEEEEEEEEEEE, agora deu certo :aplausos:

Não sabia dessa do long long :lol:

Agora sim, posso ir pro próximo exercício em paz...

Logo eu apareço com mais dúvidas :lol:

@Listeiro 037 É, aparentemente o problema era no cout...

Pessoa, cá estou eu com outro problema.

Exercício parecido, como vocês podem ver:

Utilize a palavra-chave const para calcular a distância percorrida pela luz em um ano, conhecida como ano-luz,
com a seguinte fórmula:
anoLuz = KM_POR_SEGUNDO * SEGUNDOS_POR_MINUTO * MINUTOS_POR_HORA *
HORAS_POR_DIA * DIAS_POR_ANO;
Dica: velocidade da luz = 300.000 Km/s.

E, esta é a solução que eu havia elaborado:

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
const int anoLuz = 300000*60*60*24*365;
cout << "Velocidade da luz " << (long long)anoLuz << "\n";
system("PAUSE");
return EXIT_SUCCESS;
}

Porém, não importa o que eu altere, o resultado sempre volta o mesmo: -1012953088.

E agora? Alguma solução? :(

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para 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

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

×
×
  • Criar novo...