Seguimos buscando a Arshak. Ayudanos compartiendo!
Encuesta no oficial de docentes
Resultados de la encuesta no oficial de docentes
Probaste el SIGA Helper?

Donar $100 Donar $200 Donar $500 Donar mensualmente


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
[Info 1][aporte] final 16-02-2012
Autor Mensaje
guilles Sin conexión
Campeon del cubo Rubik
Con estado :)
****

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 105
Agradecimientos dados: 26
Agradecimientos: 24 en 12 posts
Registro en: Feb 2012
Mensaje: #1
[Info 1][aporte] final 16-02-2012 Finales Informática I (Electrónica)
Así era el final que tomaron, no recuerdo los nombres de las funciones y de algunas cosas pero el planteo era el mismo.

1)
dada la siguiente funcion
int funcion1(char*b, int a, float b);
A) ¿Que se aloja en el stack(pila) de la función?
B)Que variable/es es/son accesibles desde el procedimiento que invoca a la funcion

2) ¿Que es un filesystem?¿Que es un nodo y que tipos de nodos conoce?¿Para que sirve montar un filesystem?¿Con que comando se hace?

3)Dibuje un diagrama de como generar un programa a partir de uno o varios codigos fuente.
a)Que contiene el archivo "stdio.h" ¿Para que sirve incluir un header en nustreo programa?¿como obtengo el código de las funciones scanf y printf?

4)
char caracter;
char *pt1;
char *pt2;

luego te pasaban la direcciones de memoria de cada variable y en el char estaba guardada la letra A

char caracter="A";
pt1=&caratcter;
pt2=&pt1;

a) era llenar un cuadro con el contenido de los dos punteros.
b)imprimir caracter usando pt1.
c)idem b) utilizando pt2.

PRACTICA

Te daban un Nodo de una lista doblemente enlazada

typedef struct Nodo{
float tiempo;
float valor_muestra;
Nodo *previo;
Nodo *anterior;
}

Luego tenias una funcion, que lee de un archivo pares de valores de un electrocardiograma, y a la cual le pasas el nombre del archivo y un puntero a Nodo.

float obtener_promedio(Nodo *lst,char *filename);

La función inicializaba una lista(en realidad era una especie de cola, porque no estaba ordenada) y la llenaba con los valores que leia del archivo.
Luego de esto determinaba los valores máximos y después de identificarlos calculaba el tiempo promedio que había entre valores máximos consecutivos, y ese promedio era el valor de retorno.
Te pedía que dividieras la función en, como mínimo, 3 funciones diferentes.

Un valor_muestra se consideraba máximo cuando:
1)valor_muestra>1250
y
2)Los 5 valores anteriores y los 5 posteriores eran menores a 1250



ESPERO QUE LES SIRVA, ES MI PRIMER APORTE thumbup3
(Este mensaje fue modificado por última vez en: 18-02-2012 15:27 por guilles.)
18-02-2012 15:23
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
JulianD Sin conexión
Colaborador
~`☼`~
********

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 2.431
Agradecimientos dados: 271
Agradecimientos: 911 en 109 posts
Registro en: Feb 2011
Mensaje: #2
RE: [Info 1][aporte] final 16-02-2012
Buen aporte, se agradece aunque todavia no la regularize!

Te gusta el handball, sos de electronica y estas preparando info y fisica..
Creo que se quien sos.
Tocas la armonica? =P

[Imagen: 2r27ldw.jpg]
18-02-2012 15:33
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
guilles Sin conexión
Campeon del cubo Rubik
Con estado :)
****

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 105
Agradecimientos dados: 26
Agradecimientos: 24 en 12 posts
Registro en: Feb 2012
Mensaje: #3
RE: [Info 1][aporte] final 16-02-2012
jajaja si yo tambien te ubico! jaja Suerte con info,el miércoles me tiro a física! este parcial lo aprobe!

una alclaracion! en el ejercicio 4! el puntero 2 (pt2) es un puntero doble a char!
char **pt2;
18-02-2012 21:46
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
anonimail Sin conexión
Campeon del cubo Rubik

****

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 111
Agradecimientos dados: 47
Agradecimientos: 98 en 22 posts
Registro en: Feb 2012
Mensaje: #4
RE: [Info 1][aporte] final 16-02-2012
Buen aporte, Acá dejo una solución a la práctica.



#include <stdio.h>
#include <string.h>
#include <stdlib.h>

typedef struct t_nodo {
float tiempo;
float valor_muestra;
struct t_nodo *sig;
struct t_nodo *ant;
}NODO;

typedef struct t_info{
NODO *inicio;
NODO *fin;
}INFO;

float Obtener_medidas (INFO *, char *);
void Abrir (INFO *, char *);
void Crear (INFO *, char *);
int Calcular (INFO *);
int Analisis (INFO *, NODO *);

int main(void)
{
INFO Lista;
Lista.inicio = NULL;
Lista.fin = NULL;

float promedio;
char filename[30];

printf ("Archivo: ");
scanf ("%s", filename);

promedio = Obtener_medidas (&Lista, filename);

printf ("Promedio: %f\n", promedio);
}

float Obtener_medidas (INFO *Lista, char *filename)
{
Abrir (Lista, filename);

NODO *aux;
NODO *auxiliar=NULL;
float promedio=0;
int tiempos=0;

for (aux=Lista->inicio; aux!=NULL; aux=aux->sig)
{
if (aux->valor_muestra>1250 && (Analisis(Lista, aux) == 0))
{
if (auxiliar == NULL)
{
auxiliar = aux;
}
else
{
promedio += (aux->tiempo - auxiliar->tiempo);
auxiliar = aux;
tiempos++;
}
}
}
if (tiempos!=0)
{
return promedio/tiempos;
}
else
{
printf ("ERROR: No se han encontrado picos\n");
exit(0);
}
}

void Abrir (INFO *Lista, char *filename)
{
FILE *file;
char buf[100];

file = fopen (filename, "r");

while (fgets(buf, sizeof(buf), file) != NULL)
{
Crear (Lista, buf);
}
fclose(file);
}

void Crear (INFO *Lista, char *buf)
{
NODO *nuevo; nuevo = malloc (sizeof(NODO));
if (nuevo!=NULL)
{
nuevo->sig=NULL; nuevo->ant=NULL;
nuevo->tiempo = atof(strtok(buf, ","));
nuevo->valor_muestra = atof(strtok(NULL, "\n"));
if (Lista->inicio == NULL && Lista->fin == NULL)
{
Lista->inicio = nuevo; Lista->fin = nuevo;
}
else
{
Lista->fin->sig = nuevo; nuevo->ant = Lista->fin;
Lista->fin = nuevo;
}
}
else
{
printf ("ERROR: Memoria insuficiente\n");
exit(0);
}
}

int Analisis (INFO *Lista, NODO *aux)
{
NODO *aux1, *aux2;
int x=0, y=0, z=0;

aux1=aux->sig;
aux2=aux->ant;
for (z=0; z<5; z++)
{
if (aux1!=NULL)
{
if (aux1->valor_muestra<1250)
{
x++;
}
aux1=aux1->sig;
}
if (aux2!=NULL)
{
if (aux2->valor_muestra<1250)
{
y++;
}
aux2=aux2->ant;
}
}
if (x==5 && y==5){return 0;}
else {return 1;}
}


16-02-2013 15:33
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] anonimail recibio 1 Gracias por este post
JulianD (16-02-2013)
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 1 invitado(s)