Ejemplo de cuestionario: Serie II
Informática (083)
Clase – XII (2015-16)
Tiempo: 3 horas MM: 70
Instrucciones:
i. Todas las preguntas son obligatorias.
ii. Lenguaje de programación: Sección A: C++
iii. Lenguaje de programación: Sección B: Python
iv. Responda la Sección A o B, y la Sección C es obligatoria
Sección : A (C++)
Q1 a. Defina Macro con un ejemplo adecuado . 2
Respuesta: Las macros son directivas de preprocesador creadas usando # define que sirven como constantes simbólicas. Son un fragmento de código al que se le ha dado un nombre. Cada vez que se usa el nombre, se reemplaza por el contenido de la macro. Se crean para simplificar y reducir la cantidad de codificación repetitiva.
Por ejemplo,
CPP
#define sum (a, b) a + b
Define la macro suma, tomando dos argumentos a y b. Esta macro se puede llamar como cualquier función. Por lo tanto, después del preprocesamiento:
CPP
z = sum(x, y); is replaced with Z = x + y;
b. ¿Qué archivos de encabezado de C++ se incluirán para ejecutar/ejecutar el siguiente código de C++? 1
CPP
void main() { int Last = 26.5698742658; cout << setw(5) << setprecision(9) << Last; }
Respuesta: Los dos archivos de encabezado que deben incluirse son:
iostream: iostream significa flujo de entrada y salida estándar. Este archivo de encabezado contiene definiciones de objetos como cin, cout, etc.
iomanip: iomanip significa manipuladores de entrada y salida. Los métodos declarados en estos archivos se utilizan para manipular flujos. Este archivo contiene definiciones de setw, setprecision, etc.
c. Vuelva a escribir el siguiente programa después de eliminar cualquier error sintáctico. Subraya cada corrección hecha. 2
CPP
#include<iostream.h> void main() int A[10]; A = [ 3, 2, 5, 4, 7, 9, 10 ]; for (p = 0; p <= 6; p++) { if (A[p] % 2 = 0) int S = S + A[p]; } cout << S; }
Respuesta: En el código anterior, falta el corchete después de main(), los elementos de la array se declaran incorrectamente, la variable p no se declara y S no se puede declarar dentro del bloque. Por lo tanto, se realizan las siguientes correcciones:
#include <iostream.h> void main() { int A[10] = { 3, 2, 5, 4, 7, 9, 10 }; int S = 0, p; for (p = 0; p <= 6; p++) { if (A[p] % 2 == 0) S = S + A[p]; } cout << S; }
d. Encuentre la salida del siguiente programa C++: 2
CPP
#include <iostream.h> void repch(char s[]) { for (int i = 0; s[i] != '\0'; i++) { if (((i % 2) != 0) && (s[i] != s[i + 1])) { s[i] = '@'; } else if (s[i] == s[i + 1]) { s[i + 1] = '!'; i++; } } } void main() { char str[] = "SUCCESS"; cout << "Original String" << str repch(str); cout << "Changed String" << str; }
Respuesta: Salida: Reemplace ‘@’ en lugar de U, ‘!’ en lugar de la segunda C y ‘!’ en lugar de la tercera S
Original String SUCCESS Changed String S@C!ES!
mi. Encuentre la salida de lo siguiente: 3
CPP
#include <iostream.h> void switchover(int A[], int N, int split) { for (int K = 0; K < N; K++) if (K < split) A[K] += K; else A[K] *= K; } void display(int A[], int N) { for (int K = 0; K < N; K++) (K % 2 == 0) ? cout << A[K] << "%" : cout << A[K] << endl; } void main() { int H[] = { 30, 40, 50, 20, 10, 5 }; switchover(H, 6, 3); display(H, 6); }
Respuesta: En el programa anterior, cuando se llama a la función de conmutación() pasando la dirección de la array, el tamaño de la array y la división = 3. En esta función para K = 0, 1, 2, si se ejecuta la condición y se agrega K a los elementos de la array, es decir, 30+0 = 30, 40+1 = 41, 50+2 = 52 y después de eso, se sigue la condición y los elementos de la array se multiplican, 20*3 = 60, 10*4 = 40, 5*5 = 25.
Display() imprime el valor de la array modificada y la salida es:
30%41 52%60 40%25
F. Observe el siguiente código C++ y descubra cuáles de las opciones dadas i) a iv) son la salida correcta esperada. Asigne también el valor máximo y mínimo que se le puede asignar a la variable ‘Ir’. 2
CPP
void main() { int X[4] = { 100, 75, 10, 125 }; int Go = random(2) + 2; for (int i = Go; i < 4; i++) cout << X[i] << "$$"; }
i. 100$$75 ii. 75$$10$$125$$iii. 75$$10$$iv.10$$125$$
Respuesta: La opción (iv) puede ser la única respuesta correcta si Go=2. En este caso se imprimirá 10$$125$$.
Valor mínimo de Go = 2 (cuando aleatorio(2) = 0)
Valor máximo de Go = 3 (cuando aleatorio(2) = 1)
Q2 a. Diferenciar entre abstracción de datos y ocultamiento de datos . 2
Respuesta: La ocultación de datos se puede definir como el mecanismo de ocultar los datos de una clase del mundo exterior. Esto se hace para proteger los datos de cualquier acceso accidental o intencional. La ocultación de datos se logra haciendo que los miembros de la clase sean privados.
La abstracción de datos se refiere a proporcionar solo información esencial al mundo exterior y ocultar sus detalles de fondo. Los miembros definidos con una etiqueta pública son accesibles para todas las partes del programa. La vista de abstracción de datos de un tipo está definida por sus miembros públicos.
b. Responda las preguntas (i) y (ii) después de pasar por la siguiente clase: 2
CPP
class Exam { int Rollno; char Cname[25]; float Marks; public: Exam() // Function 1 { Rollno = 0; Cname =""; Marks = 0.0; } Exam(int Rno, char candname) // Function 2 { Rollno = Rno; strcpy(Cname, candname); } ~Exam() // Function 3 { cout << "Result will be intimated shortly" << endl; } void Display() // Function 4 { cout << "Roll no :"<< Rollno; cout <<"Name :" << Cname; cout <<" Marks :"<< Marks; } };
(i) ¿Qué concepto de OOP implementan la Función 1 y la Función 2? ¿Explique?
Respuesta: La función 1 y la función 2 son constructores , que implementan el concepto de sobrecarga y polimorfismo , ya que se dan múltiples definiciones de constructores en el mismo ámbito. La función 1 es un constructor predeterminado y la función 2 es un constructor parametrizado.
(ii) ¿Cómo se llama la función 3? ¿Cuándo se invocará?
Respuesta: La Función 3 es un Destructor que se invoca cuando el objeto sale del alcance.
C. Defina una clase Candidate en C++ con la siguiente especificación: 4
miembros privados:
- Un miembro de datos Rno (Número de registro) tipo largo
- Un miembro de datos Cname de tipo string
- A miembros de datos Agg_marks (marcas agregadas) de tipo flotante
- Un miembro de datos Grado de tipo char
- Una función miembro setGrade() para encontrar la calificación según las calificaciones agregadas obtenidas por el estudiante. Rango de calificaciones agregadas equivalentes y la calificación respectiva como se muestra a continuación:
Marcas agregadas | Calificación |
---|---|
>=80 | A |
Menos de 80 y >=65 | B |
Menos de 65 y >=50 | C |
Menos de 50 | D |
Miembros públicos:
- Un constructor para asignar valores predeterminados a los miembros de datos: Rno=0, Cname=”NA”, Agg_marks=0.0
- Una función Getdata() para permitir a los usuarios ingresar valores para Rno. Cname, Agg_marks y llama a la función setGrade() para encontrar la calificación.
- Una función dispResult( ) para permitir al usuario ver el contenido de todos los miembros de datos.
Respuesta: :
CPP
class Candidate { long Rno; char Cname[20]; float Agg_marks; char Grade; void setGrade() { if (Agg_marks >= 80) Grade = ‘A’; else if (Agg_marks < 80 && Agg_marks >= 65) Grade = ‘B’; else if (Agg_marks < 65 && Agg_marks >= 50) Grade =’C’; else Grade =’D’; } public: Candidate() { Rno = 0; Strcpy(Cname, "N.A."); Agg_marks = 0.0; } void Getdata() { cout << "Registration No"; cin >> Rno; cout << "Name"; cin >> Cname; cout << Aggregate Marks "; cin >> Agg_marks; setGrade(); } void dispResult() { cout << "Registration No" << Rno; cout << "Name" << Cname; cout << Aggregate Marks "<< Agg_marks; }
d. Dé la siguiente definición de clase responda la pregunta que sigue: 4
CPP
class University { char name[20]; protected: char vc[20]; public: void estd(); void inputdata(); void outputdata(); } class College : protected University { int regno; protected char principal() public : int no_of_students; void readdata(); void dispdata ( ); }; class Department : public College { char name[20]; public: void fetchdata(int); void displaydata(); };
i) Nombre la clase base y la clase derivada de la universidad. 1
Respuesta:
Clase base: Universidad
Clase derivada: Departamento
ii) Nombre los miembros de datos a los que se puede acceder desde la función displaydata() .
Respuesta: char nombre[20], char HOD[20], char principal(), int no_of_students, char vc[20]
iii) ¿Qué tipo de herencia se representa en la definición de clase anterior?
Respuesta: herencia multinivel
iv) ¿Cuál será el tamaño de un objeto (en bytes) de la clase Departamento?
Respuesta: 85 bytes
P3 a. Una array de enteros A [30][40] se almacena a lo largo de la columna en la memoria. Si el elemento A[20][25] está almacenado en 50000, busque la ubicación de A[25][30]. 3
Respuesta:
A[i][j] = B + W[N.º de filas x (I – Lr) + (J – Lc)]
A[20][25] = B + 2[30 x (20 – 0 ) + (25 – 0)]
50000 = B + 2[30 x (20 – 0) + (25 – 0)]
B = 48750
A[7][10] = 48750 + 2[30 x (7 – 0) + (10 – 0)]
A[7][10] = 49190
b. Escriba la definición de funciones para la cola implementada vinculada que contiene información de pasajeros de la siguiente manera: 4
CPP
struct NODE { int Ticketno; char PName[20]; NODE* NEXT; }; class Queueofbus { NODE *Rear, *Front; public: Queueofbus() { Rear = NULL; Front = NULL; }; void Insert(); void Delete(); ~Queueofbus() { cout << "Object destroyed"; } };
Respuesta:
CPP
void Queueofbus::Insert() { NODE* p = new NODE; cout << "Enter Ticket no"; cin >> p->Ticketno; cout << "Enter Name"; cin >> p->PName; p->NEXT = NULL; if (rear == NULL) { Rear = p; Front = Rear; } else { Rear->NEXT = p; Rear = Rear->NEXT; } }
C. Escriba una función para ordenar cualquier array de n elementos mediante la ordenación por inserción . Array debe pasarse como argumento a la función. 3
respuesta:
CPP
void insertsort(int a[], int n) { int p, ptr; // Assuming a[0] = int_min i.e. smallest integer for (p = 1; p <= n; p++) { temp = a[p]; ptr = p - 1; while (temp <= a[ptr]) { a[ptr + 1] = a[ptr]; // Move Element Forward ptr--; } a[ptr + 1] = temp; // Insert Element in Proper Place }
d. Escriba una función NewMAT(int A[][], int r, int c ) en C++, que acepte una array 2d de enteros y su tamaño como parámetros divida todos los elementos de la array por 6 que no estén en el rango de 60 a 600( ambos valores inclusive) en el 2d Array . 2
respuesta:
CPP
void NewMAT(int A[][], int r, int c) { for (int i = 0; i < r; i++) for (j = 0; j < c; j++) if ((A[i][j] >= 60) && (A[i][j] <= 600)) A[i][j] /= 6; or A[i][j] = A[i][j] / 6; }
mi. Evalúe la siguiente expresión de sufijo usando stack y muestre el contenido después de la ejecución de cada operación: 470, 5, 4, ^, 25, /, 6, * 2
Respuesta:
P4 a. Considere un archivo F que contiene objetos E de clase Emp. 1
i) Instrucción de escritura para colocar el puntero de archivo al final del archivo
Respuesta: F.seekg(0, ios::end);
ii) Instrucción de escritura para devolver el número de bytes desde el principio del archivo hasta la posición actual del puntero del archivo.
Respuesta: F.tellg();
b. Escriba una función RevText() para leer un archivo de texto «Input.txt» e imprima solo palabras que comiencen con ‘I’ en orden inverso. 2
Ejemplo: Si el valor en el archivo de texto es: INDIA ES MI PAÍS
La salida será: AIDNI SI MI PAÍS
Respuesta:
CPP
void RevText() { ifstream in("Input.txt"); char word[25]; while (in) { in >> word; if (word[0] ==’I’) cout << rrev(word); else cout << word;
C. Escriba una función en C++ para buscar y mostrar detalles, cuyo destino sea «Chandigarh» del archivo binario «Flight.Data». Suponiendo que el archivo binario contiene los objetos de la siguiente clase: 3
CPP
class FLIGHT { int Fno; // Flight Number char From[20]; // Flight Starting Point char To[20]; // Flight Destination public: char* GetFrom(); { return from; } char* GetTo(); { return To; } void input() { cin >> Fno >> ; gets(From); get(To); } void show() { cout Fno << ": " From ":" To endl; } };
Respuesta:
CPP
void Dispdetails() { ifstream fin("Flight.Dat"); Flight F; while (fin) { fin.read((char*)&F, sizeof(F)) if (strcmp(F.GetTo(), "Chandigarh")) F.show(); } }
Sección : B (Python)
Q1 a. Enumere una similitud y una diferencia entre el tipo de datos Lista y Diccionario. 2
Respuesta:
Similitud: Tanto la Lista como el Diccionario son tipos de datos mutables.
Disimilitud: la lista es un tipo de datos secuenciales, es decir, están indexados.
El diccionario es un tipo de datos de mapeo. Se compone de clave: par valor.
Ej: L =[1, 2, 3, 4, 5] es una lista
D= {1:”Ajay”, 2:”Prashant, 4:”Himani”} es un diccionario donde 1, 2, 4 son claves y “Ajay”, Prashant, “Himani” son sus valores correspondientes.
b. Observe las siguientes funciones de Python y escriba los nombres de los módulos a los que pertenecen: 1
i) uniform() ii) findall()
Ans: i) random ii) re
C. Vuelva a escribir el siguiente programa de Python después de eliminar todos los errores sintácticos (si los hay), subrayando cada corrección: 2
Python
def checkval : x = raw_input("Enter a number") if x % 2 = 0 : print x, "is even" else if x < 0 : print x, "should be positive" else; print x, "is odd"
Respuesta:
def checkval(): x = raw_input("Enter a number") if x % 2 == 0: print x, "is even" elif x < 0 : print x, "should be positive" else: print x, "is odd"
d. Encuentre la salida del siguiente programa de Python: 3
Python3
def makenew(mystr): newstr = " " count = 0 for i in mystr: if(count % 2 != 0): newstr = newstr + str(count) else: if(i.islower()): newstr = newstr + i.upper() else: newstr = newstr + i count += 1 newstr = newstr + mystr[:1] print("The new string is :", newstr) makenew("sTUdeNT")
Respuesta: La nueva string es: S1U3E5Ts
e. Encuentre la salida del siguiente programa 2
CPP
def calcresult(): i = 9 while i > 1: if (i % 2 == 0): x = i % 2 i = i - 1 else: i = i - 2 x = i print x * *2
Respuesta:
Salida:
49 25 9 1
F. Observe el siguiente código de Python y descubra cuáles de las opciones dadas i) a iv) son los resultados correctos esperados. Asigne también el valor máximo y mínimo que se le puede asignar a la variable ‘Ir’. 2
Python3
import random X =[100, 75, 10, 125] Go = random.randint(0, 3) for i in range(Go) : print X[i], "$$",
i. 100$$75$$10$$ii. 75$$10$$125$$iii. 75$$10$$iv.10$$125$$100
Respuesta:
i. 100$$75$$10$$
El valor mínimo que se puede asignar a Go es 0
El valor máximo que se puede asignar a Go es 3
Q2 a. ¿Discutir las estrategias empleadas por python para la asignación de memoria? 2
Respuesta: Python utiliza dos estrategias para la asignación de memoria : recuento de referencias y recolección automática de basura:
Recuento de referencias: funciona contando el número de veces que otros objetos hacen referencia a un objeto en el sistema. Cuando el recuento de referencias de un objeto llega a cero, Python lo recopila automáticamente.
Recolección automática de basura:Python programa la recolección de basura en función de un umbral de asignaciones de objetos y desasignaciones de objetos. Cuando el número de asignaciones menos el número de desasignaciones es mayor que el número de umbral, se ejecuta el recolector de elementos no utilizados y se reclama el bloque de memoria no utilizado.
b. Responda las preguntas (i) y (ii) después de pasar por la siguiente definición de clase: 2
class Toy : tid =0; tcat = " " def __init__(self):// Function1 10 ..................................... // Blank 2
i. Explique la relevancia de la Función 1.
Respuesta: La función __init__ se usa para inicializar los miembros de una clase. Se invoca automáticamente cuando se crea el objeto de la clase.
ii (a). Complete los espacios en blanco con una declaración para crear un objeto de la clase JUGUETE.
Respuesta: T=Juguete()
(b). Escriba una declaración para verificar si tprice es un atributo de la clase TOY.
Respuesta: hasattr(T, tprice)
c. Defina una clase Train en PYTHON con la siguiente descripción: 4
Miembros de datos
src de tipo string
Tnm de tipo string
dest de tipo string
cargos de flotación
• Una función miembro Obtener datos para asignar los siguientes valores para Cargos
destino | Cargos |
---|---|
Bombay | 1000 |
Chennai | 2000 |
Calcuta | 2500 |
Miembros públicos:
• Un constructor para inicializar los miembros de datos.
• Una función InputData() para permitir que el usuario ingrese los valores
• Una función displaydata() para mostrar todo y llamar a la función getdata
Respuesta:
Python3
class train : def __init__(self): _src = "" _tnm = "" _dest = "" _charges = 0.0 def getdata(self): if self._dest == "mumbai" or self._dest == "MUMBAI": self._charges = 1000 elif self._dest == "chennai" or self._dest == "CHENNAI" : self._charges = 2000 elif self._dest == "kolkata" or self._dest == "KOLKATA" : self._charges = 2500 def inputdata(self): self._src = raw_input("enter the source of journey") self._tnm = raw_input("enter the train name") self._dest = raw_input("enter the destination")
d. Observa la siguiente definición de clase y contesta la pregunta que sigue: 2
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA