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; } fortunecat 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! fortunecat 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