Jump to content

Soma de n números.


fortunecat
Go to solution Solved by AshKetshup,

Recommended Posts

fortunecat

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 post
Share on other sites
  • Solution
AshKetshup
Posted (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:

  1. Inicializar n com 0.
    int n = 0;
    
    while (n < 2) {...}
    ...

    ou
     
  2. 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 by AshKetshup
  • Vote 2

Mas façam o que fizerem nunca façam:

sudo apt remove python

 

Link to post
Share on other sites
fortunecat
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:

  1. Inicializar n com 0.
    
    
    
    int n = 0;
    
    while (n < 2) {...}
    ...

    ou
     
  2. 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 post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.