Advertisement
juanjo12x

gg

Oct 3rd, 2014
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.31 KB | None | 0 0
  1. #include <cstdlib>
  2. #include <cstdio>
  3. #include <cstring>
  4. using namespace std;
  5.  
  6. char sacaPalabra(char *&palabra){
  7.     char cadena[50],c;
  8.     int i=0;
  9.     while((c=getchar())==' '||c=='\n');
  10.     if(c=='\n') return c;
  11.     while(c!=' ' && c!='\n' && c!=EOF){
  12.         cadena[i++]=c;
  13.         c=getchar();
  14.     }
  15.     cadena[i]='\0';
  16.     palabra=new char[i+1];
  17.     strcpy(palabra,cadena);
  18.     //printf("%s\n",palabra);
  19.     return c;
  20. }
  21.  
  22. void imprimir(char **codCur, char **nombCur, float *credCur){
  23.     int i=0;
  24.     //printf("holiii\n");
  25.     while(codCur[i]){
  26.         printf("%s %s %f en la posicion %d\n", codCur[i], nombCur[i], credCur[i],i);
  27.         i++;
  28.     }
  29. }
  30.  
  31. void leeCursos(char **&codCur, char **&nombCur, float *&credCur){
  32.     char *palabra,c='a';
  33.     char *bufferNomb[100], *bufferCod[100];
  34.     float bufferCred[100];
  35.     float cantCred;
  36.     int cant=0;
  37.     while(1){
  38.         sacaPalabra(palabra);
  39.         if(strcmp(palabra,"******")==0)break;
  40.         bufferCod[cant]=new char[strlen(palabra)+1];
  41.         strcpy(bufferCod[cant],palabra);
  42.         scanf("%f",&cantCred);
  43.        
  44.         bufferCred[cant]=cantCred;
  45.         char curso[100]="";
  46.         c='a';
  47.         while(c!='\n'){
  48.             // nombre del curso
  49.             c=sacaPalabra(palabra);
  50.             strcat(curso,palabra);
  51.            
  52.         }
  53.         bufferNomb[cant]= new char[strlen(curso)+1];
  54.         strcpy(bufferNomb[cant++],curso);
  55.     }
  56.     codCur=new char*[cant+1];
  57.     nombCur=new char*[cant+1];
  58.     credCur= new float[cant+1];
  59.     for(int i=0;i<cant;i++){
  60.         //printf("%s %s %f\n",bufferCod[i],bufferNomb[i],bufferCred[i]);
  61.         codCur[i]=bufferCod[i];
  62.         nombCur[i]=bufferNomb[i];
  63.         credCur[i]=bufferCred[i];
  64.     }
  65.     codCur[cant]=NULL;
  66.     nombCur[cant]=NULL;
  67.     credCur[cant]=-1;
  68. }
  69.  
  70. int buscaCur(char **codCur, char*codigo){
  71.     int i=0;
  72.     while(codCur[i]){
  73.         if(strcmp(codCur[i],codigo)==0){
  74.            
  75.             return i;
  76.         }
  77.         i++;
  78.     }
  79.     return -1;
  80. }
  81.  
  82. void leeyCreaLista(char ***&listasDeClase, char**codCur){
  83.     int num,pos;
  84.     char *nombre, *codigo;
  85.     while(scanf("%d",&num)==1){
  86.         sacaPalabra(nombre);
  87.         char c='a';
  88.         while(c!='\n'){
  89.             c=sacaPalabra(codigo);
  90.             pos=buscaCur(codCur, codigo);
  91.            
  92.             if(pos!=-1){
  93.                 if (listasDeClase[pos]==NULL){
  94.                     listasDeClase[pos]=new char*[100];
  95.                     for(int i=0;i<100;i++)
  96.                         listasDeClase[pos][i]=NULL;
  97.                 }
  98.                 int i=0;
  99.                 while(listasDeClase[pos][i])i++;
  100.                 listasDeClase[pos][i]=new char[strlen(nombre)+1];
  101.                 strcpy(listasDeClase[pos][i],nombre);
  102.                 printf("imprime el nombree maldicion %s\n",listasDeClase[pos][i]);
  103.             }
  104.         }
  105.     }
  106.     printf("holiboliii:D\n");
  107.     //dar espacio exacto
  108.     int cant=0;
  109.     char *buffer[100];
  110.     while(codCur[cant])cant++;
  111.    
  112.     for(int j=0;j<cant;j++){
  113.         int i=0;
  114.         while(listasDeClase[j][i]!=NULL){      
  115.             buffer[i]=new char[strlen(listasDeClase[j][i])+1];
  116.             strcpy(buffer[i],listasDeClase[j][i]);
  117.             i++;
  118.         }
  119.         delete[] listasDeClase[j];
  120.         listasDeClase[j]=new char*[i+1];
  121.         listasDeClase[j][i]=NULL;
  122.         int cant2=i;
  123.         i=0;
  124.         while(i<cant2){
  125.             listasDeClase[j][i]=new char[strlen(buffer[i])+1];
  126.             strcpy(listasDeClase[j][i],buffer[i]);
  127.             i++;
  128.         }
  129.        
  130.     }
  131. }
  132.  
  133. void imprimeLista(char ***listasDeClase, char**codCur){
  134.     int i=0;
  135.     while(listasDeClase[i]){
  136.         printf("Curso: %s\n", codCur[i]);
  137.         int j=0;
  138.         while(listasDeClase[i][j]){
  139.             printf("%s ,",listasDeClase[i][j]);
  140.             j++;
  141.         }
  142.         i++;
  143.     }
  144. }
  145.  
  146. /*
  147.  *
  148.  */
  149. int main(int argc, char** argv) {
  150.    
  151.     char **codCur,**nombCur;
  152.     float *credCur;
  153.     char ***listasDeClase;
  154.     leeCursos(codCur, nombCur, credCur);
  155.    
  156.     imprimir(codCur, nombCur, credCur);
  157.     int i=0;
  158.     while(codCur[i++]);
  159.     listasDeClase= new char **[i];
  160.     for(int j=0;j<i;j++)
  161.         listasDeClase[j]=NULL;
  162.     leeyCreaLista(listasDeClase, codCur);
  163.     imprimeLista(listasDeClase, codCur);
  164.     return 0;
  165. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement