fortunecat Posted March 25, 2021 at 10:42 AM Report Share #621799 Posted March 25, 2021 at 10:42 AM Deverá dar erro se N for inferior a 2 e voltar a pedir o seu valor. Depois somar os valores dados de N #include <stdio.h> int main(){ int n; while(n < 2) { printf("Quantos numeros pretende somar?: "); scanf("%i", &n); if(n < 2) { printf("\nERRO\n"); } } for(int op = 0; op <= n; op++){ printf("Insira o numero: \t"); } return 0; } Link to comment Share on other sites More sharing options...
Solution AshKetshup Posted March 25, 2021 at 03:03 PM Solution Report Share #621805 Posted March 25, 2021 at 03:03 PM (edited) Boas @fortunecat, Ponto 1: Indentação Eu acredito que possas ser novo na área de programação, mas é bom começar logo de inicio com a perna direita. Uma boa indentação é meio caminho andado para futuramente descobrires possíveis bugs ou até erros simples de sintaxe. Portanto, em C eu aconselho seriamente a dares um tab sempre que abrires chavetas { } ao que é chamado de Scope. Por exemplo: #include <stdio.h> int main() { int x = 1; while (x < 5) { if (x == 2) { x = 3; } else { printf("%d", x); } } return 0; } Tendo isto em mente, seguimos para o ponto seguinte: Ponto 2: Código Segundo o que disponibilizaste e agora indentado tens: #include <stdio.h> int main() { int n; // inicialização de inteiro n sem valor while(n < 2) { // Enquanto n for menor que 2 vais executar o seguinte bloco de codigo: printf("Quantos numeros pretende somar?: "); // imprimes "Quantos numeros pretende somar?: " scanf("%i", &n); // pedes um inteiro e associas à variavel n if(n < 2) { // Caso n for menor que 2 vais: printf("\nERRO\n"); // imprimir "\nERRO\n" } // Fim do IF } // Repetes o WHILE for(int op = 0; op <= n; op++){ // Para um int op que começa em 0; repete até op ser menor ou igual a n; incrementa op printf("Insira o numero: \t"); // imprime "Insira o numero: \t" } // Repete o FOR return 0; } O bloco de instruções que tens dentro do while não vai ser executada porque n não tem nenhum valor inicialmente. Para isto aponto para 2 soluções: Inicializar n com 0. int n = 0; while (n < 2) {...} ... ou Usar o loop do { } while (); funciona exatamente igual ao while que tens com a diferença que executa primeiro o bloco de instruções e só depois verifica a condição. int n; do { // Faz: printf("Quantos numeros pretende somar?: "); // imprimes "Quantos numeros pretende somar?: "; scanf("%i", &n); // pedes um inteiro e associas à variavel n; if (n < 2) { // Caso n for menor que 2 vais: printf("\nERRO\n"); // imprimir "\nERRO\n"; } // Fim do IF } while (n < 2); // Enquanto n for menor que 2; Tendo a entrada de valores tratada podemos tratar agora da soma de valores. Só precisas de uma variavel para armazenares a soma e pedires o input para uma variavel auxiliar dentro do ciclo FOR de 0 até ao valor de n: int soma = 0; // Inicializa um inteiro soma com o valor 0; int aux; // Inicializa um inteiro aux sem valor; for (int op = 0; op < n; op++) { // Para um int op que começa em 0; repete até op ser menor ou igual a n; incrementa op printf("Insira o numero: \t"); // imprime "Insira o numero: \t"; scanf("%i", &aux); // pede um inteiro e associa à variavel aux; soma += aux; // o mesmo que soma = soma + aux; } // Repete o FOR printf("Resultado: %d", soma); // imprime o resultado; Acredito que com isto já sejas capaz de entender ao certo o problema e como o resolver. Espero ter ajudado! Edited March 25, 2021 at 03:05 PM by AshKetshup 2 Report Mas façam o que fizerem nunca façam: sudo apt remove python Link to comment Share on other sites More sharing options...
fortunecat Posted March 25, 2021 at 05:32 PM Author Report Share #621809 Posted March 25, 2021 at 05:32 PM 2 horas atrás, AshKetshup disse: Boas @fortunecat, Ponto 1: Indentação Eu acredito que possas ser novo na área de programação, mas é bom começar logo de inicio com a perna direita. Uma boa indentação é meio caminho andado para futuramente descobrires possíveis bugs ou até erros simples de sintaxe. Portanto, em C eu aconselho seriamente a dares um tab sempre que abrires chavetas { } ao que é chamado de Scope. Por exemplo: #include <stdio.h> int main() { int x = 1; while (x < 5) { if (x == 2) { x = 3; } else { printf("%d", x); } } return 0; } Tendo isto em mente, seguimos para o ponto seguinte: Ponto 2: Código Segundo o que disponibilizaste e agora indentado tens: #include <stdio.h> int main() { int n; // inicialização de inteiro n sem valor while(n < 2) { // Enquanto n for menor que 2 vais executar o seguinte bloco de codigo: printf("Quantos numeros pretende somar?: "); // imprimes "Quantos numeros pretende somar?: " scanf("%i", &n); // pedes um inteiro e associas à variavel n if(n < 2) { // Caso n for menor que 2 vais: printf("\nERRO\n"); // imprimir "\nERRO\n" } // Fim do IF } // Repetes o WHILE for(int op = 0; op <= n; op++){ // Para um int op que começa em 0; repete até op ser menor ou igual a n; incrementa op printf("Insira o numero: \t"); // imprime "Insira o numero: \t" } // Repete o FOR return 0; } O bloco de instruções que tens dentro do while não vai ser executada porque n não tem nenhum valor inicialmente. Para isto aponto para 2 soluções: Inicializar n com 0. int n = 0; while (n < 2) {...} ... ou Usar o loop do { } while (); funciona exatamente igual ao while que tens com a diferença que executa primeiro o bloco de instruções e só depois verifica a condição. int n; do { // Faz: printf("Quantos numeros pretende somar?: "); // imprimes "Quantos numeros pretende somar?: "; scanf("%i", &n); // pedes um inteiro e associas à variavel n; if (n < 2) { // Caso n for menor que 2 vais: printf("\nERRO\n"); // imprimir "\nERRO\n"; } // Fim do IF } while (n < 2); // Enquanto n for menor que 2; Tendo a entrada de valores tratada podemos tratar agora da soma de valores. Só precisas de uma variavel para armazenares a soma e pedires o input para uma variavel auxiliar dentro do ciclo FOR de 0 até ao valor de n: int soma = 0; // Inicializa um inteiro soma com o valor 0; int aux; // Inicializa um inteiro aux sem valor; for (int op = 0; op < n; op++) { // Para um int op que começa em 0; repete até op ser menor ou igual a n; incrementa op printf("Insira o numero: \t"); // imprime "Insira o numero: \t"; scanf("%i", &aux); // pede um inteiro e associa à variavel aux; soma += aux; // o mesmo que soma = soma + aux; } // Repete o FOR printf("Resultado: %d", soma); // imprime o resultado; Acredito que com isto já sejas capaz de entender ao certo o problema e como o resolver. Espero ter ajudado! Só gostaria de agradecer imenso, por haver pessoas assim que em vez julgarem o próximo, ajudam-no a tornar-se mais e melhor. E sim, estou a entrar agora no ramo da Programação! 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