GatoBooster

Lab 1 3° Semestre

Mar 16th, 2018
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.96 KB | None | 0 0
  1. //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  2. Escriba el código para la función suma, la cual recibe 3 parámetros enteros (a,b y c) y almacena en c el valor de la suma de a más b. El main del programa es el siguiente:
  3.  
  4. int main() {
  5.   int c;
  6.   suma(5,10,&c);
  7.   printf(“%d”, c); //debería imprimir 15
  8.   return 0;
  9. }
  10. _______________________________________________________________________________________________________________________________________
  11. int suma(int num1, int num2, int *c){
  12.     *c += num1+num2;
  13.     return 0;
  14. }
  15. //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  16. Considere el siguiente código:
  17. int sumaN(int a[], int N){
  18.     int i; int tot=0;
  19.     for(i=0; i<N; i++)
  20.       tot+=a[i];
  21.     return tot;
  22. }
  23.  
  24. int main() {
  25.     int b[10];
  26.  
  27.     int i;
  28.     for(i=0; i<10; i++)
  29.        b[i]=i;
  30.    
  31.     ... //su respuesta va aquí
  32.    
  33.     printf("%d",c);
  34.     return 0;
  35. }
  36. Inicialice la variable c con la suma de los últimos 5 elementos del arreglo b.
  37. Para ello sólo puede usar la función int sumaN(int a[], int N), que retorna la suma de un arreglo a[] de tamaño N.
  38. (Hint: Recuerde la relación que existe entre arreglos y punteros).
  39. _______________________________________________________________________________________________________________________________________
  40. int c;
  41.     c = sumaN(b,10)-sumaN(b,5);
  42.  
  43. //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  44. Considere el tipo de dato Persona:
  45.  
  46. typedef struct{
  47.   char nombre[30];
  48.   char rut[11];
  49.   int edad;
  50. } Persona;
  51.  
  52. Escriba la función Persona* CreaPersona(char nombre[], char rut[], int edad), la cual crea una nueva persona con los datos correspondientes y retorna un puntero al dato recién creado.
  53.  
  54. (Hint: debe reservar memoria para el nuevo dato usando malloc)
  55. (Hint2: recuerde usar strcpy para copiar strings)
  56. _______________________________________________________________________________________________________________________________________
  57. Persona* CreaPersona(char nombre[], char rut[], int edad){
  58.     Persona *cadena;
  59.     //Se asigna la memoria para cadena
  60.     cadena = (Persona*) malloc (sizeof(Persona));
  61.    
  62.     //Transpasan los datos
  63.     strcpy(cadena->nombre, nombre);
  64.     strcpy(cadena->rut, rut);
  65.     cadena->edad = edad;
  66.    
  67.     //Se retorna la cadena con los valores
  68.     return cadena;
  69. }
  70. //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  71. Considere el tipo de dato Vector:
  72.  
  73. typedef struct{
  74.    int* datos; //arreglo dinámico
  75.    int dim; //dimensión del vector
  76. } Vector;
  77.  
  78. Escriba la función Vector* creaVector(int n), la cual crea un vector con dimensión n y reserva la memoria correspondiente para el arreglo con n datos inicializados en 0. Luego retorna el vector creado.
  79. _______________________________________________________________________________________________________________________________________
  80. Vector* creaVector(int n){
  81.     Vector *cadena;
  82.    
  83.     cadena = (Vector*) calloc (n,sizeof(Vector));
  84.     cadena->datos= (int*) calloc(n,sizeof(int));
  85.     cadena->dim = n;
  86.     return cadena;
  87. }
  88. //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  89. Considere el tipo de dato Vector:
  90. typedef struct{
  91.   int* datos; //arreglo dinámico
  92.   int dim; //dim
  93. } Vector;
  94.  
  95. Implementa la función int obtieneDato(Vector* v, int pos), la cual retorna el dato en la posición pos del vector v.
  96. _______________________________________________________________________________________________________________________________________
  97. int obtieneDato(Vector* v, int pos){
  98.    
  99.     return v->datos[pos];
  100.    
  101. }
  102. //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  103. Considere el tipo de dato Vector:
  104.  
  105. typedef struct{
  106.   int* datos; //arreglo dinámico
  107.   int dim; //dim
  108. } Vector;
  109.  
  110. Escriba la función void suma(Vector* a, Vector* b, Vector *c), la cual suma los vectores a y b y el resultado lo almacena en el vector c.
  111. _______________________________________________________________________________________________________________________________________
  112. void suma(Vector* a, Vector* b, Vector *c){
  113.    
  114.     for(int i = 0; i < a->dim; i++){
  115.         c->datos[i] = a->datos[i]+b->datos[i];
  116.     }
  117.    
  118. }
  119. //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  120. Considere el tipo de dato Vector:
  121.  
  122. typedef struct{
  123.   int* datos; //arreglo dinámico
  124.   int dim; //dim
  125. } Vector;
  126.  
  127. y las operaciones:
  128.  
  129. Vector* creaVector(int n);
  130. int obtieneDato(Vector* v, int pos);
  131. void guardaDato(Vector* v, int pos, int dato);
  132. void suma(Vector* a, Vector* b, Vector *c);
  133. void resta(Vector* a, Vector* b, Vector *c);
  134.  
  135. Usando las operaciones, traduzca el siguiente algoritmo a lenguaje C (mantenga los nombres de las variables):
  136.  
  137. a = (2 4 5)
  138. b = (1 1 1)
  139. c = (0 8 0)
  140. d = a+b-c
  141. print a
  142. _______________________________________________________________________________________________________________________________________
  143. Vector *a= creaVector(3);
  144. Vector *b= creaVector(3);
  145. Vector *c= creaVector(3);
  146. Vector *d= creaVector(3);
  147.  
  148. guardaDato(a,0,2);
  149. guardaDato(a,1,4);
  150. guardaDato(a,2,5);
  151. guardaDato(b,0,1);
  152. guardaDato(b,1,1);
  153. guardaDato(b,2,1);
  154. guardaDato(c,0,0);
  155. guardaDato(c,1,8);
  156. guardaDato(c,2,0);
  157.  
  158. suma(a, b, d);
  159. resta( d, c, d);
  160.  
  161.         printf("(%d %d %d)",a->datos[0],a->datos[1],a->datos[2]);
  162. //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Advertisement
Add Comment
Please, Sign In to add comment