Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Dúdida sobre problema no código.

Pessoal, estou tentando fazer um exercício que fiz pra eu ler um array, e depois substituir todos os valores dele que forem negativos ou forem NULL por 1.. e imprimir o array depois disso. O problema é o programa nem estar compilando. Esses são os erros que aparecem:

prog.c:5:1: error: expected identifier or ‘(’ before ‘for’ for (i=1; i<10; i++){ ^~ prog.c:5:12: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘attribute’ before ‘<’ token for (i=1; i<10; i++){ ^ prog.c:5:18: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘attribute’ before ‘++’ token for (i=1; i<10; i++){ ^ prog.c:11:26: error: expected expression before ‘int’ void corrige_array(int z[int x]){ ^~ prog.c: In function ‘main’: prog.c:19:3: warning: statement with no effect [-Wunused-value] printf{"%d\n", corrige_array(X[10])}; ^ prog.c:19:9: error: expected ‘;’ before ‘{’ token printf{"%d\n", corrige_array(X[10])}; ^

#include <stdio.h>

int X[10];
int i;
for (i=1; i<10; i++){
  if(i%2==0)
    X[i]=3;
   else 
    X[i]=-2;  
}
void corrige_array(int z[int x]){
  int a;
  for(a=0; a<x; a++){
    if(z[x] < 0 || z[x] == N)
      z[x] = 1;   
  }
}
int main(void) {
  printf{"%d\n", corrige_array(X[10])};
  return 0;
}

Alguém pode me ajudar?

4 respostas
solução!

Oi Mauro, blz?

Então vc tem um for ali no inicio do seu código logo abaixo de onde vc declara as variáveis. Esse for não pode estar ali, para que o código funcione vc precisa colocar a inicialização dos valores do array dentro da função main ou de outra função que será chamada pela main.

Além disso esse for está iniciando a variável i com o valor de 1, é isso mesmo que vc quer, não deveria começar do 0?

Por último o comando printf{"%d\n", corrige_array(X[10])}; deve ter parenteses e não chaves para a passagem de parâmetros.

Obrigado Ricardo. consegui corrigir essa parte do código. Agora minha dúdiva é como eu referencio uma variável em NULL em C? meu códio está com esse problema agora: main.c:9:26: error: 'null' undeclared (first use in this function) if(X[i] < 0 || X[i] == null){

Mauro, em C não temos o conceito de NULL definido pela linguagem. Normalmente o que as pessoas fazem é colocar um #define NULL =0. Mas antes de fazer isso, pensa um pouco, pq vc precisa verificar se o elemento do array é nulo?

Não tem outra maneira de fazer?

Uma boa prática em C é inicializar os elementos do seu array com um valor padrão, assim vc garante que não vai acabar pegando lixo da memoria sem querer.

Obrigado mais uma vez Ricardo!!!