ulfreitas 6 Denunciar post Postado Agosto 10, 2011 Bom dia Tenho uma variavel com valor q é um caracter, eu queria colocar em um laço e no final do laço acrescentar mais um caracter para que na proxima vez q ele rodar aparece dois caracteres, depois tres, quatro e assim por diante ate finalizar o laço int i; char j; j = '*'; for(i=1;i<=5;i++) { printf(j,"\n"); } j = j + '*'; //aqui eu queria incrementar mais um "*" para mostrar dois, tres ... ate cinco "*" a ideia é mostrar isso no final: * ** *** **** ***** Quando eu rodei esse codigo apareceu varios caracteres diferentes, acredito que isso ocorreu porque ele deve somar o valor do caracter dando origem a outro, tipo o caracter '*' na tabela ascii equivale a 42, entao ele soma 42 + 42 = 84 e mostra outro caracter. Então é possivel fazer isso em C? Compartilhar este post Link para o post Compartilhar em outros sites
BheringJoao 0 Denunciar post Postado Agosto 10, 2011 Acho que isso resolve o problema: Usando recursividade: #include <stdio.h> #include <stdlib.h> bool escreve(char j, int n, int x) { if(n == x) { printf("\n"); return true; } printf("%c", j); return escreve(j, n, x+1); } main() { char j = '*'; for(int i = 1; i < 6; i++) { escreve(j, i, 0); } system("pause"); } Apenas com loops: #include <stdio.h> #include <stdlib.h> main() { char j = '*'; for(int i = 0; i < 5; i++) { for(int x = i; x >= 0; x--) { printf("%c", j); } printf("\n"); } system("pause"); } Compartilhar este post Link para o post Compartilhar em outros sites
ulfreitas 6 Denunciar post Postado Agosto 11, 2011 Bom dia eu usei loop pra resolver, fiz assim: #include <stdio.h> #include <stdlib.h> main() { int i, j; for(i = 0; i <= 5; i++) { for(j = 1; j<= i; j++) { printf("*"); } printf("\n"); } system("pause"); } O q eu queria mesmo é saber se em linguagem c é possivel somar caracteres? tipo ( A + A = AA ), mas não é o que ocorre, como eu disse no topico. Compartilhar este post Link para o post Compartilhar em outros sites
BheringJoao 0 Denunciar post Postado Agosto 11, 2011 Diretamente não é possível. Pode-se usar a função strcat. Compartilhar este post Link para o post Compartilhar em outros sites
guidjos 65 Denunciar post Postado Agosto 11, 2011 A soma está definida para caracteres, mas, como você mesmo diz ter notado, simplesmente resulta na soma dos valores (numéricos) de cara um - caracteres em C são ints garantidamente armazenáveis em objetos de tipo char. Em C, não existe uma operação que define concatenação de caracteres. Compartilhar este post Link para o post Compartilhar em outros sites
ulfreitas 6 Denunciar post Postado Agosto 12, 2011 quidjos nem mesmo usando a função strcat que o BheringJoao mencionou? Caso seja possivel com essa funçao como seria o codigo na parte em que vai incrementando os caracteres? #include<stdio.h> #include<sting.h> /*biblioteca da função strcat()*/ main() { char a[50]="*", b[50]="*"; int i; for(i=1;i<=5;i++) { printf("%c\n",a); strcat(a=a+B); /*seria isso???*/ } } Imaginei assim mas nao tenho como testar aqui entao nao sei qual sera o resultado (apesar de eu esperar um erro). Ou realmente nao tem como? Compartilhar este post Link para o post Compartilhar em outros sites
guidjos 65 Denunciar post Postado Agosto 12, 2011 Não. Seria possível verificar que esta tentativa está errada analisando o protótipo da strcat. Ela recebe 2 argumentos, que devem ambos ser ponteiros para char. Uma atribuição não tem sentido aí. strcat, como o nome sugere, opera sobre representações abstratas de strings. Compartilhar este post Link para o post Compartilhar em outros sites
Renato Utsch 24 Denunciar post Postado Agosto 19, 2011 A intenção sua é usar strings, que são conjuntos de caracteres. Procure estudar sobre vetores e strings para utilizar esse tipo de coisa com um limite no número de caracteres. Aí a função strcat() seria válida. Se deseja tornar essa string sem limites, terá que usar alocação dinâmica, o que é uma coisa bem avançada da C, então a masterize antes e contente-se com um limite alto, porém que não tenha tanto desperdício de memória, para depois se aventurar por mares mais avançados. Abraços :D Compartilhar este post Link para o post Compartilhar em outros sites