• No se han encontrado resultados

Laboratorio de Programación II. Grupo C PRACTICA 4: PUNTEROS(II) EJERCICIO GUIADOS Ejercicio 1 En este ejercicio se va a implementar un programa que p

N/A
N/A
Protected

Academic year: 2021

Share "Laboratorio de Programación II. Grupo C PRACTICA 4: PUNTEROS(II) EJERCICIO GUIADOS Ejercicio 1 En este ejercicio se va a implementar un programa que p"

Copied!
6
0
0

Texto completo

(1)

PRACTICA 4:

PRACTICA 4: PUNTEROS(IIPUNTEROS(II)) EJERCICIO GUIADOS 

EJERCICIO GUIADOS  Ejercicio 1

Ejercicio 1

En este ejercicio se va a implementar un programa que permite al usuario introducir un En este ejercicio se va a implementar un programa que permite al usuario introducir un número determinado de palabras y da como resultado la impresión de las palabras por  número determinado de palabras y da como resultado la impresión de las palabras por  consola ordenadas de forma descendente. Para ello se va a utilizar la función

consola ordenadas de forma descendente. Para ello se va a utilizar la función strcmp(char*, strcmp(char*,  char*)

 char*) de la librería estándar del C++ que permite comparar dos cadenas de caracteres.de la librería estándar del C++ que permite comparar dos cadenas de caracteres.

Dicha función está declarada en el fichero

Dicha función está declarada en el fichero string.h string.h..

Escribir el siguiente código:

Escribir el siguiente código:

#include <iostream.h>

#include <iostream.h>

#include <string.h>

#include <string.h>

void

void Ordena(Ordena(charchar **,**, intint););

void

void ImprimePalabras(ImprimePalabras(charchar **,**, intint););

char

char** ReservayPide(** ReservayPide(intint););

void

void Libera(Libera( charchar **,**, intint););

void

void main( main(voidvoid)) {

{ char

char **palabras;**palabras;

int int num;num;

cout <<

cout << "Numero de palabras:""Numero de palabras:";; cin >> num;

cin >> num;

palabras = ReservayPide(num);

palabras = ReservayPide(num);

cout <<

cout << "Palabras Introducidas: ""Palabras Introducidas: " << endl;<< endl;

ImprimePalabras(palabras,num);

ImprimePalabras(palabras,num);

Ordena(palabras,num);

Ordena(palabras,num);

cout <<

cout << "Palabras Ordenadas: ""Palabras Ordenadas: " << endl;<< endl;

ImprimePalabras(palabras,num);

ImprimePalabras(palabras,num);

} } char

char** ReservayPide(** ReservayPide(intint num)num) {

{ char

char tmp[120];tmp[120];

char

char **words;**words;

words =

words = new charnew char*[num];*[num];

for

for ((intint i=0;i<num;i++){i=0;i<num;i++){

cout <<

cout << "Introduce la ""Introduce la " << i+1 <<<< i+1 << " palabra:"" palabra:";; cin >> tmp;

cin >> tmp;

words[i] =

words[i] = new charnew char[ strlen(tmp)+1 ];[ strlen(tmp)+1 ];

strcpy( words[i], tmp);

strcpy( words[i], tmp);

} } return

return words;words; //devuelve matriz//devuelve matriz }

} void

void Ordena(Ordena(charchar **words,**words, intint num)num) {

{ for

for ((intint i=0;i<num-1;i++){i=0;i<num-1;i++){

Laboratorio de Programación II. Grupo A Laboratorio de Programación II. Grupo A 3

3 for

for ((intint j=i+1;j<num;j++){j=i+1;j<num;j++){

if

if ( strcmp( words[i], words[j]) < 0) {( strcmp( words[i], words[j]) < 0) { //al cambiar hay que destruir los vectores //al cambiar hay que destruir los vectores int

int len1 = strlen(words[i]);len1 = strlen(words[i]);

int

int len2 = strlen(words[j]);len2 = strlen(words[j]);

char

char *tmp1 =*tmp1 = new charnew char[len1 +1];[len1 +1];

char

char *tmp2 =*tmp2 = new charnew char[len2 +1];[len2 +1];

strcpy(tmp1,words[i]);

strcpy(tmp1,words[i]); //copiar antes de borrar//copiar antes de borrar strcpy(tmp2,words[j]);

strcpy(tmp2,words[j]);

delete [] words[i];

delete [] words[i]; //eliminar vectores//eliminar vectores delete [] words[j];

delete [] words[j];

(2)

words[i] =

words[i] = new charnew char[len2+1];[len2+1]; //nuevos vectores//nuevos vectores words[j] =

words[j] = new charnew char[len1+1];[len1+1];

strcpy(words[i],tmp2);

strcpy(words[i],tmp2); //Permutar las cadenas//Permutar las cadenas strcpy(words[j],tmp1);

strcpy(words[j],tmp1);

delete [] tmp1;

delete [] tmp1; //eliminar vectores temporales//eliminar vectores temporales delete [] tmp2;

delete [] tmp2;

} } } } } } } } void

void ImprimePalabras(ImprimePalabras(charchar ** words,** words, intint Num)Num) {

{ for

for ((intint i=0;i<Num;i++){i=0;i<Num;i++){

cout <<

cout << "\t""\t" << words[i] << endl;<< words[i] << endl;

} } } } void

void Libera(Libera( charchar **words,**words, intint Num)Num) {

{ for

for ((intint i=0;i<Num;i++) delete [] words[i];i=0;i<Num;i++) delete [] words[i];

delete [] words;

delete [] words;

} }

Como se puede ver en el código del programa , se aprovechan las ventajas de las funciones Como se puede ver en el código del programa , se aprovechan las ventajas de las funciones  para dar mudularidad al ejercicio, con lo cual se logra que la función principal

 para dar mudularidad al ejercicio, con lo cual se logra que la función principal main() main()tengatenga  poco código, sólo incluye las llamadas a las funciones. Se han creado 4 funciones:

 poco código, sólo incluye las llamadas a las funciones. Se han creado 4 funciones:

1. Función

1. Función  char** ReservayPide(int num)  char** ReservayPide(int num): Esta función reserva memoria para almacenar : Esta función reserva memoria para almacenar  las cadenas y pide al mismo tiempo los datos de cada palabra. Devuelve el vector de las cadenas y pide al mismo tiempo los datos de cada palabra. Devuelve el vector de cadenas.

cadenas.

2. Función

2. Función Ordena(char **, int)Ordena(char **, int): Esta función se encarga de ordenar de forma descendente: Esta función se encarga de ordenar de forma descendente las palabras que hay en el vector de cadenas. Para ello utiliza la función strcmp(...). Notar  las palabras que hay en el vector de cadenas. Para ello utiliza la función strcmp(...). Notar  que si hay que cambiar las palabras, se deben copiar las cadenas primero, luego borrar el que si hay que cambiar las palabras, se deben copiar las cadenas primero, luego borrar el espacio que cada cadena ocupa (esto debido a que la longitud de las cadenas pueden ser  espacio que cada cadena ocupa (esto debido a que la longitud de las cadenas pueden ser  diferentes). Finalmente se reserva nuevamente memoria para almacenar las cadenas diferentes). Finalmente se reserva nuevamente memoria para almacenar las cadenas cambiadas.

cambiadas.

3. Funcion

3. Funcion Imprime(char **, int) Imprime(char **, int): Se encarga de imprimir a la consola las cadenas que hay: Se encarga de imprimir a la consola las cadenas que hay en el vector.

en el vector.

4. Función

4. Función Libera(char **, int) Libera(char **, int): Su función es liberar la memoria utilizada.: Su función es liberar la memoria utilizada.

Ejercicio 2  Ejercicio 2 

Para reservar memoria dinámica para matrices se

Para reservar memoria dinámica para matrices se siguen los siguientes pasos:siguen los siguientes pasos:

a. Se crea un puntero a

a. Se crea un puntero a punteros del tipo de datos:punteros del tipo de datos: float **datos; float **datos;

 b. Se reserva memoria para el array de

 b. Se reserva memoria para el array de filas:filas: datos = new float*[fil]; datos = new float*[fil];

c. Se hace un bucle para

c. Se hace un bucle para reservar memoria parareservar memoria para col  col columnas de cada fila:columnas de cada fila:

 for (int i=0;i<fil;i++) datos[i] = new

 for (int i=0;i<fil;i++) datos[i] = new float[col];float[col];

d. Creada la matriz, se puede trabajar con

d. Creada la matriz, se puede trabajar con ella con los índices y los corchetes [].ella con los índices y los corchetes [].

e. Finalmente, se debe hacer otro bucle para liberar la memoria de cada fila y la asignada al e. Finalmente, se debe hacer otro bucle para liberar la memoria de cada fila y la asignada al vector de filas.

vector de filas.

En el siguiente ejemplo se ve cómo asignar memoria a una matriz de

En el siguiente ejemplo se ve cómo asignar memoria a una matriz de fil  fil  x x col  col ::

(3)

{ {int

int fil = 8;fil = 8; //numero de filas//numero de filas int

int col = 5;col = 5; //numero de columnas//numero de columnas float

float **datos;**datos;

datos =

datos = new floatnew float*[fil];*[fil]; //vector filas//vector filas

//reserva memoria para las columnas de cada fila //reserva memoria para las columnas de cada fila for

for ((intint i=0;i<fil;i++)i=0;i<fil;i++) datos[i] =

datos[i] = new floatnew float[col];[col];

//ya puedes usar la matriz //ya puedes usar la matriz for

for ((intint f=0;f<fil;f++)f=0;f<fil;f++) for

for ((intint c=0;c<col;c++) datos[f][c] = (c=0;c<col;c++) datos[f][c] = (floatfloat)rand()/RAND_MAX;)rand()/RAND_MAX;

//imprime los valores //imprime los valores for

for ( f=0;f<fil;f++){( f=0;f<fil;f++){

for

for ((intint c=0;c<col;c++) {c=0;c<col;c++) { cout << f <<

cout << f << ",""," << c <<<< c << ":"":"<<datos[f][c]<<<<datos[f][c]<< " "" ";; }

}

cout <<endl;

cout <<endl;

} }

//liberar memoria //liberar memoria for

for (f=0;f<fil;f++) delete datos[f];(f=0;f<fil;f++) delete datos[f]; //libera filas//libera filas delete [] datos;

delete [] datos; //libera vector//libera vector }

}

Ejercicio 3  Ejercicio 3 

En este ejercicio se va a crear un

En este ejercicio se va a crear un programa capaz de leer desde el teclado un conjunto de frases,programa capaz de leer desde el teclado un conjunto de frases, almacenarlas en un "

almacenarlas en un "vector de punteros a caracteresvector de punteros a caracteres". Cada letra (". Cada letra ( char char) es "tratado como si) es "tratado como si fuera un número" (una casilla) y por lo tanto almacenar una frase se asemeja a almacenar una fuera un número" (una casilla) y por lo tanto almacenar una frase se asemeja a almacenar una fila de una matriz. Por lo tanto se necesita un doble puntero (

fila de una matriz. Por lo tanto se necesita un doble puntero (  char **pfrases  char **pfrases) para poder ) para poder  almacenar un conjunto de frases o palabras. En esta "matriz de letras" el número de columnas almacenar un conjunto de frases o palabras. En esta "matriz de letras" el número de columnas   puede variar para cada fila (es

  puede variar para cada fila (es strlen(frase)+1 strlen(frase)+1). Utilizando una única llamada a la función). Utilizando una única llamada a la función  strcpy()

 strcpy() es posible rellenar una fila completa de dichaes posible rellenar una fila completa de dicha matriz de caracteres matriz de caracteres. Para utilizar dicha. Para utilizar dicha función es necesario incluir el fichero

función es necesario incluir el fichero string.h string.h..

// fichero frases.cpp // fichero frases.cpp

#include <iostream.h>

#include <iostream.h>

#include <string.h>

#include <string.h>

#include <stdio.h>

#include <stdio.h> //para gets()//para gets() void

void main(main(voidvoid)) {

{ char

char frase[120];frase[120];

char

char** pfrases;** pfrases;

int

int NumFrases;NumFrases;

cout <<

cout << "Cuantas frases desea almacenar:""Cuantas frases desea almacenar:";; cin >> NumFrases;

cin >> NumFrases;

pfrases =

pfrases = new charnew char*[NumFrases];*[NumFrases]; //Espacio para NumFrases//Espacio para NumFrases //pedir datos

//pedir datos for

for ((intint i=0;i<NumFrases;i++) {i=0;i<NumFrases;i++) { cout <<

cout << "Escriba la frase ""Escriba la frase " << i+1 <<<< i+1 << ":"":" << flush;<< flush;

gets(frase);

gets(frase);

// +1 porque strlen no guarda para el '\0' // +1 porque strlen no guarda para el '\0' pfrases[i] =

pfrases[i] = new charnew char[strlen(frase)+1];[strlen(frase)+1];

strcpy(pfrases[i], frase);

strcpy(pfrases[i], frase);

} }

//sacar datos por consola //sacar datos por consola for

for (i=0;i<NumFrases;i++)(i=0;i<NumFrases;i++) cout <<

cout << "Frase ""Frase " << i+1 <<<< i+1 << ":"":" << pfrases[i] << endl;<< pfrases[i] << endl;

//liberar memoria //liberar memoria for

for (i=0;i<NumFrases;i++) delete pfrases[i];(i=0;i<NumFrases;i++) delete pfrases[i];

delete [] pfrases;

delete [] pfrases;

} }

(4)

EJERCICIO PROPUESTOS  EJERCICIO PROPUESTOS  Ejercicio 1

Ejercicio 1

Se pide crear un programa que haciendo uso de la reserva dinámica de memoria almacene un Se pide crear un programa que haciendo uso de la reserva dinámica de memoria almacene un número determinado de valores (obtenidos de forma aleatoria, entre 0 y 100) y los ordene de número determinado de valores (obtenidos de forma aleatoria, entre 0 y 100) y los ordene de mayor a menor. El código para obtener los números y para la reserva dinámica de memoria es mayor a menor. El código para obtener los números y para la reserva dinámica de memoria es dado, y el

dado, y el resto debe ser resto debe ser implemeimplementado.ntado.

//fichero ordena.cpp //fichero ordena.cpp

// ordena usando memoria dinamica // ordena usando memoria dinamica

#include <iostream.h>

#include <iostream.h>

#include <stdlib.h>

#include <stdlib.h> //para rand()//para rand() void

void main(main(voidvoid)) {

{int

int Num;Num; //Numero de datos//Numero de datos int

int *datos;*datos; //puntero a int//puntero a int cout <<

cout << "Cuantos numeros deseas generar:""Cuantos numeros deseas generar:";; cin >> Num;

cin >> Num;

//asignacion de memoria //asignacion de memoria datos =

datos = new intnew int[Num];[Num];

if

if (datos == NULL) cout <<(datos == NULL) cout << "Error""Error";; //Llenar el vector

//Llenar el vector for

for ((intint i=0;i<Num;i++){i=0;i<Num;i++){

datos[i] = rand() * 100 /

datos[i] = rand() * 100 / RAND_MAX;RAND_MAX;

} }

//ordena los datos -> Hacer aquí el

//ordena los datos -> Hacer aquí el algoritmoalgoritmo . . .

. . . . . . . . .

//imprime los datos ordenados //imprime los datos ordenados for

for (i=0;i<Num;i++) cout << i <<(i=0;i<Num;i++) cout << i << ":"":" << datos[i] <<endl;<< datos[i] <<endl;

//liberar memoria //liberar memoria delete [] datos;

delete [] datos;

} }

Ejercicio 2  Ejercicio 2 

Se pide crear un programa que pida una serie de números al usuario y halle el máximo, el Se pide crear un programa que pida una serie de números al usuario y halle el máximo, el mínimo y la media aritmética de ellos. Para ello se debe crear una variable puntero tipo mínimo y la media aritmética de ellos. Para ello se debe crear una variable puntero tipo  float

 float , pedir al usuario que introduzca el número de datos, y después los datos a calcular., pedir al usuario que introduzca el número de datos, y después los datos a calcular.

Recordar que se debe reservar memoria de forma dinámica para almacenar el vector de Recordar que se debe reservar memoria de forma dinámica para almacenar el vector de dato. La salida del programa debe ser algo así:

dato. La salida del programa debe ser algo así:

Numero de datos: 10 Numero de datos: 10 Máximo: 25

Máximo: 25 Minimo: 4 Minimo: 4

Media Aritmética: 14.6 Media Aritmética: 14.6

Ejercicio 3  Ejercicio 3 

Basándose en el ejercicio 2) guiado, se pide realizar un programa que calcule el producto de Basándose en el ejercicio 2) guiado, se pide realizar un programa que calcule el producto de dos matrices MatA y MatB con asignación dinámica de memo

dos matrices MatA y MatB con asignación dinámica de memoria. Los pasos a ria. Los pasos a seguir son:seguir son:

1- Crear dos punteros a punteros.

1- Crear dos punteros a punteros.

2- Pedir por teclado las dimensiones de la matriz

2- Pedir por teclado las dimensiones de la matriz MatAMatA(filas y columnas).(filas y columnas).

3- Pedir por teclado sólo las columnas de la matriz

3- Pedir por teclado sólo las columnas de la matriz MatBMatB, ya que las , ya que las filas tienen que ser filas tienen que ser  igual a las columnas de

igual a las columnas de MatAMatA para la  para la multiplicacimultiplicación.ón.

4- Realizar la reserva

4- Realizar la reserva dinámica de memoria, usando el operador dinámica de memoria, usando el operador  new. new.

5- Pedir los datos de las dos

5- Pedir los datos de las dos matricesmatricesMatAMatAyyMatBMatB..

6- Realizar la

6- Realizar la multiplicmultiplicación en dos buclesación en dos bucles for for anidados.anidados.

(5)

Ejercicio 4  Ejercicio 4 

En este ejercicio se va evaluar un

En este ejercicio se va evaluar un polinomio de cualquier grado polinomio de cualquier grado::

P(X)=a

P(X)=a

00

+a +a

11

 x+a  x+a

22

 x  x

22

+a +a

33

 x  x

33

+ +

+a +a

nn

 x  x

nn

Como en un principio no se sabe de qué grado va a ser este polinomio, se debe crear una Como en un principio no se sabe de qué grado va a ser este polinomio, se debe crear una variable puntero del tipo double:

variable puntero del tipo double:

double *

double *coeficientes;coeficientes;

A continuación se debe pedir el

A continuación se debe pedir el grado grado del polinomio y reservar memoria para el array dedel polinomio y reservar memoria para el array de coeficientes (utilizando el operador 

coeficientes (utilizando el operador  new new). Luego, a través de un bucle se empezará a pedir ). Luego, a través de un bucle se empezará a pedir  los coeficientes del polinomio. Finalmente se

los coeficientes del polinomio. Finalmente se  debe pedir el punto (x)  debe pedir el punto (x) en el que se va aen el que se va a evaluar el polinomio, cuyo resultado se sacará por la consola. También se debe sacar por la evaluar el polinomio, cuyo resultado se sacará por la consola. También se debe sacar por la consola el polinomio que se ha evaluado.

consola el polinomio que se ha evaluado.

La entrada y salida de datos por la consola podría ser:

La entrada y salida de datos por la consola podría ser:

>> Introduce el numero de coeficientes:

>> Introduce el numero de coeficientes: 22

>> Introduce el coeficiente 1:

>> Introduce el coeficiente 1: 2.52.5

>> Introduce el coeficiente 2:

>> Introduce el coeficiente 2: 3.53.5

>> Introduce el valor de x:

>> Introduce el valor de x: 2.02.0

>> El polinomio es:

>> El polinomio es: 2.5*X^0 + 3.5*X^12.5*X^0 + 3.5*X^1

>> El valor del polinomio en el punto

>> El valor del polinomio en el punto 2.02.0 eses 9.59.5

Ejercicio 5  Ejercicio 5 

Este ejercicio consiste en implementar un algoritmo para el cálculo de la integral definida Este ejercicio consiste en implementar un algoritmo para el cálculo de la integral definida de un polinomio entre dos puntos (A y B) dados. El

de un polinomio entre dos puntos (A y B) dados. El  polinomio debe ser de cualquier  polinomio debe ser de cualquier  grado

 grado::

P(X)=a

P(X)=a

00

+a +a

11

 x+a  x+a

22

 x  x

22

+a +a

33

 x  x

33

+ +

+a +a

nn

 x  x

nn

Los pasos a seguir son:

Los pasos a seguir son:

1. Pedir el grado del polinomio.

1. Pedir el grado del polinomio.

2. Crear un

2. Crear un array array de tipode tipo double double para albergar el polinomio (utilizar  para albergar el polinomio (utilizar  new new).).

3. Pedir los coeficientes del polinomio.

3. Pedir los coeficientes del polinomio.

4. Pedir los puntos A y B pa

4. Pedir los puntos A y B para evaluar la integral (A < B).ra evaluar la integral (A < B).

5. Pedir el número de subintervalos “ 5. Pedir el número de subintervalos “ n n”.”.

6. Sacar el valor de la integral por consola.

6. Sacar el valor de la integral por consola.

El algoritmo se basa en la división del intervalo (A, B de la figura ) en

El algoritmo se basa en la división del intervalo (A, B de la figura ) en n nsubintervalos,subintervalos, sumando las áreas de éstos. Si los

sumando las áreas de éstos. Si los subintervalos son lo suficientemente pequeños el área desubintervalos son lo suficientemente pequeños el área de cada subintervalo se puede aproximar al área de un trapecio. En definitiva, la integral se cada subintervalo se puede aproximar al área de un trapecio. En definitiva, la integral se  puede aproximar como:

 puede aproximar como:

∫ ∫ 

a a

b b

 x  x  f 

 f (( ))

∑ ∑

((f(x((f(xii)+f(x)+f(xi+1i+1)/2)*(x)/2)*(xi+1i+1-x-xii))))

(6)

Ejercicio 6  Ejercicio 6 

Este ejercicio consiste en hacer un programa que cuente cuantas veces se repiten las vocales Este ejercicio consiste en hacer un programa que cuente cuantas veces se repiten las vocales (se deben contar las mayúsculas y las minúsculas)en un texto dado por el usuario. La (se deben contar las mayúsculas y las minúsculas)en un texto dado por el usuario. La estructura del programa debe ser la siguiente:

estructura del programa debe ser la siguiente:

#include

#include <iostream.h><iostream.h>

#include

#include <string.h><string.h>

char

char *PideTexto();*PideTexto();

void

void ContarVocales(charContarVocales(char *,*, intint []);[]);

void

void Imprime(intImprime(int []);[]);

void

void main()main() {

{

char

char *texto;*texto;

int

int Num[5];Num[5];

texto = PideTexto();

texto = PideTexto();

ContarVocales(texto,Num);

ContarVocales(texto,Num);

Imprime(Num);

Imprime(Num);

delete

delete [] texto;[] texto; //libera memoria//libera memoria }

}

A continuación se explican cada una de las funciones llamadas desde

A continuación se explican cada una de las funciones llamadas desdemainmain::

1.La función

1.La función PideTexto PideTexto devuelve un puntero a la cadena que el usuario ha escrito.devuelve un puntero a la cadena que el usuario ha escrito.

2.La función

2.La función ContarVocalesContarVocales recibe elrecibe el arrayarray que contiene el texto y otro array de enteros,que contiene el texto y otro array de enteros, en el cual va a devolver cuantas veces se repite cada una de las vocales, es decir, en en el cual va a devolver cuantas veces se repite cada una de las vocales, es decir, en   Num[0] vendrán las veces que se repite la vocal

  Num[0] vendrán las veces que se repite la vocalaa , en Num[1] la vocal, en Num[1] la vocal ee y asíy así sucesivamente.

sucesivamente.

3.La función

3.La función Imprime Imprime recibe elrecibe el arrayarray de enteros e imprime en la consola lo que hade enteros e imprime en la consola lo que ha encontrado.

encontrado.

ENTREGA DE LOS EJERCICIOS ENTREGA DE LOS EJERCICIOS

La forma de entregar la práctica será a través de la asignatura virtualizada en el campus virtual. En la La forma de entregar la práctica será a través de la asignatura virtualizada en el campus virtual. En la asignatura virtualizada verás una serie de enlaces, entre ellos, hay uno titulado como prácticas. Navega sobre asignatura virtualizada verás una serie de enlaces, entre ellos, hay uno titulado como prácticas. Navega sobre dicho enlace, y verás que hay un grupo con los apellidos de los integrantes de los grupos. Dicho grupo de dicho enlace, y verás que hay un grupo con los apellidos de los integrantes de los grupos. Dicho grupo de trabajo tiene asociado una carpeta sobre la que puedes subir , eliminar o editar archivos(Accedes usando trabajo tiene asociado una carpeta sobre la que puedes subir , eliminar o editar archivos(Accedes usando Editar Archivos). Zippea el trabajo correspondiente, y dentro del zip incluye un archivo de texto en que Editar Archivos). Zippea el trabajo correspondiente, y dentro del zip incluye un archivo de texto en que aparezcan los nombres de los que formáis el grupo. Etiqueta el archivo zip con el nombre aparezcan los nombres de los que formáis el grupo. Etiqueta el archivo zip con el nombre LabnApellidoApellido.zip. Por ejemplo si Juan Martínez Martin y Silvia Pérez García están en el laboratorio LabnApellidoApellido.zip. Por ejemplo si Juan Martínez Martin y Silvia Pérez García están en el laboratorio 1, y

1, y forman forman un un grupo etiquetgrupo etiquetan su an su zip como zip como Lab1MartinezPerez.Lab1MartinezPerez.zip. A zip. A continuación continuación usa la usa la opción cargar opción cargar  que hay en la parte derecha del área donde te encuentras, y te permitirá subir archivos desde tu disco duro.

que hay en la parte derecha del área donde te encuentras, y te permitirá subir archivos desde tu disco duro.

Almacénalo en la carpeta correspondiente al grupo al

Almacénalo en la carpeta correspondiente al grupo al que perteneces.que perteneces.

Tenéis de plazo para subir la correspondiente práctica 4 hasta este viernes día 3 de Noviembre. Acabado el Tenéis de plazo para subir la correspondiente práctica 4 hasta este viernes día 3 de Noviembre. Acabado el  plazo no se podrán subir las prácticas, y se considerará como práctica no entregada. Si tienes alguna duda o  plazo no se podrán subir las prácticas, y se considerará como práctica no entregada. Si tienes alguna duda o  problema sobre el procedimiento de entrega no dudes

 problema sobre el procedimiento de entrega no dudes en preguntar.en preguntar.

Referencias

Documento similar

La Normativa de evaluación del rendimiento académico de los estudiantes y de revisión de calificaciones de la Universidad de Santiago de Compostela, aprobada por el Pleno or-

Además esta cartera de complementos de formación propios del Programa de Doc- torado se abrirá y ofertará, siempre que la condiciones del proceso docente lo permitan y asegurando que

PLAN DE NEGOCIOS DE UN RESTAURANTE QUE POSTERIORMENTE SIRVA COMO BASE PARA LA CREACIÓN DE UNA FRANQUICIA COLOMBIANA, COMERCIALIZADORA DE ALITAS DE POLLO A DOMICILIO Y EN PUNTO

saginata, se considera común en Europa del este (15), con una prevalencia mucho más baja en Europa occidental (del orden de 0.01%) (16).. Las infecciones humanas son endémicas

Gastos derivados de la recaudación de los derechos económicos de la entidad local o de sus organis- mos autónomos cuando aquélla se efectúe por otras enti- dades locales o

Volviendo a la jurisprudencia del Tribunal de Justicia, conviene recor- dar que, con el tiempo, este órgano se vio en la necesidad de determinar si los actos de los Estados

Finalizadas todas la configuraciones explicadas, pulsaremos (abajo del todo) el botón Guardar y Volver, si queremos crear otro curso; o en Guardar cambios y

Conocido es el caso de Mortimer Ternaux, autor de una Historia de la Revolución, publicada en el siglo XIX, o el todavía más significativo de Edgar Quinet, quien hace «la crítica de