Reordenar un Array

Se trata de escribir una cadena alfanumérica y hacer que la misma se divida en bloques separados de letras o números.

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

int main(){

char cadena[512];
char** array_de_cadenas = 0;
char** array_de_cadenas_r = (char**)malloc(sizeof(char)*1);
array_de_cadenas_r[0] = (char*)malloc(sizeof(char)*128);
memset(array_de_cadenas_r[0],0,sizeof(char)*128);

// char array_de_cadenas[20][128] = {{0}};

printf("ingrese la cadena..\n");
scanf("%s", cadena);

int modo=0;
int pos=-1;
int let=0;// contador usado como flag
int num=0;// contador usado como flag
int i=0;
int j=0;
while(cadena[i]){

//if(pos == 20) break;
if(j==(128-2)) {

printf("uno de los bloques sobrepasa char=128-2\n");
system("pause");
return 0;
}
if(cadena[i] >= 'a' && cadena[i]<='z'){
let++;
num=0;
}
else if(cadena[i] >= 'A' && cadena[i]<='Z'){
let++;
num=0;
}
else if(cadena[i] >= '0' && cadena[i]<='9'){
num++;
let=0;
}
else
{
let=0;
num=0;
}

if((modo==1&&let)||(modo==2&&num));
else
{
pos++;
j=0;
array_de_cadenas_r = (char**)realloc(array_de_cadenas_r, sizeof(char)*(pos+1));
array_de_cadenas_r[pos] = (char*)malloc(sizeof(char)*128);
memset(array_de_cadenas_r[pos],0,sizeof(char)*128);
}

if(let){

array_de_cadenas_r[pos][j] = cadena[i];
j++;
modo=1;
}
else if(num){

array_de_cadenas_r[pos][j] = cadena[i];
j++;
modo=2;
}
else
{
modo=0;
}

i++;
}

array_de_cadenas = array_de_cadenas_r;
for(int b=0; b<pos+1; b++){
printf(array_de_cadenas[b]);
putchar('\n');
}

for(int c=0; c<pos; c++) free(array_de_cadenas[c]);
free(array_de_cadenas);

system("pause");
return 0;
}
Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: