Ir para conteúdo

POWERED BY:

Arquivado

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

Bruno Conte

Problema com vetores em C

Recommended Posts

galera, estou fazendo um programinha para faculdade e esta dando erro.

 

o enunciado dele e:

Desenvolva um programa com funções para:

Ler um Vetor com 5 numeros inteiros:

Receber um codigo inteiro e o vetor lido por parametro e:

terminar o programa se o codigo for zero:

Mostrar o vetor na ordem como ele foi lido, se o codigo for 1:

Mostre o vetor na ordem inversa, do ultimo até o primeiro, se o codigo for 2.

 

eu começei a fazer so que nao esta dando certo.

 

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>

#define TAM 5 

void Registro(int v[]) {
     printf("Informe o numero: ");
     for(int i=0; i< TAM; i++)
     {
             scanf("%f",&v[i]);
     }  
     }

int main()
 {
    float numero[TAM];
    Registro(numero);
    int codigo;
    
    
     printf("Digite o codigo");
     scanf("%i", &codigo);
    
    
            if(codigo == 0) {
              printf("Digite qualquer tecla");
              getche();
              }
            
            else if(codigo == 1 ) {
                  for(i=0; x < TAM; i++)
                  {
                     printf("%i\n", vet[i]);
                  }
                  
             }
             else if(codigo == 2) {
                  for(x=RES-1; x >= 0; x--)
                  {
                     printf("%i\n", vet[x]);
                    
                  }
             }
  
  getche();        
}

 

esta dando que nao declarei um monte de variavel, alquem pode me dar um help, e so abrir o dev c++ que vai ver os erros

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se não estão declaradas, declare-as. Provavelmente a IDE diz quais delas não foram declaradas.

Uma simples leitura do código também ajuda a descobrir o que não foi declarado, tipo a variável i.

Compartilhar este post


Link para o post
Compartilhar em outros sites

fiz algumas alterações continuou dando esses erros:

 

D:\Faculdade\C\2VA\09112010\3.cpp In function `int main()':

34 D:\Faculdade\C\2VA\09112010\3.cpp invalid types `int[int]' for array subscript

41 D:\Faculdade\C\2VA\09112010\3.cpp invalid types `int[int]' for array subscript

 

codigo alterado ficou assim:

 

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>

#define TAM 5 

void Registro(int v[]) {
     printf("Informe o numero: ");
     for(int i=0; i< TAM; i++)
     {
             scanf("%f",&v[i]);
     }  
     }

int main()
 {
    int numero[TAM], v;
    Registro(numero);
    int codigo, i, vet;
    
    
     printf("Digite o codigo");
     scanf("%i", &codigo);
    
    
            if(codigo == 0) {
              printf("Digite qualquer tecla");
              getche();
              }
            
            else if(codigo == 1 ) {
                  for(i=0; i < TAM; i++)
                  {
                     printf("%i\n", v[i]);
                  }
                  
             }
             else if(codigo == 2) {
                  for(i=TAM-1; i >= 0; i--)
                  {
                     printf("%i\n", v[i]);
                    
                  }
             }
  
  getche();        
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

agora nao esta lendo os numeros na ordem do codigo, esta gerando outros numeros e nao le os que forao digitos, pq sera em???

 

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>

#define TAM 5 

void Registro(int v[]) {
     printf("Informe o numero: ");
     for(int i=0; i< TAM; i++)
     {
             scanf("%f",&v[i]);
     }  
     }

int main()
 {
    int numero[TAM];
    Registro(numero);
    int codigo, i, v[TAM];
    
     printf("Digite o codigo");
     scanf("%i", &codigo);
    
            if(codigo == 0) {
              printf("Digite qualquer tecla");
              getche();
              }
            
            else if(codigo == 1 ) {
                  for(i=0; i < TAM; i++)
                  {
                     printf("%i\n", v[i]);
                  }
                  
             }
             else if(codigo == 2) {
                  for(i=TAM-1; i >= 0; i--)
                  {
                     printf("%i\n", v[i]);
                    
                  }
             }
  
  getche();        
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aprenda a usar o compilador e o depurador:

 

isis@linux:~/src> gcc-4.5 p1.c -Wall -Wextra -std=c99 -g

p1.c: In function ‘Registro’:

p1.c:8:5: warning: format ‘%f’ expects type ‘float *’, but argument 2 has type ‘int *’

 

O que acontece é que você está usando dois arrays diferentes. Qual deles você quer ler e qual deles você quer imprimir, numero ou v?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aprenda a usar o compilador e o depurador:

 

isis@linux:~/src> gcc-4.5 p1.c -Wall -Wextra -std=c99 -g

p1.c: In function ‘Registro’:

p1.c:8:5: warning: format ‘%f’ expects type ‘float *’, but argument 2 has type ‘int *’

 

O que acontece é que você está usando dois arrays diferentes. Qual deles você quer ler e qual deles você quer imprimir, numero ou v?

 

eu leio inicialmente 5 numeros e depois um codigo.

por esse codigo tenho que mostrar os numeros na ordem.

 

se o usuario por exemplo digitar 0, o programa fecha.

se o usuario digitar 1, ele mostra os numeros na ordem que foi lida ou digitada pelo usuario.

se o usuario digitar 2, ele mostra os numeros na ordem inversa da que foi lida ou digitada pelo usuario.

 

o que preciso gravar na função Registro os numeros, e depois ler com o codigo digitado. Mais nao to sacando como fazer isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você quer imprimir o vetor com os números lidos, use o vetor onde você armazenou os números, e não o outro declarado com lixo em memória.

O que eu não entendi é pra quê serve o código = 0.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você quer imprimir o vetor com os números lidos, use o vetor onde você armazenou os números, e não o outro declarado com lixo em memória.

O que eu não entendi é pra quê serve o código = 0.

 

Assim.

 

o usuario digitar 0, o programa ira fechar

 

se ele digitar 1, ele tera que mostrar o que foi digitado na ordem em que foi lido. por exemplo

se o usuario digitar 1,2,3,4,5 e o codigo 1 - ele ira mostrar o resultado dos numeros na ordem: 1,2,3,4,5

 

ja se digitar 2, ele ira mostrar os numeros digitados na ordem inversa, por exemplo:

se o usuario digitar 1,2,3,4,5 e o codigo 2 - ele ira mostrar o resultado dos numeros na ordem: 5,4,3,2,1

 

entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não precisa de uma ação pro programa fechar. A natureza sequencial da execução já faz isso se o código digitado for diferente dos códigos pra executar uma ação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso não deveria estar num loop? Porque normalmente quando pedem uma opção dessas é p/ sair de uma repetição.

 

Preste atenção no que você está fazendo. Você está lendo num array e imprimindo outro que não tem nada a ver com a leitura dos dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso não deveria estar num loop? Porque normalmente quando pedem uma opção dessas é p/ sair de uma repetição.

 

Preste atenção no que você está fazendo. Você está lendo num array e imprimindo outro que não tem nada a ver com a leitura dos dados.

 

para mim este mesmo exercicio tem outras maneiras mais simples de se fazer, o problema que e necessario o uso de funções. coisas de faculdade

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.