Jump to content

Recommended Posts

Posted (edited)

bom, estou a percorrer uma matriz, a qual possui dados tanto int quanto strings.

Bom, percorro de uma maneira, se eu achar por exemplo um =A1, quer dizer que preciso colocar no lugar desse A1 o que esta na posiçao A1 da minha matris(linha0, coluna0).

fiz desta maneira:

	if(strcmp(matris[i][c], "=A1") == 0){
		strcpy(matris[i][c], matris[0][0]);
	}
	if(strcmp(matris[i][c], "=C1") == 0){

		strcpy(matris[i][c], matris[2][0]);
	}

preciso fazer isso com tooooooodas as letras do alfabeto, e com todoas as colunas, A2, B2.....

Bom, cheguei a uma barreira, quando eu tenho na celula que ele aponta, um dado do tipo int, ele nao funciona essa copia que estou tentando fazer.

De que maneira poderia sobrepor esse =A1 pelo dado int que tem na posiçao que ele esta?

Obrigado.

Edited by PlayMa256
  • Replies 43
  • Created
  • Last Reply

Top Posters In This Topic

Posted

só uma duvida, ele mantem o conteudo inteiro depois la na matris de char? por exemplo 21 ele mantem 21 na hora de printar?

Nem precisei utilizar, acabou que era problema na seleção das colunas mesmo...

Suponhamos que em uma celula eu tenha =A1+A2+A3, eu fiz a maneira pra substituir cada elemento pelo correspondente usando esses ifs, mas agora neste caso, se eu pedir pra substituir ele vai achar o A1, e vai simplesmente substituir tudo dessa celula pelo que tem na A1, como poderia fazer pra ele substituir o valor correspondente, e ainda fazer as operações com ele?

Obrigado.

Posted

Percorro caractere por caractere, vejo se é A, vejo se i+1 é 1 guardo o valor, vejo se o próximo é +-*, ai faço com uma vvariável tmp certo?

Tem uma maneira mais fácil de fazer do que ficar comparando se é A B C, 1 2 3.?

Obrigado

Posted

a funcao sscanf retorna o que? E porque == 2? Só isso que nao entendi

Outra coisa, tentei colocar a celula da minha matris, (matris[l][c]) como primeiro argumento pra extração dos dados, mas ele pediu um pointer, ta certo isso?

Posted (edited)

no meu caso a string que será lida esta dentro da celula, no caso [linha][coluna].

Passei matris[k][c], "%c%d", col, linha

onde col e linha sao ponteiros (nao sei pq, mas pedia ponteiro).

Agora, de qualquer maneira eu nao preciso tratar, pra saber se col é A, B, C ou D? e linha se é 1, 2, 3? E depois fazer a substituição da coluna linha referente, e armazena-lo em uma variavel temporaria para fazer as operações necessarias?

Edited by PlayMa256
Posted
char coluna;
int linha;

if (sscanf(&conteudo[pos], "%c%d", &coluna, &linha) == 2) {
 // tens a certeza que leu um caracter para a variável "coluna" e num número para a variável "linha" 
 // só tens de verificar se a combinação coluna/linha existe na tua matrix
}
IRC : sim, é algo que ainda existe >> #p@p
Posted

uhm, esqueçi do & mesmo.

Para verificar a combinação de linha e coluna, como estao em numeros, de qualquer maneira eu nao precisaria fazer uma verificação do tipo:

    if((col == 'A') && (linha == 1)){
	   temp = matris[0][0]
	 }
.
.
.

Nao? ou estou a pensar de uma maneira mais confusa e trabalhosa?

Posted (edited)

o tipo de dados char não deixa de ser um número (de -128 a 127), assim como 'A' não deixa de ser um número.

para saber os vares reais dos caracteres podes ver qualquer ascii table

char c;
int i;

i = c - 'A'; // se c == 'A' => i = 'A' - 'A' => i = 65 - 65 = 0
i = c - 'A'; // se c == 'B' => i = 'B' - 'A' => i = 66 - 65 = 1
i = c - 'A'; // se c == 'C' => i = 'C' - 'A' => i = 67 - 65 = 2

...
Edited by HappyHippyHippo
IRC : sim, é algo que ainda existe >> #p@p
Posted (edited)

Uhm, essa parte entedi.

Tentei fazer um dump, pra ver se estava pegando direitinho, eu insiro A1 la mando processar, nao aparece Nem linhas nem colunas.

//inicializa as variaveis de controle
int i,c;
//inicializa as variaveis para o sscanf
char col;
int linha;

//faz o for do numero de llinhas
for(i=0;i<k;i++){
   //faz o for do numero de colunas
   for(c=0;c<colunas;c++){
       if (sscanf(matris[k][c], "%c%d", &col, &linha) == 2) {
               printf("linha: %d coluna: %c\n", linha, col);
       }
   }
}

eu percorro cada linha e cada coluna, e faço o sscanf em cada celula da matris, estranho isso..

Tem algum erro nisso?

Obrigado.

Edited by brunoais
Posted (edited)

nossa 😞

Eu como teste inseri:

1 2 3 4 5

A1 B1 C1 D1 E1

era pra ter retornado nao era? ja que a celula A2 começa com caractere e seguido de um numero...

Edited by PlayMa256
Posted (edited)

creio que nao, porque copei justamente o que postaste.

//inicializa as variaveis de controle
int i,c;
//inicializa as variaveis para o sscanf
char col;
int linha;
//faz o for do numero de llinhas
for(i=0;i<k;i++){
//faz o for do numero de colunas
for(c=0;c<colunas;c++){
 if (sscanf(matris[k][c], "%c%d", &col, &linha) == 2) {
		 printf("linha: %d coluna: %c\n", linha, col);
 }
}
}

fiz desta maneira só pra fazer um dump, pra ver se estava dando certo, mas nada =/

Edited by PlayMa256

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.