Dados a, b e n, calcule uma função C++ para listar os n primeiros múltiplos de a não superiores a b.

1. Dados a, b e n, calcule uma função C++ para listar os n primeiros múltiplos de a não superiores a b.

Lendel dos Santos Rodrigues
lendel

(usa Linux Mint)

Enviado em 24/02/2019 - 11:18h

cabeçalho fornecido
void lister(double a, double b, int n) 


o programa que eu fiz: alguém poderia me ajudar com esse programa? porque o meu so da erro. se alguém poder corrigir me avise

#include <iostream>
#include <cmath>
#include <iomanip>

void listar(double a, double b, int n)

using namespace std;
int main (int argc, char *argv[]){

cout << "Programa para exibir os n primeiros multiplos de a não superiores a b\n";

double a, b;
cout << "a = "; cin >> a;
cout << "b = "; cin >> b;
double n = a;
listar(n);

return 0;

}

void listar(double a, double b, int n){

while (n <= b)
{
cout << n << endl;
n = n + a;
}
return n;
}


erro apresentado

[humbra@x550l livro]$ g++ Exercicio12004.cpp -o exp12004
Exercicio12004.cpp:7:1: error: expected initializer before ‘using’
using namespace std;
^~~~~
Exercicio12004.cpp: In function ‘int main(int, char**)’:
Exercicio12004.cpp:10:3: error: ‘cout’ was not declared in this scope
cout << "Programa para exibir os n primeiros multiplos de a não superiores a b\n";
^~~~
Exercicio12004.cpp:10:3: note: suggested alternative:
In file included from Exercicio12004.cpp:1:
/usr/include/c++/8/iostream:61:18: note: ‘std::cout’
extern ostream cout; /// Linked to standard output
^~~~
Exercicio12004.cpp:13:19: error: ‘cin’ was not declared in this scope
cout << "a = "; cin >> a;
^~~
Exercicio12004.cpp:13:19: note: suggested alternative:
In file included from Exercicio12004.cpp:1:
/usr/include/c++/8/iostream:60:18: note: ‘std::cin’
extern istream cin; /// Linked to standard input
^~~
Exercicio12004.cpp:16:3: error: ‘listar’ was not declared in this scope
listar(n);
^~~~~~
Exercicio12004.cpp: In function ‘void listar(double, double, int)’:
Exercicio12004.cpp:26:4: error: ‘cout’ was not declared in this scope
cout << n << endl;
^~~~
Exercicio12004.cpp:26:4: note: suggested alternative:
In file included from Exercicio12004.cpp:1:
/usr/include/c++/8/iostream:61:18: note: ‘std::cout’
extern ostream cout; /// Linked to standard output
^~~~
Exercicio12004.cpp:26:17: error: ‘endl’ was not declared in this scope
cout << n << endl;
^~~~
Exercicio12004.cpp:26:17: note: suggested alternative:
In file included from /usr/include/c++/8/iostream:39,
from Exercicio12004.cpp:1:
/usr/include/c++/8/ostream:590:5: note: ‘std::endl’
endl(basic_ostream<_CharT, _Traits>& __os)
^~~~
Exercicio12004.cpp:29:10: error: return-statement with a value, in function returning ‘void’ [-fpermissive]
return n;
^



  


2. MELHOR RESPOSTA

Paulo
paulo1205

(usa Ubuntu)

Enviado em 25/02/2019 - 08:55h

lendel escreveu:

O codigo ficou assim
std::wcout << variavelqualquer << std::endl 
. O problema todo era que eu não conseguia usar o
cout 
como uma variavel global. Porém achei na internet o
wcout 
que pode ser usando da seguinte forma
std::wcout << variavelqualquer << std::endl 
não esquecendo esse
std:: 
Cara deixei de fazer diversos codigos em C++ usando variaveis globais por não saber fazer isso. Mais serve de ajuda para quem precisar


Sem querer ser chato, mas com intuito de esclarecer pontos levantados e de tentar colocar informações corretas, o que você disse acima não faz muito sentido.

Tanto std::cout quanto std::wcout permitem escrever na saída padrão, normalmente associada à tela do terminal. Ambas também são declaradas em <iostream> e possuem visibilidade idêntica, o que significa que onde um deles estiver visível, o outro também estará. A diferença entre eles é que um deles (std::cout) usa dados do tipo char como unidade básica de operação, e o outro (std::wcout) tem como unidade básica dados do tipo wchar_t.

Não é prudente misturar, no mesmo programa, operações com std::cout e operações com std::wcout. Infelizmente você acabou fazendo isso no seu programa final.

Quando você diz que não conseguiu usar “cout”, eu suspeito que foi porque não lembrou que todos os símbolos (variáveis globais, funções e nomes de tipos de dados) da biblioteca do C++ são colocados dentro do namespace std. Assim, ou você usa a forma std::cout (como fez quando usou std::wcout), ou você importa todo o namespace para não ter de explicitar o prefixo, através da diretiva “using namespace std;” colocada antes do ponto em que você quiser usar o símbolo não qualificado quanto a namespace.


Uma nota final é que o programa que você mostrou não corresponde ao enunciado que você colocou no título. O enunciado pede para listar os múltiplos de a menores ou iguais a b, limitando a quantidade de elementos listados a n elementos, e no começo da sua postagem você mostra até qual a forma que a declaração da função que faz isso deveria ter (recebendo valores reais de a e de b, bem como o valor inteiro de n, sem devolver nenhum valor de retorno). Seu programa faz outra coisa, a saber, ele lista uma quantidade não-limitada de múltiplos de (a+1) menores ou iguais a b, e conclui com a operação não-prevista no enunciado de imprimindo um número a mais, o qual pode nem mesmo coincidir com a quantidade de múltiplos anteriormente impressos. Tão gritante é a diferença que, para que fizesse o que fez, você teve de alterar um parâmetro e o tipo de retorno da função original.

Eu fico tentado a escrever uma função que faz o que foi pedido, mas acredito que você poderá corrigir seu programa sozinho, uma vez que eu apontei claramente a diferença entre o que você fez e o que foi pedido.

Desejo-lhe sucesso.


... “Principium sapientiae timor Domini, et scientia sanctorum prudentia.” (Proverbia 9:10)

3. Re: Dados a, b e n, calcule uma função C++ para listar os n primeiros múltiplos de a não superiores a b.

Paulo Jr
Pebis

(usa Debian)

Enviado em 24/02/2019 - 11:51h


[quote]lendel escreveu:

cabeçalho fornecido
void lister(double a, double b, int n) 


o programa que eu fiz: alguém poderia me ajudar com esse programa? porque o meu so da erro. se alguém poder corrigir me avise

#include <iostream>
#include <cmath>
#include <iomanip>

void listar(double a, double b, int n)

using namespace std;
int main (int argc, char *argv[]){

cout << "Programa para exibir os n primeiros multiplos de a não superiores a b\n";

double a, b;
cout << "a = "; cin >> a;
cout << "b = "; cin >> b;
double n = a;
listar(n);

return 0;

}

void listar(double a, double b, int n){

while (n <= b)
{
cout << n << endl;
n = n + a;
}
return n;
}


Não manjo dos paranauês mas dá pra ver alguns erros.

1º - Criou uma função void que retorna valor
2º - Criou a função fora do using namespace std, eu ACHO que deve ser dentro
3º - Falta ; (ponto e vírgula) aqui > void listar(double a, double b, int n)
4º - Sua lógica parece não estar certa


4. consegui resolver pesquisando na internet

Lendel dos Santos Rodrigues
lendel

(usa Linux Mint)

Enviado em 24/02/2019 - 17:26h

O codigo ficou assim
std::wcout << variavelqualquer << std::endl 
. O problema todo era que eu não conseguia usar o
cout 
como uma variavel global. Porém achei na internet o
wcout 
que pode ser usando da seguinte forma
std::wcout << variavelqualquer << std::endl 
não esquecendo esse
std:: 
Cara deixei de fazer diversos codigos em C++ usando variaveis globais por não saber fazer isso. Mais serve de ajuda para quem precisar

#include <iostream>
#include <cmath>
#include <iomanip>


int quantMul(double a, double b, double x){

int q=0; // Quantidade de múltiplos.
double mx = x; // Primeiro múltiplo.
while (mx <= b)
{
if(a <= mx) q++;
std::wcout << mx << std::endl;
mx += x; // Próximo múltiplo.
}
return q;
}

using namespace std;
int main (){

cout << "Programa para calcular e retornar a quantidade de\n";
cout << "multiplos de x no intervalo de a até b\n";

int n=0;
double a, b;
cout << "a = "; cin >> a;
cout << "b = "; cin >> b;
n = a + 1;
quantMul(a,b,n);
cout << "\n";
cout << quantMul << endl;

return 0;

}


Vai servir de ajuda para os próximos






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts