Jump to content

Vectores Bidimensionais


jpedro7

Recommended Posts

Quando estou a inserir as linhas no array bidimensional o printf vem correcto mas quando acabo e vou listar o conteúdo da tabela não está correcto.

Exemplo:

Inserir nome do texto

Flores

Inserir Linhas

primeira 

Inserir Linhas

segunda

Inserir Linhas

terceira

Inserir Linhas

end

Linhas...pstend

Linhas...stend

Linhas...tend

Linhas...nd

Linhas...d

Linhas...

Linhas...ira

Linhas...ra

Linhas...a

Como podem vêr a listagem "Linhas..." está errado.

Como posso resolver ?

Estou a utilizar o Microsoft Visual Studio 2005( full instalation) para compilar e linkeditar.

Obrigado pela ajuda.

O código fonte:

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

#define MAX_LN 25    /*   Máximo 26 Linhas    última linha é = END */
#define MAX_TEXTOS 9 /*   Máximo 10 Textos     */

int resultado;
int ind_titulo;
int tot_ln=0;
int tot_textos=0;
char texto_t[MAX_TEXTOS]="";
char texto_l[MAX_TEXTOS][MAX_LN];

int menu (void);
void inserir_textos (void);
void seleccionar_textos (void);

int main()
{
int opcao, nrTextos=0, nrLinhas=0; 

/* inicializacao do duplo array a NULL */
for (nrTextos=0;nrTextos<9;nrTextos++)
{
	for(nrLinhas=0;nrLinhas<25;nrLinhas++)
	{
		texto_l[nrTextos][nrLinhas]='\0';
	}
}

for(;
{
	do
	{

		opcao = menu();
		switch(opcao)
		{
			case 1:
				inserir_textos();
				break;
			case 2:
				seleccionar_textos(); 
				break;
			case 3:
				return 0;
		}

	}while (resultado!='1' && resultado!='2' && resultado!='3');
}
}
int menu (void)
{
int opc;
printf("\n\n1 new...end \n");
printf("2 select\n");
printf("3 exit\n");
scanf ("%d", &opc);
return opc; 
}
void inserir_textos()
{
int i, z;
char texto[80];

printf("Inserir o Nome do Texto \n");
//fgets(&texto_t[tot_textos],80,stdin);
scanf("%s", &texto_t[tot_ln]);
printf("Titulo..Tabela..%s \n", &texto_t[0]);
for (i=0;i<26;i++)
{
	printf("Inserir linhas de Texto \n");
	scanf("%s", &texto_l[tot_ln][i]);
	//fgets(&texto_l[tot_ln][i],80,stdin);
	if (strcmp(&texto_l[tot_ln][i], "end") == 0)
	{
		for(z=0;z<=25;z++)
		{
			if (strcmp(&texto_l[tot_ln][z], "end") != 0)
			{
				printf("Linhas...%s \n", &texto_l[tot_ln][z]);
			}
		}

		break;
	}
	printf("Linha...%s \n", &texto_l[tot_ln][i]);
}

tot_ln++;
tot_textos++;
}
void seleccionar_textos()
{

int i;
char texto[80];

printf("Digitar o Nome do Texto \n");
scanf("%s", &texto);
//fgets(texto,80,stdin);
for(i=0;i<=9;i++)
{
	if (strcmp(&texto_t[i], texto) == 0)
	{
		printf("Texto...%s \n", &texto_t[i]);
		ind_titulo = i;
		break;
	}
}

for(i=0;i<=25;i++)
{
	if (strcmp(&texto_l[ind_titulo][i], "end") != 0)
	{
		printf("Linhas...%s \n", &texto_l[ind_titulo][i]);
	}
}
}
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...

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.