Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdlib>
- #include <cstdio>
- #include <cstring>
- using namespace std;
- char sacaPalabra(char *&palabra){
- char cadena[50],c;
- int i=0;
- while((c=getchar())==' '||c=='\n');
- if(c=='\n') return c;
- while(c!=' ' && c!='\n' && c!=EOF){
- cadena[i++]=c;
- c=getchar();
- }
- cadena[i]='\0';
- palabra=new char[i+1];
- strcpy(palabra,cadena);
- //printf("%s\n",palabra);
- return c;
- }
- void imprimir(char **codCur, char **nombCur, float *credCur){
- int i=0;
- //printf("holiii\n");
- while(codCur[i]){
- printf("%s %s %f en la posicion %d\n", codCur[i], nombCur[i], credCur[i],i);
- i++;
- }
- }
- void leeCursos(char **&codCur, char **&nombCur, float *&credCur){
- char *palabra,c='a';
- char *bufferNomb[100], *bufferCod[100];
- float bufferCred[100];
- float cantCred;
- int cant=0;
- while(1){
- sacaPalabra(palabra);
- if(strcmp(palabra,"******")==0)break;
- bufferCod[cant]=new char[strlen(palabra)+1];
- strcpy(bufferCod[cant],palabra);
- scanf("%f",&cantCred);
- bufferCred[cant]=cantCred;
- char curso[100]="";
- c='a';
- while(c!='\n'){
- // nombre del curso
- c=sacaPalabra(palabra);
- strcat(curso,palabra);
- }
- bufferNomb[cant]= new char[strlen(curso)+1];
- strcpy(bufferNomb[cant++],curso);
- }
- codCur=new char*[cant+1];
- nombCur=new char*[cant+1];
- credCur= new float[cant+1];
- for(int i=0;i<cant;i++){
- //printf("%s %s %f\n",bufferCod[i],bufferNomb[i],bufferCred[i]);
- codCur[i]=bufferCod[i];
- nombCur[i]=bufferNomb[i];
- credCur[i]=bufferCred[i];
- }
- codCur[cant]=NULL;
- nombCur[cant]=NULL;
- credCur[cant]=-1;
- }
- int buscaCur(char **codCur, char*codigo){
- int i=0;
- while(codCur[i]){
- if(strcmp(codCur[i],codigo)==0){
- return i;
- }
- i++;
- }
- return -1;
- }
- void leeyCreaLista(char ***&listasDeClase, char**codCur){
- int num,pos;
- char *nombre, *codigo;
- while(scanf("%d",&num)==1){
- sacaPalabra(nombre);
- char c='a';
- while(c!='\n'){
- c=sacaPalabra(codigo);
- pos=buscaCur(codCur, codigo);
- if(pos!=-1){
- if (listasDeClase[pos]==NULL){
- listasDeClase[pos]=new char*[100];
- for(int i=0;i<100;i++)
- listasDeClase[pos][i]=NULL;
- }
- int i=0;
- while(listasDeClase[pos][i])i++;
- listasDeClase[pos][i]=new char[strlen(nombre)+1];
- strcpy(listasDeClase[pos][i],nombre);
- printf("imprime el nombree maldicion %s\n",listasDeClase[pos][i]);
- }
- }
- }
- printf("holiboliii:D\n");
- //dar espacio exacto
- int cant=0;
- char *buffer[100];
- while(codCur[cant])cant++;
- for(int j=0;j<cant;j++){
- int i=0;
- while(listasDeClase[j][i]!=NULL){
- buffer[i]=new char[strlen(listasDeClase[j][i])+1];
- strcpy(buffer[i],listasDeClase[j][i]);
- i++;
- }
- delete[] listasDeClase[j];
- listasDeClase[j]=new char*[i+1];
- listasDeClase[j][i]=NULL;
- int cant2=i;
- i=0;
- while(i<cant2){
- listasDeClase[j][i]=new char[strlen(buffer[i])+1];
- strcpy(listasDeClase[j][i],buffer[i]);
- i++;
- }
- }
- }
- void imprimeLista(char ***listasDeClase, char**codCur){
- int i=0;
- while(listasDeClase[i]){
- printf("Curso: %s\n", codCur[i]);
- int j=0;
- while(listasDeClase[i][j]){
- printf("%s ,",listasDeClase[i][j]);
- j++;
- }
- i++;
- }
- }
- /*
- *
- */
- int main(int argc, char** argv) {
- char **codCur,**nombCur;
- float *credCur;
- char ***listasDeClase;
- leeCursos(codCur, nombCur, credCur);
- imprimir(codCur, nombCur, credCur);
- int i=0;
- while(codCur[i++]);
- listasDeClase= new char **[i];
- for(int j=0;j<i;j++)
- listasDeClase[j]=NULL;
- leeyCreaLista(listasDeClase, codCur);
- imprimeLista(listasDeClase, codCur);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement