Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

MatheusSilva

Problema print matrizes tridimensionais

Recommended Posts

Bom, estou com um problema, estou criando algo parecido com o excel, pois bem, estou quebrando o vetor nos locais que possuem o \t.

 


        char matris[30][26][302]
        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, " ,.-");
                }
            }
        }

Para dar print eu fiz isso:

int w,z,y;
for(w=0;w<k;w++){
    for(z=0;z<colunas;z++){
        printf("%s", matris[w][z]);
    }
}

 

Sendo que, colunas esta recebendo dinamicamente, e o K(que sao as linhas) tbm esta recebendo dinamicamente, entao ele esta correndo todos os campos.
Era pra estar dando certo, mas independente do input que fizer (dados ou int) ele printa em branco.
se eu inserir por exemplo

1 \t 1 \t 1


a quantidade de linhas é 1, e de colunas sao 3(quantidade de \t+1)
o que seria o problema?
Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom , olhando assim eu vejo que você so esta inicializando 2 matrizes então e bidimensional.

 

Uma matriz tridimensional seria algo assim.

 

 

int mat [2][2][2];
int k,i,j,cont;
cont=1;
for (i=0;i<2;i++){
for (j=0;j<2;j++)
    for(k=0;k<2;k++)
{
    mat[i][j][k]=cont;
printf("%d \t \t",cont);
}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, nao ta dando muito certo nao, ele nao esta aparecendo nd ainda....

como vi que vc ta atribuindo 1 ao matris na posição, tentei dessa maneira e ele printou o 1, mas com o meu codigo aparentemente nao foi.

 

tentei de outra maneira.

 

#include <stdio.h>
#include <string.h>
#include <ctype.h>
int conta(char c, char *s){
    int num_vezes=0;
    while(*s!='\0'){
        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;
        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, " ,.-");
                }
            }
        }

        //Quantia de linas que foram
        k++;
    }
//printf("%d", colunas);
int w,z,y, tamanhoDentroMatriz = 0;
char cont[301];
for(w=0;w<k;w++){
    for(z=0;z<colunas;z++){
        for(y=0;y<strlen(matris[w][z]);y++){
            matris[w][z][y]= cont[y];
            printf("%s\n", cont);
        }
    }
}





return 0;
}

 

tem alguma outra maneira mais eficiente e mais pratica de se separar substrings? no caso dali estou usando o strtok mas estou me enrolando com ele tbm.

Continua nao aparecendo nd '-'.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.