CBSE 12th class Paper Resuelto – Sesión 2015-16

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 .
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.
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.
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:
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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *