Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

drk1

Vetores

Recommended Posts

Boa "Madrugada"

 

Tenho em mãos 2 exercícios de vetor que não sei resolver pois faltei 2 aulas de explicações e digamos que ouvindo de "colegas que não prestam atenção" não ajudou muito então venho até aqui "novamente" pedir ajuda de vocês pra salvar minha pele;

 

Obs: Quero usar estes exercícios para estudar(como base):

 

7. Faça um programa em C que leia um vetor com 20 elementos e o mostre. Em seguida, troque o primeiro elemento com o último, o segundo com o penúltimo, etc, até o décimo com o décimo primeiro e mostre o vetor assim modificado.

 

5. Faça um programa em C que leia uma série de N notas, e calcule quantas são 10% acima da média e quantas são 10% abaixo.

 

Fico no aguardo(tenho prova amanha(hoje) e to me virando pra tentar entender haha

 

grato a todos!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

haha na enrolação enrolação eu não saiu do printf e do scanf falta toda a logica

 

Considerando que voce saiba mostrar um vetor na tela e ler ele a partir de scanf faça o seguinte:

Uma função que troca os valores do vetor de modo que o primeiro troque com o ultimo

Portanto um loop em que i começa em 0 e vai até a metade do total de numeros que existem no vetor, no caso 20/2, e um j que comece no ultimo numero e termino em 0, no caso ele é 19. Depois a logica para trocar é assim

aux=vet[i]
vet[i]=vet[j]
vet[j]=aux;

Para a segunda questao

faça um loop que percorra todo o vetor e um if que tenha a condicao, (nota>=MEDIA*1.1), se sim acima da media +1, se não se a (nota<=MEDIA*0.9), se sim abaixo da media +1, senão na media +1.

 

Se não conseguir de jeito nenhum eu te passo os codigos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Considerando que voce saiba mostrar um vetor na tela e ler ele a partir de scanf faça o seguinte:

Uma função que troca os valores do vetor de modo que o primeiro troque com o ultimo

Portanto um loop em que i começa em 0 e vai até a metade do total de numeros que existem no vetor, no caso 20/2, e um j que comece no ultimo numero e termino em 0, no caso ele é 19. Depois a logica para trocar é assim

aux=vet[i]
vet[i]=vet[j]
vet[j]=aux;

Para a segunda questao

faça um loop que percorra todo o vetor e um if que tenha a condicao, (nota>=MEDIA*1.1), se sim acima da media +1, se não se a (nota<=MEDIA*0.9), se sim abaixo da media +1, senão na media +1.

 

Se não conseguir de jeito nenhum eu te passo os codigos

 

grato consegui o primeiro

#include <stdio.h>

main(){
      int vetor[20],i,auxiliar,count=20;

      for(i=0;i<20;i++){
                        printf("Digite o %d numero: ",i+1);
                        scanf("%d",&vetor[i]);
                        }
      for(i=0;i<20;i++){
                       printf(" %d",vetor[i]);
                       }
      printf(" \n ");
      for(i=0;i<10;i++){
      count--; 
      auxiliar = vetor[count];
      vetor[count] = vetor[i]; 
      vetor[i] = auxiliar; 
      }
      for(i=0;i<20;i++){
                        printf(" %d",vetor[i]);
                        }
      system("pause");
      }

 

Obs: se tiver um código mais "escasso" sem gambiarra que eu fiz e puder mandar pra eu analisar agradeço :D

 

agora vou tentar o segundo! valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por que você diz gambiarra? Não confia no próprio código? Para o que você teve dúvida o código está resolvido de uma maneira correta. A única coisa que você deve notar é que, seguindo os novos padrões da C (de 1999, lol), você deve declarar a função main como retornando um valor int, e colocar uma instrução return no final. Também é boa prática colocar um void na lista de parâmetros de main() para sinalizar que não há nenhum parâmetro.

 

Então você modificaria de:

 

main() {

 

para:

 

int main(void) {

 

 

E no final do programa, antes do }, você colocaria um:

 

return 0;

 

Que é um código que sinaliza ao sistema operacional que o programa terminou certinho. Retornar outros números diferentes desse (como 1, 2, -3, 42, etc) significam que algo deu errado e que o programa precisou terminar antes do esperado. Você pode fazer isso para terminar um programa que deu um erro no meio, e não dá para continuar, colocando um "return 1;" no lugar...

 

Outra coisa: para utilizar system("pause") você teria que incluir o header <stdlib.h>. Mas é má prática utilizar o system("pause") para pausar o programa, veja abaixo por que:

 

http://forum.imasters.com.br/topic/336835-tutorial-systempause-e-fflushstdin/

 

 

 

Abraços :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Guidjos,

 

Sério, tudo bem que o draft do TC3 tenha sido publicado falando que o return 0 seja implícito na main. Mas ele ainda não é um standard. O que vale hoje é na maioria dos casos o C99 e em alguns ainda o C89. Não faz sentido ficar falando de drafts que ainda não compõe uma standard e que não são implementados pela esmagadora maioria dos compiladores. Devemos utilizar o código de acordo com a última standard, não de acordo com o planejamento da próxima. Quando sair a C1x, faz todo o sentido falar disso, mas creio que agora não.

 

Então continuo dizendo, o return 0 tem que ser explícito na main(), por questões práticas.

 

 

 

Abraoçs :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado a todos, e obrigado pelos puxões de orelha seguirei as dicas, é que meu professor ensinou assim e como peguei C do zero não tenho muita noção ainda.

 

abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Guidjos,

 

Sério, tudo bem que o draft do TC3 tenha sido publicado falando que o return 0 seja implícito na main. Mas ele ainda não é um standard. O que vale hoje é na maioria dos casos o C99 e em alguns ainda o C89. Não faz sentido ficar falando de drafts que ainda não compõe uma standard e que não são implementados pela esmagadora maioria dos compiladores. Devemos utilizar o código de acordo com a última standard, não de acordo com o planejamento da próxima. Quando sair a C1x, faz todo o sentido falar disso, mas creio que agora não.

 

Então continuo dizendo, o return 0 tem que ser explícito na main(), por questões práticas.

 

 

 

Abraoçs :D

 

Oi, Renato.

 

O documento pós-TC3 é o padrão C99. O draft é o que fica disponível de graça (n1256.pdf). A versão atual, impressa, pode ser comprada da IEC. É de acordo com ela que o return 0 é implícito.

 

 

http://www.open-std.org/jtc1/sc22/wg14/www/standards.html#9899

 

Technical Corrigendum 3 (ISO/IEC 9899:1999 Cor. 3:2007(E)) was published in 2007. It can be obtained free of charge from ISO.

 

The lastest publically available version of the standard is the combined C99 + TC1 + TC2 + TC3, WG14 N1256, dated 2007-09-07. This is a WG14 working paper, but it reflects the consolidated standard at the time of issue.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.