|
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Mensajes - i82maria
51
« en: Viernes 12 de Noviembre de 2004, 21:55 »
Lo que necesito esta puesto ahora en el script de arriba, en la nueva discusion que he puesto de Error de ejecucion en memoria, si alguien quiere ayudarme, que la lea. Gracias.
52
« en: Viernes 12 de Noviembre de 2004, 17:59 »
Hola de nuevo
No es que seas torpe, no se puede saber todo en esta vida, si no seria un aburrimiento, por ejemplo yo no tengo ni idea de que es eso del pvm,siento no poder ayudarte pero mis conocimientos informaticos se limitan al c/c++ algo de programcion de internet y poco mas, en realidad estoy estudiando ingenieria industrial como pone abajo en la firma  Me ha picado la curiosidad sobre el pvm ese y buscando en google salen varias paginas que te explican que es como instalarlo etc
PVM (Parallel Virtual Machine) es un software que permite unir una serie de estaciones Unix en red y hacerlos funcionar como un solo computador en paralelo. De esta forma, grandes problemas computacionales pueden ser resueltos con un coste menor. PVM se puede obtener de forma libre en la dirección:
http://www.epm.ornl.gov/pvm
y continua .........
en esta pagina parece que lo explican bastante bien y tienen un tutorial, asi que animo y a leer
Un saludo Hola  , gracias por responderme siempre a mis preguntas. Tienes razón de todo no se puede saber, yo te agradezco el haber mirado esas pa´ginas, pero lo que realmente necesito, no es código, ni documentación del lenguaje pvm, sino una idea de que tengo que hacer una practica de pvm, y no sé de que hacerla. Te pregunte por si sabias algo, o por si eras informático. Muchas gracias de todos modos, yo estoy terminando la carrera de Ingenieria Tecnica en Informatica de Gestion. Saludos si sabes de alguien, comentaselo, vale?. Gracias, eres muy simpatico.
53
« en: Jueves 11 de Noviembre de 2004, 21:31 »
Hola
A ver maria que te veo un poco perdidilla, cualquier compilador de c++ puede compilar c. C++ es un lenguaje creado a partir de c y por tanto lo contiene, es decir usa mucha de su sintaxis funciones etc Ademas de que crees que es lo de cpp que acompaña al dev? c plus plus
Un saludito y suerte con los programas Gracias tienes toda la razón, yo es que creia que el visual C++ no era muy bueno para compilar practicas de C. Gracias, soy una torpe. Por cierto, supongo que estudias informatica, o que eres informatico, te puedo hacer una pregunta?. Tengo que hacer una practica de pvm, y no tengo mucha idea de como empezar, si sabes algo del lenguaje, queria comentarte a ver de uqe `puedo hacerla, porque el tema es libre. Por favor contestame si sabes algo, para orientarme. Gracias de nuevo, saludos mjose
54
« en: Jueves 11 de Noviembre de 2004, 20:48 »
Aunque este foro sea de ADA, es lo más parecido que he encontrado a PVM, por favor, si alguien conoce ese lenguaje, querria hacerle una consulta, tengo quye hacer una practica en pvm, y soy nueva en esto. Por favor,si alguien sabe algo, que me responda. Gracias
55
« en: Jueves 11 de Noviembre de 2004, 14:07 »
Hola
Yo llevo usando una version del Microsoft Visual Studio 6.0 que encontre en el kazaa, es una version light comprimida (80 mb creo), pero totalmente operativa, y de momento no me ha dado problemas. En el emule hay cantidad de versiones de distintos tamaños, pero te aconsejo que entres en una pagina como spanishare para buscar enlaces, ya que tambien hay muchos fakes por ahi rulando. Ni que decir tiene que solamente son copias de seguridad que deberas probar usar durante unos dias y luego borrar para comprarte el original
Por cierto, siento no poder ayudarte con lo de el randomize, ya que no se como va(busca por intenne que seguro que hay algun ejemplo), y lo de las estructuras. Estoy muy liadillo ahora con unas cuantas practicas que tengo que entregar la semana que viene.
Un saludo Gracias por responderme, pero insisto que lo que necesito es un compilador de C, no de C++. Y respecto al randomize, lo que quiero es que creo que esa es una manera antigua de usar los numeros aleatorios en C, quiero que se me traspase a la manera nueva, usando el rand, pero no sé como hacerlo, para que me funcione bien la practica. Me entiendes?, Eso es lo que quiero yo se q el rand se usa en C++, pero no sé como ponerlo en esta practica mia. Gracias
56
« en: Miércoles 10 de Noviembre de 2004, 18:40 »
Por favor, quisiera saber si alguien conoce algun sitio de la web, donde me pueda bajar un buen compilador de C, tengo el Dev Cpp, pero es que me da muchos probleamas. Si alguien conoce algun buen compilador bajo Windows, que me conteste, porfi, que me hace mucha falta. Gracias
57
« en: Domingo 7 de Noviembre de 2004, 19:34 »
Holas Me alegro que te sirviera de ayuda
Si puedes adjunta el archivo cpp para echarle un vistazo, que se ven mejor los errores desde el compilador.
ht luego Verás ayudarme en el sentido de comprender más o menos lo que dices si, pero en mi práctica insisto es de C, y no admite la libreria <cstdlib>, sino stdlib.h. Asi que aqui te adjunto el codigo, y lo he compilado, compila pero al ejecutar es segmentation fault. [CODE] /*Escribir un programa para generar una matriz de 4 x 5 elementos reales, multiplicar la primera columna por cualquier otra y mostrar la suma de los productos. El programa debe descomponerse en subproblemas y utilizar punteros para acceder a los elementos de la matriz*/ #include <stdio.h> #include <stdlib.h> #include <time.h> main() { float **mat, *productos; int n; srand(time(NULL)); generarMatriz(mat); multiplicaColumnas(mat, rand() % n, productos); mostrarSumaProductos(productos); } generarMatriz(float **m) { int i, j; m = (float**) malloc(4*5 *sizeof(float)); //randomize(); for(i=0; i<4; i++){ for(j=0; j<5; j++) (int) *(m + i*5 +j) = rand() + rand() /100; } } multiplicaColumnas(float **m, int ncolum, float *vp) { int i; vp = (float *)malloc(5* sizeof(float)); for(i=0; i<4; i++) // *vp++ = (*(m+ i*5)) * (*(m + i*5 + ncolum)); vp = m[0] * m[ncolum]; vp++; } mostrarSumaProductos(float *v) { int i, suma = 0; for(i=0; i< 4; i++) suma += *v; *v++; printf("%f\n", suma); } Por favor, si puedes miramelo , gracias
58
« en: Domingo 7 de Noviembre de 2004, 19:16 »
Hola tengo la siguiente duda espero que alguien me pueda ayudar
Estoy tratando de hacer una programa y en una parte de este, deseo que se pueda elegir dos opciones, para ser más especifico es lo siguiente:
llego a un apartado en el que el programa dirá:
Qué tipo de viga desea calcular: a) Simplemente apoyado-carga uniforme b)Simplemente apoyada-carga puntual
y la verdad es que no tengo idea de como hacerlo, intenté hacer lo siguiente:
printf(" \n Programa para Calcular los Esfuerzos Cortantes y Momentos M ximos \n \n \n"); printf(" ¨Qué tipo de carga tiene su viga? \n \n"); printf( " a) Carga distribuida \n"); printf( " Carga puntual \n"); scanf( "%d", &tipocar);
y después, dependiendo de la opción elegida se el programa seguirá en el módulo correspondiente, pero por ejemplo ingreso la opcion b y continua con el programa como si hubiera escogido "a", es decir no me funciona..
Espero que alguien me pueda ayudar, no hacerlo, solamente guiarme.... gracias.. Hola supongo que lo que tu necesitas es algo asi.Una sentencia de tipo switch declaras una variable opc char opc; switch(opc){ case 'a': printf("Carga uniforme\n"); break; case 'b': printf("Carga puntual\n"); break; } segun la opcion que elija el usuario, si elije 'a', mostrara "Carga uniforme" y si elige 'b' mostrara "Carga Puntual". Espero haberte ayudado en algo. Saludos
59
« en: Domingo 7 de Noviembre de 2004, 19:11 »
Hola acabo de empezar a usar un poco el lenguaje C++, asi que no estoy muy puesta. Tengo que hacer una practica de vectores, con una funcion tipo menu, y en cada opcion, que haga algo, bien que muestre el vector, bien que inserte un elemento, etc, mi pregunta es que en el switch, que viene adjunto, en cada case, yo puedo crear una funcion para cada case?. Es decir, una que muestre el tamaño del vector, otra que muestre el primer elemento, lo mismo que tengo puesto en cada case, pero haciendo una funcion aparte?. Es que no sé como hacerlo. Aqui muestro el codigo de la práctica. [CODE] /*Practica de vectores*/ #include <iostream> #include <vector> // necesario para el contenedor vector #include <cstdlib> //necesario para rand() y srand() using namespace std; int main(void) { vector <int> v(6); int d1, d2; int b; int num; int pos; int bor; char op; int opc; do{ cout <<"*******Practica de vectores******\n" ; cout <<" 1. Introducir datos en el vector.\n"; cout <<" 2. Mostrar el vector.\n"; cout <<" 3 Mostrar el tamaño del vector.\n"; cout <<" 4. Mostrar el primer elemento del vector.\n"; cout <<" 5. Mostrar el ultimo elemento del vector.\n"; cout <<" 6. Añadir elementos al final del vector.\n"; cout <<" 7. Invertir el vector\n"; cout <<" 8. Ordenar el vector.\n"; cout <<" 9. BUscar un elemento en el vector\n"; cout <<" 10. INsertar un elemento en el vector.\n"; cout <<" 11. Borrar el primer elemento del vector.\n"; cout <<" 12. Borrar el ultimo elemento del vector.\n"; cout <<" 13. Borrar un elemento cualquiera del vector.\n"; cout <<" 14. Borrar el vector.\n"; cout <<" Elija una opcion.\n"; cin >> opc; switch(opc){ case 1: for (int i=0 ; i<v.size() ; i++) { cout << "Introduce un valor real "; cin >> v ; cout << endl; } break; case 2: for (int i=0 ; i<v.size() ; i++) cout << v << " "; cout << endl;
break; case 3: cout << "El tamaño del vector es = " << v.size() << endl; cout << endl; break; case 4: cout << "El primer elemento = " << v.front() << " o bien "<< *(v.begin()) << endl; cout << endl; break; case 5: cout << "El Ultimo elemento = " << v.back() << " o bien "<< *(v.end()-1) << endl; cout << endl;
break; case 6: cout << "Insertamos al final del vector el elemento: "; cin >> d1;
v.push_back(d1);
cout << " y el " ; cin >> d2; cout << endl; v.push_back(d2); cout << endl; cout << "Ahora el vector es: "; for (int i=0 ; i<v.size() ; i++) cout << v << " "; cout << endl; cout << endl;
break; case 7: for (vector<int>::iterator it = v.begin(); it!=v.end(); ++it) cout << *it << " "; cout << endl; reverse(v.begin(),v.end()); cout << "EL vector invertido es: "; cout << endl; cout << endl; for (int i=0 ; i<v.size() ; i++) cout << v << " "; cout << endl; break; case 8: sort(v.begin(),v.end()); cout << "EL vector ordenado es: "; for (int i=0 ; i<v.size() ; i++) cout << v << " "; cout << endl; cout << endl; break; case 9: cout << "Busqueda: Introduce entero a buscar "; cin >> b; cout << endl; if (find(v.begin(),v.end(),B)==v.end()) cout << b <<" no encontrado\n"; else cout << b <<" encontrado\n";
break; case 10: cout << "Insertemos el "; cin >> num; cout << endl; cout << "en la posicion "; cin >> pos; cout << endl; cout << endl; v.insert(v.begin() + pos, num); for (int i=0 ; i<v.size() ; i++) cout << v << " "; cout << endl; cout << endl; break; case 11: cout << "Borramos el primer elemento: "; cout << endl; v.erase(v.begin() + 0); for (int i=0 ; i<v.size() ; i++) cout << v << " "; cout << endl; cout << "Tam = " << v.size() << endl; cout << endl;
break; case 12: cout << "Borramos el ultimo elemento: "; cout << endl; v.pop_back(); //borra el ultimo elemento del vector
break; case 13: break;
case 14: break;
default: cout << "Error salir del programa\n"; } cout <<" DEsea continuar?\n"; cin >> op; }while(op!= 's' || op != 'S'); }
Insisto yo lo que quiero es que me digan como puedo hacer una función para cada case del programa. Gracias, ruego respondan lo antes posible.
60
« en: Domingo 7 de Noviembre de 2004, 18:42 »
Hola
Al compilar el codigo me da 30 y pico errores , la mitad son de lo que te dice juanK que accedes a los elementos de la estructura erroneamente con -> , debes usar "." (punto), otros errores son de que no estan declaradas las funciones, pero eso es a lo mejor porque no las has pegado en el post
Si puedes adjunta el archivo cpp para verlo mejor
ht luego Entonces según me decis, se debe usar la estructura con punto, porque no se trata de una lista?. Yo es que he usado el operador -> porque como son estructuras de tipo puntero, por eso,si alguien me podeis explicar el porqe de usar operador punto, y operador flecha en este ejemplo, Respecto a las funciones es que es un ejercicio tomado de un libro, asi que no me di cuenta de uqe las funciones no estuvieran declaradas. Gracias Contestadme lo antes posible.
61
« en: Domingo 7 de Noviembre de 2004, 12:55 »
Holas
Como veo que estas bastante preocupada con el programa ese, te he hecho un miniprograma que calcula las matrices aleatorias y las muestra por pantalla, lo he hecho pasando en las funciones variables float[4][5] en vez de puntero por que yo lo veo mas facil asi para recorrerlas
Los problemas de generar numeros , matrices o lo que sea aleatorio normalmente llevan asociados un rango de valores posibles, aunque no especificas entre que valores.Calcular valores aleatorios entre 0 y infinito no suele ser factible, asi que en el ejemplo lo he hecho con valores float entre 1,00 y 100,99 para que se vea mejor.Aunque tu puedes modificarlo a tu gusto
En el codigo te explico mas o menos como va el asunto,aunque hay un problema a la hora de generar los numeros aleatorios ya que la velocidad del procesador es bastante mayor que la del reloj, entonces no da tiempo a generar nuevas semillas entre componente y componente de la matriz.He solucionado esto un poco chapuceramente metiendole un retardo con un for, que siempre dependera del ordenador, por eso es una chapuza, si se te ocurre otra forma mejor que lo cambies.
#include <stdio.h> #include <stdlib.h> #include <cstdlib> #include <ctime> float generarNumeroAleatorio(); void generarMatriz(float m[4][5]); void mostrarMatriz(float m[4][5]); void main() { do { float mat[4][5]; generarMatriz(mat); mostrarMatriz(mat); printf("\n\n Desea generar otra matriz---SI=ENTER / NO=n"); } while(getchar()!='n'); } // GENERACION DEL NUMERO ALEATORIO // Partiendo de que se quiere un numero aleatorio float entre 1 y 100, la parte decimal // la he restringido a 2 digitos float generarNumeroAleatorio() { float valor,entera,decimal;// valor sera el numero decimal aleatorio final,entera la parte // entera del numero y decimal la parte decimal srand(clock()); // tomo una semilla a partir de los segundos del reloj interno entera= 1 + (rand() % 100); // como rand() nos dara un numero entero del que no sabemos // entre que numeros estara debemos hacer %100 para restringirlo // entre 0 y 99, ademas le sumamos 1 a ese valor para que el // numero este entre 1 y 100 decimal= 1 + (rand() % 100); // para la parte decimal se procede igual que con la entera decimal/=100; // pero luego la divido por 100 para que sea decimal valor=entera+decimal; // finalmente sumo las dos partes y se lo asigno a valor return valor; // y lo devuelvo } //GENERAR UNA MATRIZ void generarMatriz(float m[4][5]) { int i,j; //indices apra recorrer la matriz for(i=0; i<4; i++) // recorro las filas { for(j=0; j<5; j++) // recorro las columnas { float numero=generarNumeroAleatorio(); //le asigno a numero el valor aleatorio m[i][j]=numero; // a cada valor de la matriz un numero aleatorio // que devuelve generarNumeroAleatorio() for(int t=0;t<1200000;t++) // Retardo para darle tiempo a srand a coger otra semilla { // para el siguiente numero aleatorio.UN poco chapucero¡¡¡ } } } } // FUNCION QUE MUESTRA LA MATRIZ EN PANTALLA void mostrarMatriz(float m[4][5]) { int i,j; printf("\n\n"); for(i=0; i<4; i++) { printf("("); for(j=0; j<5; j++) { printf(" %3.2f",m[i][j]); } printf(" )"); printf(" \n"); } }
Espero que te sirva de ayuda y no te lie mas........
Un saludo y suerte
PD: te he adjuntado el fichero cpp Gracias me has ayudado mucho, eres muy amable, si puedes lee mi pregunta esa de las estructuras, a ver si entiendo mejor el fallo, porque es que no le entiendo. Saludos
62
« en: Jueves 4 de Noviembre de 2004, 01:47 »
Esto funciona tambien con long float?????
Help is tnk`s... Si pero para long float en lugar de ser %f, seria %lf. SOlo hay que cambiar eso, el resto es igual.
63
« en: Miércoles 3 de Noviembre de 2004, 16:40 »
Hola
Ese codigo que te he puesto es de C, y creo que te deberia funcionar, sobre la funcion randomize no tengo ni idea, yo use ese codigo para un programilla y va perfectamente
Un saludo Gracias, es que resulta que este ejercicio es de un libro de C, de Programacion en C, y no sé si es que el modo de usar numeros aleatorios es un modo antiguo. Pero podias porfavor ayudarme a usar el modo que tu me dices en esta practica. Es que soy nueva en esto, gracias. Saludos desde Andalucia
64
« en: Miércoles 3 de Noviembre de 2004, 10:52 »
Aunque has declarado una estructura.. lo cierto es que la trabajas de manera atipica.. es decir cargas un puntero pero lo manejas como un array, lo cual no tienen nada de malo pero por lo menos yo noestoy acostumbrado a ese tipo de cosas, y por lo que veo tu tampoco.
Si lo vas a manejar como un array entonces los miembros de la estructura no se acceden como si fuese a travez de apuntadores o sea asi:
Sino que hay que accederlos copn notacion de variables o sea:
Adicional a todos estos errores al final en el ultimo printf haces esto:
printf("\t%s \n". lista->nombre);
No se que es lo que pretendes hacer pero creo que deberias hacer esto:
printf("\t%s \n". lista[i].nombre);
Gracias por tu respuesta, pero entonces si mi intención era usarlos como punteros, porque me da error, al compilar. ?. Por favor, si puedes, responderme. Gracias. Saludos desde España
65
« en: Martes 2 de Noviembre de 2004, 19:13 »
Hola
Para generar un numero aleatorio con rand() tienes que hacer esto
//Debes incluir estas dos librerias #include <cstdlib> #include <ctime> void main() { int valor; srand(time(NULL)); // generacion de una semilla a partir de los segundos del reloj valor= 1 + (rand() % 10); // en valor se almacena el numero aleatorio }
Espero que te sirva de ayuda, un saludo Verás, es que el programa es en C, asi que no me sirve eso que me has puesto. Gracias de todos modos, el codigo es este: #include <stdio.h> #include <stdlib.h> main() { float **mat, *productos; int n; randomize(); generarMatriz(mat); multiplicaColumnas(mat, rand() % n, productos); mostrarSumaProductos(productos); } generarMatriz(float **m) { int i, j; m = (float**) malloc(4*5 *sizeof(float)); randomize(); for(i=0; i<4; i++){ for(j=0; j<5; j++) (int) *(m + i*5 +j) = rand() + rand() /100; } } multiplicaColumnas(float **m, int ncolum, float *vp) { int i; vp = (float *)malloc(5* sizeof(float)); for(i=0; i<4; i++) // *vp++ = (*(m+ i*5)) * (*(m + i*5 + ncolum)); vp = m[0] * m[ncolum]; vp++; }
mostrarSumaProductos(float *v) { int i, suma = 0; for(i=0; i< 4; i++) suma += *v; *v++; printf("%f\n", suma); }
Si puedes echale un vistazo, y me dices si es que puedo suprimir el randomize,o no.Porqe es que la estoy compilando en linux, y el error, que me da es un que dice q no reconoce randomize. Por fa, si puedes contestame.Ah y de paso si puedes mirar lo que he puesto de las estructuras en C, es que no encuentro el fallo. y me da error de compilacion Gracias
66
« en: Martes 2 de Noviembre de 2004, 18:57 »
Hola
Para generar un numero aleatorio con rand() tienes que hacer esto
//Debes incluir estas dos librerias #include <cstdlib> #include <ctime> void main() { int valor; srand(time(NULL)); // generacion de una semilla a partir de los segundos del reloj valor= 1 + (rand() % 10); // en valor se almacena el numero aleatorio }
Espero que te sirva de ayuda, un saludo Verás, es que el programa es en C, asi que no me sirve eso que me has puesto. Gracias de todos modos, el codigo es este: #include <stdio.h> #include <stdlib.h> main() { float **mat, *productos; int n; randomize(); generarMatriz(mat); multiplicaColumnas(mat, rand() % n, productos); mostrarSumaProductos(productos); } generarMatriz(float **m) { int i, j; m = (float**) malloc(4*5 *sizeof(float)); randomize(); for(i=0; i<4; i++){ for(j=0; j<5; j++) (int) *(m + i*5 +j) = rand() + rand() /100; } } multiplicaColumnas(float **m, int ncolum, float *vp) { int i; vp = (float *)malloc(5* sizeof(float)); for(i=0; i<4; i++) // *vp++ = (*(m+ i*5)) * (*(m + i*5 + ncolum)); vp = m[0] * m[ncolum]; vp++; } mostrarSumaProductos(float *v) { int i, suma = 0; for(i=0; i< 4; i++) suma += *v; *v++; printf("%f\n", suma); } Si puedes echale un vistazo, y me dices si es que puedo suprimir el randomize,o no.Porqe es que la estoy compilando en linux, y el error, que me da es un que dice q no reconoce randomize. Por fa, si puedes contestame. Gracias
67
« en: Martes 2 de Noviembre de 2004, 18:34 »
Hola tengo un problemilla, estoy haciendo un ejercicio de C, que va sobre estructura de un paciente, y al compilarlo me da error, en lista, dice que no es de tipo estructura. Yo no se donde está el problema, si alquien puede ayudarme, aquie le pongo el código.
/*Desarrolla un programa en C que use una estructra para la siguiente informacion sobre un paciente de un hospital:nomre, direccion, fecha de nacimiento, sexo, dia de visita y problema medico. El program deve tener una funcion para entrada de los datos de un paciente, guardar los diversos pacientes en un array y mostrar los pacientes cuyo dia de visita sea uno determinado. */ <!--xc1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>XCODE </td></tr><tr><td id='XCODE'><!--exc1-->
#include <stdio.h> #include <stdlib.h>
#define TAM 200
struct paciente{ char *nombre; char *direccion; char fecha [10]; char sexo; //V o H char diavisita [10]; char *problema; }; main(){ char dia [10]; struct paciente *lista; tomaDatos(lista); printf("Intrpoduzca la fecha de la consulta: (dd/mm/aaaa) "); gets(dia); mostrarConsulta(dia, lista); } tomaDatos(struct paciente *lista) { int i; char buffer [80]; lista = (struct paciente*) malloc(TAM*sizeof(struct paciente)); printf(" Entrada de datos de los pacientes\n"); printf("============================= ==============\n"); for(i=0; i < TAM; i++) { printf("Nombre del paciente: \n"); gets(buffer); lista[i]->nombre = malloc(strlen(buffer)+1); strcpy(lista[i]->nombre, buffer); printf("Direccion del paciente: \n"); gets(buffer); lista[i]->direccion = malloc(strlen(buffer)+1); strcpy(lista[i]->direccion, buffer); printf("Fecha de nacimiento (dd/mm/aaaa): \n"); gets(lista[i]->fecha); printf("Sexo del paciente:\n"); lista[i]->sexo = getche(); printf("Dia de visita (dd/mm/aaaa): \n"); gets(lista[i]->diavisita); printf("Problema medico del paciente: \n"); gets(buffer); lista[i]->problema = malloc(strlen(buffer)+1); strcpy(lista[i]->problema, buffer); printf("¿Desea continuar (S/N) \n"); if(getchar() == 'N') return; } } mostrarConsulta(char *dia, struct paciente* lista) { int i; printf("Pacientes con visita el dia %s\n\n", dia); printf("==================== =====================\n"); for(i=0; i<TAM; i++) if(!strcmp(dia, lista[i]->diavisita)) printf("\t%s \n". lista->nombre); }
<!--xc2--></td></tr></table><div class='postcolor'><!--exc2--> Gracias espèro una respuesta lo antes posible. Resulta que me han comentado algo asi, como q no he declarado la estructura como puntero, por eso no puedo usar las flechas, si alguien me puede decir, sobre este codigo, donde tengo el error, es q no lo veo. Gracias, saludos desde Andalucia Saludos
68
« en: Martes 2 de Noviembre de 2004, 17:58 »
Hola quisiera si alguien me puede echar una mano, es que tengo una practica e la que tengo que generar una matriz de 4 * 5 elementos, y se rellena con numeros aleatorios, pues bien, no se muy bien como funciona pero creo que es con rand(). Lo que no entiendo es poruqe se llamaa la funcion randomize(). Alguien me puede ayudar a saber como funcionan los numeros aleatorios en C. Si alguien me puede ayudar, me vendría bien, gracias.
Verás, es que el programa es en C, asi que no me sirve eso que me has puesto. Gracias de todos modos, el codigo es este:
#include <stdio.h> #include <stdlib.h>
main() { float **mat, *productos; int n; randomize(); generarMatriz(mat); multiplicaColumnas(mat, rand() % n, productos); mostrarSumaProductos(productos); }
generarMatriz(float **m) { int i, j;
m = (float**) malloc(4*5 *sizeof(float)); randomize(); for(i=0; i<4; i++){ for(j=0; j<5; j++) (int) *(m + i*5 +j) = rand() + rand() /100; } }
multiplicaColumnas(float **m, int ncolum, float *vp) { int i; vp = (float *)malloc(5* sizeof(float)); for(i=0; i<4; i++) // *vp++ = (*(m+ i*5)) * (*(m + i*5 + ncolum)); vp = m[0] * m[ncolum]; vp++; }
mostrarSumaProductos(float *v) { int i, suma = 0; for(i=0; i< 4; i++) suma += *v; *v++; printf("%f\n", suma); }
Si puedes echale un vistazo, y me dices si es que puedo suprimir el randomize,o no.Porqe es que la estoy compilando en linux, y el error, que me da es un que dice q no reconoce randomize. Por fa, si puedes contestame. Gracias
69
« en: Martes 13 de Julio de 2004, 12:51 »
Por favor, es importante, necesito si alguien puede indicarme alguna pagina, o aolgo que tenga de pVM , engo que hacer un trabajo, y no tengo material informativo bueno. Sé que este foro es de ADA, pero yo necesito saber si alguien me puede recomendar alguna pagina o algo, de PVM, tengo que hacer una practica para septiembre, y no sé como empezarla. Gracias
70
« en: Sábado 19 de Junio de 2004, 14:01 »
float ***M;
**M=(float *)malloc(sizeof(float)*i);
for(j=0;j<i;j++) { *M[j]=(float *)malloc(sizeof(float)*3); for(k=0;k<d[j].numero_anyo;k++) M[j][k]=(float*)malloc(sizeof(float)*5); } i es la cantidad de alumnos
asi obtendrias una una matriz de M[3][5]
si fuesen 10 alumnos la matriz seria M[10][3][5]
espero que me entiendas, pones los * donde estan los que te mando yo....
espero que te sirva Gracias por tu ayuda eres un cielo. Me está sirviendo de mucho. Saludos Mercedes Hola aqui estoy de nuevo, he tardado en contestarte, porque he estado muy liada con los examenes, veras aqui tengo el codigo entero de todo lo que tu me dijiste, pero no me compila bien.Por favor, si puedes ayudarme, necesito esta practica, para mi examen, tengo que comprenderla bien, y saberla hacer, y estoy super apurada.Porque me resulta de muy dificil comprension. Gracias por todo. Saludos Mercedes #include<stdio.h> #include<string.h> #include<ctype.h> #include<conio.h> struct alumno { char DNI[10]; char nombre[25]; char apellidos[50]; int numero_agno; }; typedef struct alumno DATOSALUMNO; main() { FILE *fp; FILE *ficbin; DATOSALUMNO *d; char car; char dni[10]; int i,j,k; char nombre[25]; char apellidos[50]; int numero_agno; if((fp=fopen("alumnos.txt", "r"))== NULL) { printf("El fichero alumnos.txt no existe\n"); //abrimos el fichero texto para lectura getch(); return -1; } else { i= 0; while(!feof(fp))//cuenta cuantos alumnos hay en el archivo { fscanf(fp, "%d %s", &j, dni); /*j sera para el numero identificativo*/ i++; /*i cuenta las filas*/ } d = (DATOSALUMNO*)malloc(sizeof(DATOSALUMNO)*i); // crea una estructura de //tipo puntero //para guardar los alumnos fseek(fp, 0, SEEK_SET); //posiciona el puntero for(j=0; j<i; j++) //inicializa la estructura a 0 { d[j].DNI[0] = '\0'; d[j].nombre[0] = '\0'; d[j].apellidos[0] = '\0'; d[j].numero_agno = '\0'; } i = 0; /*cuenta las filas*/ while(!feof(fp)) //coloca los datos en la estructura { fscanf(fp, "%d %s", &j, d .DNI); i++; } fclose(fp); if((ficbin =fopen("alumnos.bin", "wb"))== NULL) { printf("El fichero no se puede crear\n"); //abrimos el fichero texto para lectura getch(); return -1; } else { for(j=0;j<i;j++)//pide los datos restantes { system("clear"); fflush(stdin); printf("Datos del alumnos con DNI: %s\n\n",d[j].DNI); printf("Introduzca los Apellidos: "); gets(d[j].apellidos); fflush(stdin); printf("Introduzca el Nombre: "); gets(d[j].nombre); fflush(stdin); printf("Introduzca el Numero de años: "); scanf("%d",&d[j].numero_agno); fflush(stdin); fwrite(&d, sizeof(DATOSALUMNO), 1, ficbin); /*guarda los datos en un archivo binario*/ }
} fclose(ficbin); free(d);
}
float ***M; **M=(float *)malloc(sizeof(float) *i);
(for j= 0; j<i; j++) { *M[j] = (float)malloc(sizeof(float)*3); for(k=0; k<d[j].numero_agno; k++) M[j][k]=(float*)malloc(sizeof(float)*5); } /*i es la cantidad de alumnos M[3][5]*/ /*M[5][2][3] seria la 4ºasignatura del 3º año del sexto alumno*/
71
« en: Jueves 10 de Junio de 2004, 17:39 »
Siento no serte mas util, pero como ya e dixo, yo suelo trabajar con ficheros d acceso directo(fwrite,fread,fseek y demas) y clarro lo mismo k estas haciendo tu yo lo haria con un planteamiento totalmente distinto, controlando el numero de registros y demas, a ver si hay suerte y ayuda alguien mas... un saludo.
P.D: Me parecio leer por ahi k eras andaluza... yo tb lo soy Hola gracias de todos modos, si que soy andaluza, de Córdoba. Jeje. Ya somos dos andaluces. Gracias por tu ayuda, siento que no me hayas podido ayudar más porque el método que tú usas es distinto.No pasa nada. Saludos
72
« en: Jueves 10 de Junio de 2004, 13:53 »
Hola
disculpa la tardanza
lo de la matriz es algo asi
M[a][c]
donde a es por el numero del alumno donde b es por el numero de periodo(1 a 3 o sea para los indices de 0 a 2) donde c es la nota de uno de los 5
ejemplo
M[0][0][0] //es la nota de la primera asignatura, del primer alumno, en el primer periodo M[0][0][1]//es la nota de la segunda asignatura, del primer alumno, en el primer periodo
espero que me entiendas.
lo que podrias hacer para validar que el periodo sea de 1 a 3 es cuando te ingresen algo diferente lo pides de nuevo o quiebras el ciclo con un break Hola muchas gracias por toda la ayuda que me estás prestando, verás he estado de examenes y por eso no podia ver lo que me mandaste con tranquilidad. Aqui he intentdo compilarlo y no me deja, te pongo el codigo, y me dices que tal, si es que tengo algun error. Ok?. Muchas gracias. Mercedes. #include<stdio.h> #include<string.h> #include<ctype.h> #include<conio.h> struct alumno { char DNI[10]; char nombre[25]; char apellidos[50]; int numero_agno; }; typedef struct alumno DATOSALUMNO; main() { FILE *fp; FILE *ficbin; DATOSALUMNO *d; char car; char dni[10]; int i,j; char nombre[25]; char apellidos[50]; int numero_agno; if((fp=fopen("alumnos.txt", "r"))== NULL) { printf("El fichero alumnos.txt no existe\n"); //abrimos el fichero texto para lectura getch(); return -1; } else { i= 0; while(!feof(fp))//cuenta cuantos alumnos hay en el archivo { fscanf(fp, "%d %s", &j, dni); /*j sera para el numero identificativo*/ i++; /*i cuenta las filas*/ } d = (DATOSALUMNO*)malloc(sizeof(DATOSALUMNO)*i); // crea una estructura de //tipo puntero //para guardar los alumnos fseek(fp, 0, SEEK_SET); //posiciona el puntero for(j=0; j<i; j++) //inicializa la estructura a 0 { d[j].DNI[0] = '\0'; d[j].nombre[0] = '\0'; d[j].apellidos[0] = '\0'; d[j].numero_agno = '\0'; } i = 0; /*cuenta las filas*/ while(!feof(fp)) //coloca los datos en la estructura { fscanf(fp, "%d %s", &j, d .DNI); i++; } fclose(fp); if((ficbin =fopen("alumnos.bin", "wb"))== NULL) { printf("El fichero no se puede crear\n"); //abrimos el fichero texto para lectura getch(); return -1; } else { for(j=0;j<i;j++)//pide los datos restantes { system("clear"); fflush(stdin); printf("Datos del alumnos con DNI: %s\n\n",d[j].DNI); printf("Introduzca los Apellidos: "); gets(d[j].apellidos); fflush(stdin); printf("Introduzca el Nombre: "); gets(d[j].nombre); fflush(stdin); printf("Introduzca el Numero de años: "); scanf("%d",&d[j].numero_agno); fflush(stdin); fwrite(&d, sizeof(DATOSALUMNO), 1, ficbin); /*guarda los datos en un archivo binario*/ }
fclose(ficbin); free(d); }
}
Por favor, mira a ver porque no me compila bien.
73
« en: Jueves 10 de Junio de 2004, 13:30 »
Hola otra vez, yo siempre k trabajo con ficheros, lo hago controlando el numero de registros y haciendolo por acceso directo, pòr eso no estoy muy puesto en lo de controlar el fin de fichero y demas. Me e dado cuenta k el problema de k se repite tu bucle esta en uno de los while -> while((car = fgetc(fp)) != '\n') debido a este bucle se repite siempre, kitande este bucle y el if k le sigue -> (if(isspace (car) == 0)) ya funciona bien en lo k a no repetir los bucles se refiere, pero claro supongo k en tu caso estas dos sentencias seran necesarias, y la verdad es k no se para k sirven. Espero k al menos te sirva de algo... Veras el bucle de while((car = fgetc(fp)) = '\n') está puesto para que lea del fichero de texto. y luego si car es un espacio en blanco entonces haga todo lo que viene debajo. Yo sé que el error de que se me repitan los bucles está ahi. Pero es que no sé como ponerlo para la solucionar el problema. Si los quito no me hacen lo que quiero. Saludos Mercedes. Gracias
74
« en: Miércoles 9 de Junio de 2004, 21:37 »
float ***M;
**M=(float *)malloc(sizeof(float)*i);
for(j=0;j<i;j++) { *M[j]=(float *)malloc(sizeof(float)*3); for(k=0;k<d[j].numero_anyo;k++) M[j][k]=(float*)malloc(sizeof(float)*5); } i es la cantidad de alumnos
asi obtendrias una una matriz de M[3][5]
si fuesen 10 alumnos la matriz seria M[10][3][5]
espero que me entiendas, pones los * donde estan los que te mando yo....
espero que te sirva Gracias por tu ayuda eres un cielo. Me está sirviendo de mucho. Saludos Mercedes
75
« en: Miércoles 9 de Junio de 2004, 11:33 »
Es que no entiendo para que sirve la condicion de que sea menor de 3 años... que quieres exactamente que haga cuando es menor? En el codigo original no es k no salga del bucle, es k sale del primer while, pero no del segundo (el de feof). ¿podrias especificar lo k pretendes al controlar lo de los tres años? Hola, ya te dije lo que significaba lo de los 3 años, por favor, contestame, que aun no me has contestado, acabo de llegar de un examen. Luego vere si me has contestado, me voy a la camal, que estoy molida. Gracias, saludos.
|
|
|