amelia Posted December 5, 2020 at 02:54 PM Report Share #620569 Posted December 5, 2020 at 02:54 PM Como faço pra esse código ler vários números até o usuário digitar -1 e no fim mostrar a soma dos divisores de cada um? #include <iostream> using namespace std; int main() { int valor,i, soma; soma = 0, i = 1; cin>>valor; while(i < valor and valor !=-1) { if (valor%i==0) { soma += i; } i++; } cout<<soma<<endl; return 0; } Link to comment Share on other sites More sharing options...
AshKetshup Posted December 5, 2020 at 05:23 PM Report Share #620570 Posted December 5, 2020 at 05:23 PM (edited) Boas, @amelia! Primeiramente uma sugestão. O ciclo WHILE que tu tens para somar cada um dos divisores encontrados é facilmente transformado num Ciclo FOR: for (size_t i = 1; i < valor; i++) if (valor % i == 0) soma += i; Segundo, a solução a que cheguei seria algo do genero: #include <iostream> #include <vector> using namespace std; int main() { int valor, soma; // declaração de um vetor de ints std::vector<int> arr; do { // Ler valor do teclado cin >> valor; if (valor != -1) { // reset a soma soma = 0; // Somar Divisores do valor for (size_t i = 1; i < valor; i++) if (valor % i == 0) soma += i; // Adicionar int soma ao vetor arr arr.push_back(soma); } } while (valor != -1); // print de cada elemento no vetor arr com " " entre os elementos for (size_t i = 0; i < arr.size(); i++) cout << arr[i] << " "; return 0; } Acredito que existem formas mais eficientes de o fazer. Espero ter ajudado! Edited December 5, 2020 at 05:27 PM by AshKetshup 1 Report Mas façam o que fizerem nunca façam: sudo apt remove python Link to comment Share on other sites More sharing options...
amelia Posted December 5, 2020 at 10:29 PM Author Report Share #620573 Posted December 5, 2020 at 10:29 PM 5 horas atrás, AshKetshup disse: Boas, @amelia! Primeiramente uma sugestão. O ciclo WHILE que tu tens para somar cada um dos divisores encontrados é facilmente transformado num Ciclo FOR: for (size_t i = 1; i < valor; i++) if (valor % i == 0) soma += i; Segundo, a solução a que cheguei seria algo do genero: #include <iostream> #include <vector> using namespace std; int main() { int valor, soma; // declaração de um vetor de ints std::vector<int> arr; do { // Ler valor do teclado cin >> valor; if (valor != -1) { // reset a soma soma = 0; // Somar Divisores do valor for (size_t i = 1; i < valor; i++) if (valor % i == 0) soma += i; // Adicionar int soma ao vetor arr arr.push_back(soma); } } while (valor != -1); // print de cada elemento no vetor arr com " " entre os elementos for (size_t i = 0; i < arr.size(); i++) cout << arr[i] << " "; return 0; } Acredito que existem formas mais eficientes de o fazer. Espero ter ajudado! Muito obrigada! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now