• Lunes 16 de Septiembre de 2019, 16:42

Autor Tema:  Remover un caracter de una cadena cada vez que se repita el ciclo. Necesito idea  (Leído 988 veces)

Angeljim105

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Estoy realizando un codigo donde: imprima una cadena de caracteres dentro de un ciclo:
por ejemplo la salida en pantalla debe imprimir:

//////////////////////////////////////

Nombre
 ombre
  mbre
    bre
      re
       e

///////////////////////////////////////
Estoy haciendo un ciclo anidado for pero no logro eliminar el primer caracter  y asi sucesivamente:

El codigo fuente que estoy usando es este: son varias salidas de pantalla pero es la de arriba donde tengo la duda:

// Jimenez Bustillos Angel  // 01220194
// 20/04/17
//  Laboratorio 11
// JBA_L11.C

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void menu (void);
void programa1(void);



int main (void)
{
   menu();
   return 0;
}


void menu(void)
{
   int op;
   
   do{
      system ("cls");
      printf("\nMENU");
     printf("\n1.- Ejemplo cadenas");
     printf("\nESCOGE UNA OPCION.");
      scanf ("%d",&op);
     switch(op)
       {
        case 1: programa1();  break;
      
      
      }
   }while(op != 4);
}

void programa1(void)

{
    int tam,i,j;
    char NomAlum[30];
   
    system ("cls");
    printf("Dame tu nombre\n");
    fflush(stdin);
    gets(NomAlum);
    printf("\n");
    tam=strlen(NomAlum);
   
    printf("%s Es tu nombre y tiene %d caracteres\n",NomAlum,tam);
   
   printf("\n");
   system("pause");
   printf("\n");
   
                                     
   for(i=0;i<tam;i++)
   {
 
   printf("%c\n",NomAlum);
   
    }
    printf("\n");
   system("pause");
   printf("\n");
   
    for(i=0;i<tam;i++)
    {
     printf("%c\n",NomAlum[(tam-1)-i]);                           
     }
 
 printf("\n");
 printf("\n");
 system("pause");
 
 for(i=0;i<tam;i++)
    {   
    printf("\n");
   
         
      for(j=0;j<tam;j++)
      {
         
         
         printf("%c",NomAlum[j]);
         
         
       
         
     }
     
}
 
    printf("\n");
   system("pause");
   printf("\n");
   
   
 for(i=0;i<tam;i++)
    {   
    printf("\n");
   
         
         
      for(j=0;j<tam;j++)
      {
      printf("%c",NomAlum[(tam-1)-j]);
         
         
       
         
     }
     
}
printf("\n");
system("pause");
printf("\n");
   
   
   
      
}


chenech

  • Miembro activo
  • **
  • Mensajes: 96
    • Ver Perfil
Re:Remover un caracter de una cadena cada vez que se repita el ciclo. Necesito idea
« Respuesta #1 en: Viernes 5 de Mayo de 2017, 17:31 »
0
Hola, te dejo un ejemplo de hacerlo de una forma y de otra, quitando al final el primer ejemplo y quitando al principio el otro, prueba a ver por que no he tenido tiempo de probarlo, si puedes usar String hay funciones como SubString que te facilitan la labor, con char me sale así mas o menos, un saludo.

Código: [Seleccionar]

// Ejemplo quitando al final

        const char Nombre[30] = "Nombre";
char Salida[30];
for(int i=0;i<strlen(Nombre);i++)
{
for(int j=0;j<i+1;j++)
printf("%c", Nombre[j]);
printf("%c", '\n');
}

// Ejemplo quitando al principio

int k;
for(int i=0;i<strlen(Nombre);i++)
{
k=0;
for(int j=i;j<strlen(Nombre);j++)
Salida[k++] = Nombre[j];
                Salida[k] = '\0';
printf("%s", Salida);
printf("%c", '\n');
}
« última modificación: Viernes 5 de Mayo de 2017, 17:33 por chenech »

Angeljim105

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re:Remover un caracter de una cadena cada vez que se repita el ciclo. Necesito idea
« Respuesta #2 en: Sábado 6 de Mayo de 2017, 23:49 »
0
Gracias me faltaba un poco de logica para resolver el problema lo estoy analizando, muchas gracias por tu tiempo y tu atencio amigo gracias.