Ir ao conteúdo
  • Cadastre-se

Como imprimir um intervalo de um vetor de caracteres em C?


Ricardo Kaê

Posts recomendados

Boa noite galera ! Então, estou aprendendo a programar em C agora e como prática, estou tentando fazer um triângulo de asteriscos com um número de linhas passado.

/*

 

Nº Linhas = 5

*

**

***

****

*****

 

*/

Exatamente desse jeito. Então, eu criei um vetor de caracteres de comprimento igual ao número de linhas - 1 (por causa do caracter de Escape) e estou tentando usar um for para imprimir a cada iteração, parte desse vetor. Em python, ficaria algo similar a isso (eu não sei se alguém programa em python, mas vai o código assim mesmo).

Exemplo 1 em Python:

vetorBase = "*****" // 5 caracteres de asteriscos

for modificaVetor in range(1,6):

     print vetorBase[:modificaVetor]

 

A minha dúvida é: Como eu imprimo um intervalo de um vetor em C?

O código que eu fiz em C está assim...

Exemplo 1 em C:

// Triângulo de asteriscos

#include <stdio.h>

int main(void)

{

char vetorBase[6] = "*****";

int modificaVetor;

for (modificaVetor=1;modificaVetor<5;modificaVetor++)

{

      printf("%.%ds",modificaVetor,vetorBase); // Eu estava tentando modificar a precisão do vetorBase, com o valor de modificaVetor. Não deu certo, rs

}

return 0;

}

Eu pensei numa solução 2 também, que seria ao invés de ficar tentando imprimir direto, guardasse numa variável, parte desse vetor. Desse jeito...

Exemplo 2 em Python:

vetorBase = "*****"

for modificaVetor in range(1,6):

       vetorResp = vetorBase[:modificaVetor]

       print vetorResp

 

Em python é até burrice fazer isso, mas acho que é possível aproveitar o algoritmo em C, já que eu não consigo usar o printf direito em C.

Enfim, essa é a duvida. Agradeço aos que puderem ajudar !

 

 

 

 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Ricardo Kaê     olha aqui um jeito fácil de fazer esse triangulo :

#include <stdio.h>
#include <conio.h>
#include <windows.h>
void gotoxy(int x,int y){
    COORD c;
    c.X=x;
    c.Y=y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);
}
int i,j,c,l,k=4,w;
int main(){
    printf("Digite A Quantidade De Linhas ");
    scanf("%d",&w);
    gotoxy(36,2);printf("Triangulo");
    c=40;
    l=5;
    k=1;
    for(i=0;i<w;i++){
        gotoxy(c,l);
        for(j=0;j<k;j++){
            printf("* ");
        }
        /*c--;*/
        l++;
        k++;
    }
    printf("\n\n\n");
    getch();
    return 0;
}

já para você imprimir um intervalo de um vetor de caracteres você usa um laço de repetição assim :

#include <stdio.h>
#include <conio.h>
int a,b,i,w,g;
char vetor[10]={'a','b','c','d','e','f','g','h','i','j'};
int main(){
    do{
        w=1;
        do{
            g=1;
            printf("Digite O Comeco Do Trecho De 0 Ate 8 ");
            scanf("%d",&a);
            if(a<0||a>8){g=2;printf("Valor Fora De Faixa, Digite Outro Tecle \n");getch();}
            g--;
        }while(g!=0);
        do{
            g=1;
            printf("Digite O Final Do Trecho De 1 Ate 9 ");
            scanf("%d",&b);
            if(b<1||b>9){g=2;printf("Valor Fora De Faixa, Digite Outro Tecle \n");getch();}
            g--;
        }while(g!=0);
        if(a>b){w=2;printf("Valor De A Maior Que B, Digite Outros Tecle \n");getch();}
        w--;
    }while(w!=0);
    for(i=a;i<=b;i++){
        printf("%c ",vetor[i]);
    }
    getch();
    return 0;
}

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!