Fixe Posted November 10, 2011 at 01:14 PM Author Report Share #419886 Posted November 10, 2011 at 01:14 PM Peço desculpa é que tenho mesmo muita dificuldade a programação: Mas voltando ao exercicio veija lá se estou a ir no bom caminho e ajudeme e modo a fazer o exercicio todo. Obrigado pela ajuda e peço desculpa o incomodo. #include <stdio.h> main() { int x, y, n, i; printf("Introduza Um N Valido""\n"); scanf("%d", &n); for (n = 0; j < n; n = n + 1) { for (i = 0; i < n; n++) { printf("\n"); } } } O código que tenho até agora Link to comment Share on other sites More sharing options...
Flinger Posted November 10, 2011 at 02:20 PM Report Share #419896 Posted November 10, 2011 at 02:20 PM A ver se te dou uma ajuda, sem te dar o código todo. Só assim se aprende a programar . Vamos por partes, como tu próprio disseste. #include <stdio.h> main() { int x, y, n, i; printf("Introduza Um N Valido""\n"); scanf("%d", &n); //estás a ler o n. Tudo bem for (n = 0; j < n; n = n + 1) // n=0; Aqui estás a escrever 0 por cima do valor que acabaste de ler... Perdes o valor. { // j<n: j não está declarado nem o usas em mais lado nenhum... for (i = 0; i < n; n++) { printf("\n"); } } } Lês o n, e depois tens de executar algo n vezes ( neste caso ler um inteiro do teclado ). Experimenta começar por aqui. Ler um n do teclado e escrever "ola" n vezes. Link to comment Share on other sites More sharing options...
Fixe Posted November 10, 2011 at 03:26 PM Author Report Share #419911 Posted November 10, 2011 at 03:26 PM ahh ok ok é isso por partes é assim mesmo, então veija lá se faço então assim: #include <stdio.h> main() { int x, y, n, i; printf("Introduza Um N Valido""\n"); scanf("%d", &n); for (x = n; x < n; x = x + 1) { scanf("d", &x); } printf("\n"); } assim já estou a ler o meu x que vai depois no ciclo for tomar os valores do n, correcto, veija lá estou a pensar bem, se sim então partimos para a próxima fase. Link to comment Share on other sites More sharing options...
Flinger Posted November 10, 2011 at 03:40 PM Report Share #419916 Posted November 10, 2011 at 03:40 PM #include <stdio.h> main() { int x, y, n, i; printf("Introduza Um N Valido""\n"); scanf("%d", &n); for (x = n; x < n; x = x + 1) { scanf("d", &x); } printf("\n"); } Pega numa folha e começa a correr o teu programa à mão. n x y i ? ? ? ? Primeira intrução: scanf("%d", &n); imaginemos que pões o valor 3 n x y i 3 ? ? ? for (x = n; x < n; x = x + 1) Aqui vamos por partes: x = n: n x y i 3 3 ? ? x < n ? não, logo sai do ciclo. O ciclo for funciona da seguinte maneira for(instrução inicial;condição;instrução executada todos os ciclos) ou seja, for(i=0;i<5;i=i+1) { faz_qualquer_coisa; } é o mesmo que teres i=0; enquanto (i<5) { faz_qualquer_coisa; i=i+1; } Link to comment Share on other sites More sharing options...
Fixe Posted November 10, 2011 at 03:46 PM Author Report Share #419917 Posted November 10, 2011 at 03:46 PM ahhh certo certo, ou seja ao código fica então assim: #include <stdio.h> main() { int n, i; printf("Introduza Um N Valido""\n"); scanf("%d", &n); for (i = 0; i < 5; i = i + 1) { printf("%d", &i); } printf("\n"); } ele assim imprime então os valores que eu introduzo por exemplo 2 e ele apresentame muitos números mas eu não quero isso, mas portanto ele recebe o n. Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted November 10, 2011 at 03:51 PM Report Share #419920 Posted November 10, 2011 at 03:51 PM acho que existe uma melhor maneira de explicar o for : for (inicalização; condição; incremento) { } for (x=0; x<5; x=x+1) { ... xpto ... } = x=0; if (x<5) { ... xpto ... x=x+1; «volta ao if» } nota que tanto os blocos inicalização, condição e incremento do for são código executável isto é, podem alterar os valores de variaveis e/ou chamar funções, etc ... podes mesmo ter mais do que uma instrução em cada bloco : for (x=0, y=0; ... ; ...) na inicialização do for tanto o x como o y são atribuidos o valor 0 IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Flinger Posted November 10, 2011 at 03:55 PM Report Share #419922 Posted November 10, 2011 at 03:55 PM #include <stdio.h> main() { int n, i; printf("Introduza Um N Valido""\n"); scanf("%d", &n); for (i = 0; i < 5; i = i + 1) { printf("%d", &i); } printf("\n"); } Ainda não é bem isso. Troca o printf("%d", &i); por printf("%d", i); O & significa "endereço de". Para já, tudo o que precisas saber é que o scanf precisa do & e o printf não. Quando falares de apontadores vais perceber porquê. Corre o teu programa e quando fôr para ler o n põe 3. Vê o resultado e tenta chegar a uma conclusão. Link to comment Share on other sites More sharing options...
Fixe Posted November 10, 2011 at 04:06 PM Author Report Share #419928 Posted November 10, 2011 at 04:06 PM Já percebi portanto o ciclo for, apresentado apresenta os numeros todos começando no 0 até a 4, ou seja 5 numeros já percebi, agora no contexto do nosso exercicio, uma parte já está, agora vamos para asegunda parte que será ver se os numeros inseridos da sequencia quais são pares, e agora que me lembrei ele apresenta sempre 01234 memso que eu insira 24242. Link to comment Share on other sites More sharing options...
Flinger Posted November 10, 2011 at 04:07 PM Report Share #419931 Posted November 10, 2011 at 04:07 PM ainda dentro do for(). Quantas vezes estás a executar o for, e quantas vezes o querias realmente executar? Link to comment Share on other sites More sharing options...
Fixe Posted November 10, 2011 at 04:23 PM Author Report Share #419943 Posted November 10, 2011 at 04:23 PM o ciclo for executa quantas vezes o n for inserido, até haver a introdução de 0, porque aqui ele não pode fazer a soma. Ou seja neste caso acho eu fica assim #include <stdio.h> main() { int n, i; printf("Introduza Um N Valido""\n"); scanf("%d", &n); for (i = 0; i < n; i = i + 1) { printf("%d", i); } printf("\n"); } ou se calhar ate nem é assim, mas portanto o cérne da questão é que o exercicio é este: Dadas n sequências de pelo menos n números inteiros positivos não-nulos calcular a soma dos números pares de cada sequência.Uma dada sequência está terminada se n valores foram introduzidos, ou caso ocorra a introdução de um zero.Notar que n é fornecido pelo utilizador não pode ser superior 5. Link to comment Share on other sites More sharing options...
Baderous Posted November 10, 2011 at 04:25 PM Report Share #419946 Posted November 10, 2011 at 04:25 PM Fixe lê isto. Link to comment Share on other sites More sharing options...
Fixe Posted November 10, 2011 at 04:28 PM Author Report Share #419948 Posted November 10, 2011 at 04:28 PM Peço desculpa mas não sabia e já não volta a acontecer mais. Obrigado. Link to comment Share on other sites More sharing options...
Flinger Posted November 10, 2011 at 04:32 PM Report Share #419953 Posted November 10, 2011 at 04:32 PM main() { int n, i; printf("Introduza Um N Valido""\n"); scanf("%d", &n); for (i = 0; i < n; i = i + 1) { printf("%d", i); } printf("\n"); } Já lá vamos. Agora, tu não queres imprimir o número n vezes. Queres ler uma sequência de n números (eu sei que são n sequências, mas vamos por partes). Acrescenta um scanf("%d",&x) antes do printf, e muda o printf("%d",i) para printf("%d",x). Não te esqueças de declarar o x. Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted November 10, 2011 at 04:37 PM Report Share #419957 Posted November 10, 2011 at 04:37 PM pseudo-codigo: saber o valor de n // já está feito para cada n sequência // já está feito inicializar a soma se ainda não lemos n números da sequência a processar pedir um número se o número é par adicionar à soma se já lemos n números apresentar a soma ... força, o pior já está feito IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Fixe Posted November 10, 2011 at 04:42 PM Author Report Share #419959 Posted November 10, 2011 at 04:42 PM Correcto portanto fica assim: #include <stdio.h> main() { int x,n, i; printf("Introduza Um N Valido""\n"); scanf("%d", &n); for (i = 0; i < 5; i = i + 1) { scanf("%d",&x); printf("%d", x); } printf("\n"); } Link to comment Share on other sites More sharing options...
Flinger Posted November 10, 2011 at 04:44 PM Report Share #419962 Posted November 10, 2011 at 04:44 PM A cada iteração do ciclo, vais ter na variavel x o número que leste do teclado. Agora tens de processar o número. Saber se ele é par e se fôr, adiciona-lo à soma. Um número é par se o resto da divisão inteira por 2 (em c é o operador %) fôr 0. Link to comment Share on other sites More sharing options...
Fixe Posted November 10, 2011 at 04:56 PM Author Report Share #419966 Posted November 10, 2011 at 04:56 PM Vela amigo fica assim: main() { int x,n, i; int soma=0; printf("Introduza Um N Valido""\n"); scanf("%d", &n); for (i = 0; i < 5; i = i + 1) { scanf("%d",&x); printf("%d", x); } printf("\n"); if (x%2==0){ soma=+x; printf("A soma da sequencia e", "%d",soma); } } só que a soma eu acho que estou a fazer mal porque ele não está a fazer a soma Link to comment Share on other sites More sharing options...
Flinger Posted November 10, 2011 at 05:00 PM Report Share #419971 Posted November 10, 2011 at 05:00 PM Porque está a fazer a soma fora do ciclo for. Se queres fazer isso para todos os x que lês, tens de pôr o if dentro do ciclo. Link to comment Share on other sites More sharing options...
Fixe Posted November 10, 2011 at 05:03 PM Author Report Share #419973 Posted November 10, 2011 at 05:03 PM tipo assim: #include <stdio.h> main() { int x,n, i; int soma=0; printf("Introduza Um N Valido""\n"); scanf("%d", &n); for (i = 0; i < 5; i = i + 1) { scanf("%d",&x); printf("%d", x); if (x%2==0) soma=+x; printf("A soma da sequencia e", "%d",soma); } printf("\n"); } Link to comment Share on other sites More sharing options...
Flinger Posted November 10, 2011 at 05:04 PM Report Share #419974 Posted November 10, 2011 at 05:04 PM já agora: soma=+x; devia ser soma+=x; e o printf() recebe apenas uma string logo devida ser: printf("A soma da sequencia e %d",soma); Não te esqueças que também só deves imprimir a soma depois de leres toda a sequência (depois de saires do ciclo). 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