Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdlib>
- #include <cstdio>
- #include <iostream>
- #include <cstring>
- #define INC 5
- using namespace std;
- template<typename T>
- void incrementar_str(T **&lst,int numElem){
- if(lst==NULL){
- lst=new T*[INC+1];
- for(int i=0;i<INC;i++) lst[i]=NULL;
- }
- else{
- T **lstAux=new T *[numElem+INC+1];
- for(int i=0;i<numElem;i++) lstAux[i]=lst[i];
- for(int i=numElem;i<=numElem+INC;i++) lstAux[i]=NULL;
- delete []lst;
- lst=lstAux;
- }
- }
- template<typename T>
- void incrementarnum(T *&lst,int numElem){
- if(lst==NULL){
- lst=new T[INC+1];
- for(int i=0;i<INC+1;i++) lst[i]=-1;
- }
- else{
- T *lstAux=new T[numElem+INC+1];
- for(int i=0;i<numElem;i++) lstAux[i]=lst[i];
- for(int i=numElem;i<numElem+INC+1;i++) lstAux[i]=-1;
- delete []lst;
- lst=lstAux;
- }
- }
- template<typename T>
- void agregararrnum(T **&lst,T *elem){
- if(lst==NULL){
- incrementar_str(lst,0);
- lst[0]=elem;
- }
- else{
- int numElem=0;
- for(int i=0;lst[numElem]!=NULL;i++){
- numElem++;
- }
- if(numElem%INC==0) {incrementar_str(lst,numElem);}
- lst[numElem]=elem;
- }
- }
- template<typename T>
- void agregarOrdnum(T *lst,T elem,int &cant){
- int numElem=0,idx=0;
- for(int i=0;i<cant;i++){
- if(lst[numElem]==elem) return;
- if(lst[numElem]<elem) idx++;
- numElem++;
- }
- for(int i=numElem;i>idx;i--)
- lst[i]=lst[i-1];
- lst[idx]=elem;
- cant++;
- }
- template<typename T>
- void agregarnum(T *&lst,T elem){
- if(lst==NULL){
- incrementarnum(lst,0);
- lst[0]=elem;
- }
- else{
- int numElem=0;
- for(int i=0;lst[numElem]!=-1;i++){
- numElem++;
- }
- if(numElem%INC==0) {incrementarnum(lst,numElem);}
- lst[numElem]=elem;
- }
- }
- template<typename T>
- void memExacta_num(T *input,T *&output,int numElem){
- output=new T[numElem+1];
- for(int i=0;i<numElem;i++)
- output[i]=input[i];
- output[numElem]=-1;
- }
- void memExacta_str(char**input,char ** & output,int numElem){
- output=new char*[numElem+1];
- for(int i=0;i<numElem;i++){
- int size=strlen(input[i])+1;
- output[i]=new char[size];
- strcpy(output[i],input[i]);
- }
- output[numElem]=NULL;
- }
- void split_Tokens(char* linea, char ** & palabras, int n){
- int numPal = 0;
- char *auxPal[100];
- if(!isblank(linea[0])){
- auxPal[numPal] = linea;
- numPal++;
- }
- for(int i = 1; linea[i] != '\0'; i++){
- if(!isblank(linea[i]) and (isblank(linea[i-1]) or (linea[i-1] == '\0')) ){
- auxPal[numPal] = &linea[i];
- numPal++;
- }
- if(isblank(linea[i]) and !isblank(linea[i-1]) )
- linea[i] = '\0';
- if(numPal == n) break;
- }
- memExacta_str(auxPal,palabras,numPal);
- }
- int agregarOrd_str(char**&lst,char *elem){
- if(lst==NULL){
- incrementar_str(lst,0);
- lst[0]=elem;
- }
- else{
- int numElem=0,idx=0;
- for(int i=0;lst[numElem];i++){
- if(strcmp(lst[numElem],elem)==0) return 0;
- if(strcmp(lst[numElem],elem)<0) idx++;
- numElem++;
- }
- if(numElem%INC==0) incrementar_str(lst,numElem);
- for(int i=numElem;i>idx;i--)
- lst[i]=lst[i-1];
- lst[idx]=elem;
- }
- return 1;
- }
- void a_mayus(char *linea){
- for(int i=0;i<strlen(linea);i++)
- if(linea[i]>='a' and linea[i]<='z') linea[i]+='A'-'a';
- }
- int tipodePal(char *word){
- if(!isdigit(word[0])) return 1;
- for(int i=0;i<strlen(word);i++)
- if (word[i]=='.') return 3;
- return 2;
- }
Advertisement
Add Comment
Please, Sign In to add comment