Erros com código C

Olá pessoal,
Despois de muito, mas muito tempo mesmo sem pratica com a lingaguem C, resolvi voltar a treinar apenas para manter o conhecimento.
Desenvolvi um Calculo, porem, estou tendo problemas com erros, das quais, não consegui entender o motivo. Com base nisso pesso ajuda de vocês.

Cenário: Calcular a quantidade de entradas numéricas, média dos registros digitados, media do registros impar, maior valor, menor valor, soma e etc…

Código:

#include <stdio.h>

/* Gerenciador de Erros */
void Message(valor)
{
	m[5] = {
		"System: Opcao Invalida!",
		"System: Numero de entradas excedido!",
		"System: Saindo do sistema...",
		"System: Digite um valor:",
		"System: Gerando Relatorio de resultados"
		};
	printf( m[valor]+"\n" );
}

/* Repositorio de registros */
int Repository(valor)
{
	for(i = x; i<100; x++)
	{
		n[x] = (string)valor;
		break;
	}
	if ( x >= 100)
	{
		Message(1);
	}
	
	return 0;
}

/* Gerenciador de Cálculo */
int Calcula(valor)
{
	int resultado;
	int aux;


	if( valor == 1 ) /* Soma */
	{
		for(i = 0; i<100; i++)
		{
			if( n[i] == "X" )
			{
				i = 100;
			}
			else
				resultado += (int)n[i];
		}
	}
	else if( valor == 2 ) /* Quantidade de números */
	{
		for(i = 0; i<100; i++)
		{
			if( n[i] == "X" )
			{
				resultado = i+1;
				i = 100;
			}
		}
	}
	else if( valor == 3 ) /* Média dos números */
	{
		for(i = 0; i<100; i++)
		{
			if( n[i] == "X" )
			{
				resultado = (int)n[i-1];
				aux = i+1;
			}
			resultado = resultado/aux;
		}
	}
	else if( valor == 4 ) /* Maior valor */
	{
		aux = n[0];

		for(i = 0; i<100; i++)
		{
			if( n[i] != "X" )
			{
				if( aux < n[i] )
				{
					aux = (int)n[i];
				]
			}
			else
				i = 100;
		}
		resultado = aux;
	}
	else if( valor == 5 ) /* Menor valor */
	{
		aux = n[0];

		for(i = 0; i<100; i++)
		{
			if( n[i] != "X" )
			{
				if( aux > n[i] )
				{
					aux = (int)n[i];
				]
			}
			else
				i = 100;
		}
		resultado = aux;
	}
	else if( valor == 6 ) /* Média de pares */
	{

		for(i = 0; i<100; i++)
		{
			if( n[i] != "X" )
			{
				if( n[i]%2 == 0 )
				{
					resultado += n[i];
				}
				aux += 1
			}
			resultado = resultado/aux;
		}
		
	}
	else if( valor == 7 ) /* Percentual de impares */
	{

		for(i = 0; i<100; i++)
		{
			if( n[i] != "X" )
			{
				if( n[i]%2 == 1 )
				{
					aux += 1;
				}
				resultado += 1;
			}
			else
				resultado = (100*aux)/resultado;
		}
		
	}
		

	return resultado
}

	
int main()
{
	int i = 0; 
	static int x = 0;
	string n[100];
	string input = 'w';

	/* Inicializando vetor */
	for(i = 0; i<100; i++)
	{
		n[i] = 'X';
	}
	
	/* Gerenciador de resultados */
	do
	{
		printf( "A. Novo Numero\n" );
		printf( "B. Soma dos Numeros\n" );
		printf( "C. Quantidade de Numeros\n" );
		printf( "D. Media de Numeros\n" );
		printf( "E. Maior Numero\n" );
		printf( "F. Menor Numero\n" );
		printf( "G. Media de Numero Par\n" );
		printf( "H. Media de Numero Impar\n" );
		printf( "I. Exit\n" );

		printf( "\n" );
		scanf( "%s", &input );
		
		switch ( input ) {
			case 'A':
				Message(3);
				scanf("%d", Repository(&valor));
				break;
			case 'B':
				Tester();
				break;
			case 'D':
				Tester();
				break;
			case 'E':
				Tester();
				break;
			case 'F':
				Tester();
				break;
			case 'G':
				Tester();
				break;
			case 'H':
				Tester();
				break;
			case 'I':
				Message(2);
				break;
			default:
				Message(0);
				break;
		}
	} while (input == 'I');

	printf( "\n" );
	Message(4);
	
	printf( "Soma dos valores obtidos: %d\n", Calcula(1) );
	printf( "Quantidade de números obtidos: %d\n", Calcula(2) );
	printf( "Media dos numeros obtidos: %d\n", Calcula(3) );
	printf( "Maior numero obtido: %d\n", Calcula(4) );
	printf( "Menor numero obtido: %d\n", Calcula(5) );
	printf( "Media dos numeros pares obtidos: %d\n", Calcula(6));
	printf( "Percentual de numeros impares obtidos: %d\n", Calcula(7));

}

obs: O método Teste(), ainda não foi implementado.
Problemas com array e scanf…
Problemas de sintaxe “elseif” corrigidas.

Há inclusive erros grosseiros de sintaxe no seu código, que poderiam ser detectados facilmente por uma IDE. Por exemplo, não existe esleif, o certo seria

E com palavras separadas.

Concordo, porem, esqueci de informar que fiz no bloco de nota do linux.
E a sintaxe utilizada é por se basear em outra linguagem, da qual, trabalho.
Obs: Corrigido!

Baixa lá o QT, ou pelo menos algum plugin para o VIM que suporte Syntax Coloring. Não tem porque deixar o C mais difícil do que ele já é hoje em dia. :wink:

Estou tendo problemas nas linhas:

In function ‘Message’:
Line 6: error: ‘m’ undeclared (first use in this function)
Line 6: error: (Each undeclared identifier is reported only once
Line 6: error: for each function it appears in.)
Line 6: error: expected expression before ‘{’ token
In function ‘Repository’:
Line 19: error: ‘i’ undeclared (first use in this function)
Line 19: error: ‘x’ undeclared (first use in this function)
Line 21: error: ‘n’ undeclared (first use in this function)
Line 21: error: ‘string’ undeclared (first use in this function)
Line 21: error: expected ‘;’ before 'valor’
In function ‘Calcula’:
Line 41: error: ‘i’ undeclared (first use in this function)
Line 43: error: ‘n’ undeclared (first use in this function)
Line 85: error: expected statement before ‘]’ token
Line 92: error: expected expression before 'else’
In function ‘main’:
Line 155: error: ‘string’ undeclared (first use in this function)
Line 155: error: expected ‘;’ before 'n’
Line 156: error: expected ‘;’ before 'input’
Line 178: error: ‘input’ undeclared (first use in this function)
In function ‘Calcula’:
Line 223: error: expected declaration or statement at end of input

É bom você tentar entender a mensagem de erro. Por exemplo, ele diz que na linha 6, você não declarou a variável m. Perceba que você está usando o array, mas nunca o declarou. Isto é, não existe algo como:

int x = 10;
char y = 20;

Provavelmente, sua declaração deveria ser algo como:

char* m[] = { "System: Opcao Invalida!", "System: Numero de entradas excedido!", "System: Saindo do sistema...", "System: Digite um valor:", "System: Gerando Relatorio de resultados" };

Amigo, você inventou uma nova linguagem de programação, hehe.

Observe a sua primeira função:

/* Gerenciador de Erros */ void Message(valor) { m[5] = { "System: Opcao Invalida!", "System: Numero de entradas excedido!", "System: Saindo do sistema...", "System: Digite um valor:", "System: Gerando Relatorio de resultados" }; printf( m[valor]+"\n" ); }

Vamos por partes.

1- A variável recebida por parâmetro é de qual tipo? O compilador não vai adivinhar.

2- Eu acho que você quis declarar o m[5], mas, mais uma vez, não informou o tipo. Nota-se que a intenção era criar um vetor de strings, mas o C não possui strings, logo, é preciso usar um vetor de caracteres. Se você quer um “vetor de strings”, precisa criar uma matriz bidimensional do tipo char.

3- Ainda tem aquele printf maroto ali. Você tenta fazer a conexão entre duas strings através do sinal de adição, mas isso não existe no C. A função printf, como diz o nome, recebe 1 única string formatada, e esta string formatada possui os argumentos que você deseja exibir.
printf = print formatted http://en.wikipedia.org/wiki/Printf_format_string

Enfim, aí vai o código arrumado:

/* Gerenciador de Erros */ void Message(int valor) { char m[5][32] = { "Opcao Invalida!", "Numero de entradas excedido!", "Saindo do sistema...", "Digite um valor:", "Gerando Relatorio de resultados" }; printf("System: %s\n", m[valor]); }

Se ficou muito tempo fora do C e esqueceu de tudo, não custa ler um tutorial pra iniciantes. Vai refrescar a memória.
Fica a dica: http://www.cprogressivo.net/p/curso-de-c-online-para-iniciantes.html

Abraço!