Está en la página 1de 4

Variables en C++

In [1]: a = 0

(int) 0

In [2]: a = "Hola"

input_line_53:2:6: error: assigning to 'int' from incompatible type 'const char [5]'
a = "Hola"
^~~~~~

In [3]: int a;
a = 0;
a = 8

(int) 8

Los enteros no son ilimitados

In [4]: long a = 2;
for(int i = 0;i<=5;i++){
a = a*a;
cout<<a<<endl;
};

4
16
256
65536
4294967296
0

In [5]: string mensaje = "Hola Mundo";

In [6]: cout << mensaje.append("Hola")<<endl;


cout << mensaje <<endl;

Hola MundoHola
Hola MundoHola

Funciones en C++
In [7]: int suma(int a, int b){
return a+b;
}

In [8]: suma(3,4)

(int) 7

In [9]: int gcd(int a,int b){


if(b==0){
return a;
}
else{
return gcd(b,a%b);
}
}

In [10]: gcd(12343,23451)
(int) 1

Queremos escribir la función que dados a, b calcula los enteros x, y de la identidad de Bezout:

gcd(a, b) = x ⋅ a + y ⋅ b

Para ello necesitamos definir un tipo de datos par que conste de dos enteros

In [11]: struct par{


int x;
int y;
};

In [12]: par un_par;

In [13]: un_par.x = 7;
un_par.y = 8;

In [14]: cout << un_par.x<<","<<un_par.y;

7,8

In [15]: cin >> a;

In [16]: a

(long) 0

Ejercicio: escribir Bezout

In [17]: struct par{


int x;
int y;
};

In [18]: par bezout(int a, int b){


par result;
if(b==0){
result.x = 1;
result.y = 0;
}
else{
int c = a/b;
int r = a%b;
par aux = bezout(b,r);
result.y = (aux.x - aux.y * c);
result.x = (aux.y);
}
return result;
};

In [19]: string par_to_string(par p){


return "par("+to_string(p.x)+","+to_string(p.y)+")" ;
};

In [20]: cout << par_to_string(bezout(15,9));

par(-1,2)

In [21]: cout << gcd(15,9);

In [22]: cout << bezout(15,9).x * 15 + bezout(15,9).y * 9;


3

In [23]: par p = bezout(15,9);

In [24]: p

(par &) @0x7fc795044058

In [25]: par_to_string(p)

(std::string) "par(-1,2)"

Arrays
Ver:https://antares.sip.ucm.es/cpareja/libroCPP/docs/4%20-%20definici
%C3%B3n%20de%20tipos%20-%20resumen.pdf

In [26]: int v[3] = {1,2,3};

In [27]: int v1[3] = {4,5,6};


v1 = v;

input_line_79:3:4: error: array type 'int [3]' is not assignable


v1 = v;
~~ ^

In [28]: int w[3] = {1,2,3};

In [29]: int w1[3] = {4,5,6};

In [30]: w = w1;

input_line_82:2:4: error: array type 'int [3]' is not assignable


w = w1;
~ ^

In [31]: for(int i = 0;i<3;i++){


w[i] = w1[i];
}

In [32]: cout << "w:";


for(int i = 0;i<3;i++){
cout<<w[i]<<",";
}
cout << endl;
cout << "w1:";
for(int i = 0;i<3;i++){
cout<<w1[i]<<",";
}

w:4,5,6,
w1:4,5,6,

In [33]: int * z = w;

In [34]: z[2]

(int) 6
Ejercicios
• Escribir una función con prototipo: int buscar_str(string s1,string s2); que devuelva
la posición de la primera aparición de s1 en s2 . Si s1 no aparece en s2 devolverá -1.

• Escribir una función con prototipo: int buscar_str(string s1,string s2, int pos);
que devuelva la posición de la primera aparición de s1 en s2 a partir de la posición pos . Si
s1 no aparece en s2 a partir de pos devolverá -1.

• Escribir una función que dadas dos cadenas de caracteres s1 y s2 devuelva todas las
apariciones de s1 en s2 .

• Escribir funciones para sumar, restar, multiplicar y dividir números naturales representados en
decimal con cadenas de caracteres. Por ejemplo, para la suma el prototipo de la función pedida es
string add(string a,string b); y debe devolver el string que represente la suma del
natural representado por a y del natural representado por b

• ☠ https://www.geeksforgeeks.org/convex-hull-set-2-graham-scan/

Más ejercicios (más bien sobre algoritmos, algunos difíciles): https://www.geeksforgeeks.org


/fundamentals-of-algorithms/?ref=shm#GeometricAlgorithms

In [ ]:

También podría gustarte