Print de matrizes bidimensionais

1. Print de matrizes bidimensionais

matheus silva
PlayMa256

(usa Linux Mint)

Enviado em 14/06/2013 - 12:52h

bom pessoal, boa tarde.
Estou com um problema, tenho um vetor, o qual há \t, necessito quebrar esse vetor em substrings utilizando como delimitador o \t, e inseri-los em uma matriz.

Bom, aparentemente consegui fazer, porem na hora de se printar, aparece absolutamente nada.


Eis o codigo:


char matris[30][26][302];
//Obs: k = numero de linhas

Aqui é onde faço a quebra usando strtok.

char *ponteiro;
ponteiro = strtok(vetor, "\t");
int i,j;
for(i=0;i<k;i++){
for(j=0;j<colunas;j++){
while (ponteiro != NULL){
strcpy(matris[i][j], ponteiro);
ponteiro = strtok(NULL,"\t");
}
}
}



//Depois para dar print, faço o seguinte.
int w,z;
for(w=0;w<k;w++){
for(z=0;z<colunas;z++){
printf("%s", matris[w][z]);

}
}


Codigo total

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <assert.h>
int conta(char c, char *s){
int num_vezes=0;
while(*s!='{TTEXTO}'){
if(*s== '\t'){
num_vezes++;
}
s++;
}
return num_vezes;
}


int ordenar(int vetorDeNumeros[]){
int tamanhoVetor = (sizeof vetorDeNumeros)/(sizeof vetorDeNumeros[0]);
int i;
int j;
int temp;
for(i=0;i<tamanhoVetor;i++){
for(j=0;j<tamanhoVetor;j++){
if(vetorDeNumeros[i] < vetorDeNumeros[j]){
temp = vetorDeNumeros[i];
vetorDeNumeros[i] = vetorDeNumeros[j];
vetorDeNumeros[j] = temp;
}
}
}

return vetorDeNumeros[0];
}
int main(){
//int tamanho = 0;
char vetor[302];
int m;
int k=0;
int colunas = 0;
int vetorDeNumeros[2];

//localiza pelo numero maximo de coisas que ele vai ler
char matris[30][26][302];
//inicia-se o loop
while(1){
//Recebe os dados
fgets(vetor, 302, stdin);

//Verifica se tem a quebra de linha
if(strcmp(vetor, "\n") == 0){
break;
}

//Aqui eu insiro na funcao o vetor
char *s = vetor;
//Recebo a quantia de \t
m = conta('\t', s);
//Passo pra posicao do vetor, o numero de colunas
vetorDeNumeros[k] = m+1;

//Recebo o resultado do bubble sort
colunas = ordenar(vetorDeNumeros);

//faz a colocacao de cada elemento dentro de cada celula, tentei por funcao mas nao deu muito certo
char *ponteiro;

int i,j;
for(i=0;i<k;i++){
for(j=0;j<colunas;j++){
ponteiro = strtok(vetor, "\t");
while (ponteiro != NULL){
strcpy(matris[i][j], ponteiro);
ponteiro = strtok(NULL,"\t");
}
}
}

//Quantia de linas que foram
k++;
}
//printf("%d", colunas);
int w,z;
for(w=0;w<k;w++){
for(z=0;z<colunas;z++){
printf("%s", matris[w][z]);

}
}





return 0;
}





SImplesmente nao aparece nada pra mim, o que pode ser? tentei o debug mandando ele dar um strcpy pra matris[0][0] e depois dando print em matris[0][0] funciona absolutamente bem, mas quando insiro os 2 fors, ele da pau...

Obrigado.



  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts