Jump to content

Alocação dinamica


shenzi

Recommended Posts

Bom dia a todos,

Eu estou a desenvolver um projecto para comparar vários números.

Para isso o utilizador insere primeiro o numero de strings que vai inserir e depois insere por linha os números.

A parte de inserir o numero de linhas foi fácil xD

int linhas;
printf("\nDigite o numero de linhas: ");
scanf("%d",&linhas);

Neste exercício o limite máximo de caracteres é 50, portante definir logo

colunas=50;

O meu problema é a definir a matriz dinamicamente.

Eu já tenho este código feito:

int **matriz;
matriz=(int**) malloc( linhas * sizeof( int** ) );//aloca as linhas
for(i=0;i<linhas;i++)
{
	matriz[ i ]=(int*) malloc( colunas * sizeof( int* ) );//aloca as colunas
	for (j=0; j<colunas; j++)
	{
		matriz[i][j] = (int) malloc(sizeof(int));
	}
}

for(i=0;i<linhas;i++)
{	
	printf("\nDigite a string: ");
	scanf("%d",matriz[i]);
}

Depois de definir e meter valores na matriz, o programa deve juntar todas as strings numa para isso fiz este código:

int aux[150];
for(i=0;i<linhas;i++)
{	
	strcat(matriz[i],aux);
}
printf("\nString: %d ",aux);

Eu gostava de saber onde está o meu erro pois o programa não me dá valores

Link to post
Share on other sites
int **matriz;
[b]matriz=(int**) malloc( linhas * sizeof( int* ) );[/b]//aloca as linhas (o argumento do sizeof estava mal)
        for(i=0;i<linhas;i++)
        {
[b]                matriz[ i ]=(int*) malloc( colunas * sizeof( int ) )[/b];//aloca as colunas (o argumento do sizeof estava mal)
              [b]  for (j=0; j<colunas; j++)
                {
                        matriz[i][j] = (int) malloc(sizeof(int));[/b] //este ciclo está a mais, o malloc no cilo acima já aloca espaço para um array de "colunas" posições, se te queres certificar que estão a zero, usa o calloc
                }
        }

        for(i=0;i<linhas;i++)
        {        
                printf("\nDigite a string: ");
                scanf("%d",matriz[i]);
        }

Link to post
Share on other sites

Muito obrigado pela ajuda, pronto agora já consigo ver os valores da matriz, o problema é que com isto:

	for(i=0;i<linhas;i++)
{	
	printf("\nDigite a string: ");
	scanf("%d",matriz[i]);
}

só meto os valores na coluna 0 e na linha i não um valor por coluna como desejaria, mas eu para fazer um ciclo para as colunas também como detecto para ele colocar os valores até encontrar o \n? e assim mudar de linha?

Link to post
Share on other sites

Arrays de inteiros não têm \n nem \0, simplesmente escreves até chegares ao índice "colunas". O que podes fazer é, em vez de leres ints, lês chars, e assim, quando for para mudar de linha, lês um char especial, enquanto não for lido, lês normalmente e usas a função atoi para converter chars em ints.

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