Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
Neonglow

Preciso de Ajuda com uma string no meu programa.......Urgente

Recommended Posts

Neonglow

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

#define NOME_FICH "c:\\Jogadores.rm"

char Arrnumeros[99];


void Moldura(int x, int y, int larg, int alt, int estilo, char *tit)
{
int i;
char cse, csd, cie, cid, l, a;

switch(estilo)
{
	case 2:
		   cse = 'É';
		   csd = '»';
		   cie = 'È';
		   cid = '¼';
		   l = 'Í';
		   a = 'º';
		   break;
	case 3:
		   cse = '*';
		   csd = '*';
		   cie = '*';
		   cid = '*';
		   l = '*';
		   a = '*';
		   break;
	case 4:
		   cse = 's';
		   csd = 's';
		   cie = 's';
		   cid = 's';
		   l = 's';
		   a = 's';
		   break;
	default:
			cse = 'Ú';
			csd = '¿';
			cie = 'À';
			cid = 'Ù';
			l = 'Ä';
			a = '³';
}

gotoxy(x,y); printf("%c",cse);
gotoxy(x+larg+1,y); printf("%c",csd);
gotoxy(x,y+alt+1); printf("%c",cie);
gotoxy(x+larg+1,y+alt+1); printf("%c",cid);

for(i=1;i<=larg;i++)
{
	gotoxy(x+i,y);printf("%c",l);
	gotoxy(x+i,y+alt+1); printf("%c",l);
}
for(i=1;i<=alt;i++)
{
	gotoxy(x,y+i);printf("%c",a);
	gotoxy(x+larg+1,y+i); printf("%c",a);
}
//escreve t¡tulo
gotoxy(x+larg/2-strlen(tit)/2,y);printf("%s",tit);
}


int menu()
{
int x, y,larg, alt, opc;

for(;
{
	clrscr();
	x = 20; y = 7; larg = 38; alt = 9;
	Moldura(x, y, larg, alt, 2, " Menu ");
	gotoxy(x+2,y+2); printf("1- Insere/Altera Jogador");
	gotoxy(x+2,y+3); printf("2- Ver Lista");
	gotoxy(x+2,y+4); printf("3- Procurar por numero");
	gotoxy(x+2,y+5); printf("4- About");
	gotoxy(x+2,y+6); printf("5- Gravar");
	gotoxy(x+2,y+7); printf("6- Sair");
	gotoxy(x+2,y+9); printf("OpcÆo: ");

	scanf("%d",&opc);
	if (opc >= 1 && opc <= 6) return opc;
}
}

void InsereJogador(void)
{
int num;
char nome[15];

clrscr();
printf("N§ do Jogador: ");
scanf("%d",&num);
printf("Nome do jogador %d: ",num);
scanf("%s",&nome);
Arrnumeros[num-1] = nome;
}


void VerLista(void)
{
int i;

clrscr();
for(i=0;i<99;i++)
{
	if (Arrnumeros[i] == -1)
	printf("Jogador n§%d:\n",i+1);
	else printf("Jogador n§%d: %d\n",i+1,Arrnumeros[i]);
}

printf("Qualquer tecla para continuar...");
getch();
}


void Procurarpornumero(void)
{
int num;
clrscr();
printf("Numero: ");
scanf("%d",&num);
clrscr();
printf("O jogador n§%d ‚ o: %s",num, Arrnumeros[num-1]);
printf("Caso nao tenha aparecido nenhum nome, o numero est  livre para ser attribuido a outro jogador");
}

void About(void)
{
clrscr();
printf("Programado por: F bio Silva");
getch();
}


int LerDadosDoFicheiro()
{
int i;
FILE *fp;

fp = fopen(NOME_FICH,"r");	//abre o ficheiro para leitura "r"
if (fp == NULL)
{
	printf("Erro na abertura do ficheiro %s!\n\n",NOME_FICH);
	printf("Qualquer tecla para continuar...");
	getch();
}
for(i=0;i<99;i++)
	fscanf(fp,"%d",&Arrnumeros[i]);
fclose(fp);

}


int GravarDadosParaFicheiro()
{
int i;
FILE *fp;

fp = fopen(NOME_FICH,"w");	//abre o ficheiro para escrita "w"
for(i=0;i<99;i++)
	fprintf(fp,"%d\n",Arrnumeros[i]);
fclose(fp);

}


void Init(void)
{
int i;
for(i=0;i<99;i++)
Arrnumeros[i] = -1;
}


void main(void)
{
int op, Alteracao=0, opc;

Init();

LerDadosDoFicheiro();

for(;
{
	clrscr();
	op = menu();
	switch(op)
	{
		case 1:	//Insere/Altera nota
				InsereJogador();
				Alteracao = 1;
				break;
		case 2:	//Ver nota
				VerLista();
				break;
		case 3:	//M‚dia
				Procurarpornumero();
				break;
		case 4:	//N§ de positivas e negativas
				About();
				break;
		case 5:	//gravar
				GravarDadosParaFicheiro();
				Alteracao = 0;
				break;
		case 6:	//sair
				if (Alteracao == 1)
				{
					printf("Deseja gravar antes de sair? (s/n) ");
					opc = getch();
					if ((opc == 's') || (opc == 'S'))
						GravarDadosParaFicheiro();
				}
				return;
	}
}
}

O programa permite inserir um nome (jogador) associado ao seu numero (numero da camisola)

Depois cria a lista com 99 numeros e caso tenha sido atribuido os respectivos numeros

tambem permite pesquisar directamente pelo numero

o erro é na função inserejogador que está a dar erro penso que por causa da string.

O erro é cannot convert "char*" to "char"

plz help me é urgente....

já agora qual o comando a utilizar para: por exemplo com uma lista de 99 numeros aparecer so 20 numero de cada vez....

Share this post


Link to post
Share on other sites
Saco

void InsereJogador(void)
{
int num;
char nome[15];

clrscr();
printf("N§ do Jogador: ");
scanf("%d",&num);
printf("Nome do jogador %d: ",num);
scanf("%s",&nome);
Arrnumeros[num-1] = nome;
}

ora... Arrnumeros[num-1] é um char e nome é um char*, por isso é que te dá aquele erro.

Olhando assim de repente para esse código tens uma salganhada do caneco... Arrnumeros é para guardar os nomes dos jogadores, certo? Então tem que ser declarado assim:

char* Arrnumeros[99];

ou seja, um array de char* (strings...) e nao um array de char (caracteres...)

Quanto a imprimir a lista... não sei como é que queres exactamente imprimi-la, mas assim como está não vais ver os nomes dos jogadores... apenas os seus números e depois algo que provavelmente te vai parecer um bocado estranho já que Arrnumeros é um array de char e tu estás a tirar de lá ints...

Supondo que em Arrnumeros o que tu tens é os nomes dos jogadores...

 
void VerLista(void)
{
int i,j;

clrscr();
for(i=0;i<99;i++)
            for(j=0;j<20;j++)
    {
/* provavelmente tambem vais querer mudar este -1 */
	if (Arrnumeros[i] != -1)
	    printf("Jogador n§%d: %s\n",i+1,Arrnumeros[i]);
     }

     printf("Qualquer tecla para continuar...");
     getch();
        }

printf("Qualquer tecla para continuar...");
getch();

}

ha-de ser qualquer coisa assim...

void Init(void)
{
int i;
for(i=0;i<99;i++)
Arrnumeros[i] = "-";
}

Em vez de "-" podes meter outra string qualquer e não te esqueças que agora tens de alterar o if na função VerLista...

Share this post


Link to post
Share on other sites
deathseeker25

Bem-vindo ao forum SacoPlástico. Para primeiro post foi um grande contributo... :cheesygrin:

Share this post


Link to post
Share on other sites
Saco

Foi um prazer, estava a pensar apresentar-me aí ao pessoal mas tive esperança que reparassem, e pelos vistos repararam  ;)

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.