Ir para conteúdo

POWERED BY:

Arquivado

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

ulfreitas

soma de caracteres

Recommended Posts

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

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

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

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

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

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

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

×

Informação importante

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