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

Neonglow

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

7 mensagens neste tópico

#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....

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

Bme vindo! ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

reparamos e tem...ou quase tudo..  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora