Dúvida: Leitura de uma quantidade indeterminada de valores e cálculos com diferentes caracteres de s

1. Dúvida: Leitura de uma quantidade indeterminada de valores e cálculos com diferentes caracteres de s

O tal do tal
Keghtlezt

(usa Outra)

Enviado em 24/02/2020 - 15:03h

Tenha uma dúvida, preciso fazer um pequeno programa que leia n quantidade de valores e uma mesma linha com apenas um ENTER. Dado esses valores eu conseguirei fazer condicionais para chegar em meu resultado final. Teria eu como fazer essa leitura sem saber a quantidade de valores iniciais? Logo após teria como fazer cálculos desses diferentes valores e até mesmo usá-los em condições if-else?(No momento estou tentando com string mas não consigo identificar cada caractere da mesma) Desde já fico grato por qualquer ajuda.
OBS: Os valores são diferenciados com espaçamento entre elas.

Exemplo de Entradas
17 3 5 2 1
22 4 3
12 5 6 1 3 2 1
...



  


2. Re: Dúvida: Leitura de uma quantidade indeterminada de valores e cálculos com diferentes caracteres de s

Mistery
Cmistry

(usa Ubuntu)

Enviado em 26/02/2020 - 22:59h

Boa pergunta!
Talvez esse seja um bom começo...

#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> values;
cout << "Digite os números (Ctrl+D para terminar): \n";
copy(istream_iterator<int>(cin), istream_iterator<int>(), back_inserter(values));
cout<<endl<<"Amostra:"<<endl;
for (int i = 0; i < values.size(); ++i) {
cout << values[i] << ' ';
}
}



3. Re: Dúvida: Leitura de uma quantidade indeterminada de valores e cálculos com diferentes caracteres

Paulo
paulo1205

(usa Ubuntu)

Enviado em 27/02/2020 - 21:13h

Keghtlezt escreveu:

Tenha uma dúvida, preciso fazer um pequeno programa que leia n quantidade de valores e uma mesma linha com apenas um ENTER. Dado esses valores eu conseguirei fazer condicionais para chegar em meu resultado final. Teria eu como fazer essa leitura sem saber a quantidade de valores iniciais? Logo após teria como fazer cálculos desses diferentes valores e até mesmo usá-los em condições if-else?(No momento estou tentando com string mas não consigo identificar cada caractere da mesma) Desde já fico grato por qualquer ajuda.
OBS: Os valores são diferenciados com espaçamento entre elas.

Exemplo de Entradas
17 3 5 2 1
22 4 3
12 5 6 1 3 2 1
...


Seria interessante você indicar, numa pergunta como essa, se você se refere a C ou a C++, pois as soluções são diferentes em cada uma dessas linguagens.

Também — e, por favor, não me leve a mal —, a forma como você redigiu a pergunta ficou um tanto confusa. Por exemplo, eu não consegui ter certeza absoluta de se a linha limita a quantidade de valores ou se, de alguma forma (como é típico em sites de problemas de informática como, por exemplo, o SPOJ), você lê um primeiro número n e depois lê n números diferentes, que não necessariamente obedecem limites de linhas. Por mais que a primeira opção me pareça ser o que você quer, isso não fica inequivocamente claro, e também porque não é a forma mais usual (e, inclusive, não é o que faz a solução já mostrada, acima, pelo colega Cmistry).

Se, de fato, você quer limitar por linha, a sugestão é que você leia a linha como uma string, e depois extraia as partes dessa string. Em C, você pode usar fgets() (ou, num sistema POSIX, getline()) seguida por um laço de repetição que faça várias chamadas a sscanf(), até se esgotarem os valores. Em C++, você pode ler a linha com std::getline(), mover a string lida para um objeto do tipo std::istringstream, e aplicar esse objeto na solução mostrada pelo Cmistry, em lugar de std::cin.


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






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts