The teacher gave us a document with 10 problems to solve. This with the objective of practicing the topics that we have seen during the semester.
Exercise 1:
Write a function that calculates the distance between two points in a coordinate plane. I used the Pythagoras theorem.
#include <iostream> #include <math.h> using namespace std; float distancia(float x1,float y1,float x2,float y2) { float D; D = sqrt(pow((x2-x1),2)+pow((y2-y1),2)); return D; } int main() { float x1, x2, y1, y2; cout << "X1= "; cin >> x1; cout << "Y1= "; cin >> y1; cout << "X2= "; cin >> x2; cout << "Y2= "; cin >> y2; cout << distancia(x1,y1,x2,y2) << endl; return 0; }
Exercise 2:
A program that prints a triangle with a given size. I utilized nested for’s to print each character line by line.
#include <iostream> #include <stdio.h> using namespace std; void triangle(int S) { for (int c=1 ; c<=S ; c++) { for(int i=c ; i>0; i--) { printf("T"); } printf("\n"); } for (int c=S-1 ; c>0 ; c--) { for(int i=c ; i>0 ; i--) { printf("T"); } printf("\n"); } } int main() { int S; cout << "\n\nSize: "; cin >> S; cout << "\n\n\n\n"; triangle(S); cout << "\n\n\n\n"; return 0; }
Exercise 3:
A program that calculates factorial numbers. I used unsigned long int as the type of the result because the factorial operation only gives integer and positive numbers. I used conditionals to mark errors and a for to multiply numbers, and then substract an unit.
#include <iostream> using namespace std; unsigned long int factorial(int N) { unsigned long int F=1; if (N<0) cout << "Math error!" << endl; else if (N==0) F=1; else { for (int c=N; c>0; c--) F*=c; } return F; } int main() { int N; cin >> N; cout << N <<"! = " << factorial(N) << endl; return 0; }
Exercise 4:
A function that receives a list of numbers and calculates their average. I ask for the quantity of number that will be introduced, to declare the vector. Then I read each one and introduce the vecor in a function called promedio_lista. Then I just sum the numbers with a for and divide them by the quantity of them.
#include <iostream> using namespace std; float promedio_lista(float calf[], int N) { float P=0; for (int c=0; c<N; c++) P+=calf[c]; P/=N; return P; } int main() { int N; cout << "\n\n\n¿Cuantas calificaciones vas a introducir? "; cin >> N; float calf[N]; cout << "\n\n"; for (int c=0; c<N; c++) { cout << "Calificación " << c+1 << ": "; cin >> calf[c]; } cout << "\nPromedio= " << promedio_lista(calf, N) << "\n\n"; return 0; }
Exercise 5:
A function that detect the smallest number in a list of four numbers. To make this, I established that one of them were the smallest and then make comparisons with conditionals.
#include <iostream> using namespace std; float smallest_of_four(float a, float b, float c, float d) { float m=a; if (b<m) m=b; else if (c<m) m=c; else if (d<m) m=d; return m; } int main() { float a, b, c, d; cin >> a; cin >> b; cin >> c; cin >> d; cout << endl << smallest_of_four(a,b,c,d)<< endl; return 0; }
Exercise 6:
A function that returns a value belonging to a given position of the Fibonacci serie. The challenge is to calculate the values, but I only needed a vector whose size is equal to the position that were given. Then I asigned the first two values, which are 0 and 1 respectively, and with a for, I added the two past numbers related with the number now being calculated, until the counter is equal to the requested position.
#include <iostream> using namespace std; unsigned long int fibonacci(int n) { unsigned long int F[n]; F[0]=0; F[1]=1; for (int c=2; c<=n; c++) { F[c]=F[c-1]+F[c-2]; } return F[n]; } int main() { int n; cin >> n; cout << fibonacci(n) << endl; return 0; }
Exercise 7:
A function that receives a list of numbers and returns the sum of their squares. I used a for and the function pow of the library <math.h>
#include <iostream> #include <math.h> using namespace std; double sumsquares_list(double list[], int N) { double Sum=0; for (int c=0; c<N; c++) Sum+=pow(list[c],2); return Sum; } int main() { int N; cout << "Cantidad de valores: "; cin >> N; double list[N]; for (int c=0; c<N; c++) { cout << "Valor " << c+1 <<": "; cin >> list[c]; } cout << "\n\nLa suma de los cuadrados de esos números es igual a " << sumsquares_list(list,N) << endl; return 0; }
Exercise 8:
A program that calculates the square root through the Babylonian Method.
#include <iostream> using namespace std; long double square_root(long double N) { long double y=1, c; for(int i=0; i<1000; i++) { c=N/y; y=(y+c)/2; } return y; } int main() { int N; cout << "Square Root... \n\nNumber: "; cin >> N; cout << "The square root of "<< N << " is equal to "<<square_root(N) << endl << endl; return 0; }
Exercise 9:
A function that find the number of times that the word “banana” appears in a text file.
#include <iostream> #include <ctype.h> using namespace std; #include <fstream> bool compare(char vector_prueba[], int N=6) { char BANANA[6]={'b','a','n','a','n','a'}; bool result=true; int c=0; while(c<6) { if (BANANA[c]==vector_prueba[c]) c++; else return false; } return true; } int find_Bananas(string nombre) { fstream ficheroEntrada; int Ban=0; char letra; ficheroEntrada.open ( nombre.c_str() , ios::in); if (ficheroEntrada.is_open()) { while (! ficheroEntrada.eof() ) { ficheroEntrada >> letra; letra = tolower(letra); if (letra == 'b') { char bananatest[6]={'b'}; for(int i=1; i<6; i++) { ficheroEntrada >> letra; bananatest[i] = letra; bananatest[i] = tolower(bananatest[i]); } if (! ficheroEntrada.eof() ){ if (compare(bananatest,6)) Ban++; } } } ficheroEntrada.close(); } else cout << "Fichero inexistente o faltan permisos para abrirlo" << endl; return Ban; } int main() { string nombre; cout << "\n\nDime el nombre del fichero: "; getline(cin,nombre); cout << "\nThere is/are " << find_Bananas(nombre) << " banana's in the file.\n\n" << endl; return 0; }
Exercise 10:
#include <iostream> using namespace std; int gcd(int X, int Y) { int D; if(X>=Y) D=X; else D=Y; while ((X%D)!=0 || (Y%D)!=0) {D--;} return D; } int main() { int X,Y; cin >> X; cin >> Y; cout << gcd(X,Y) << endl; return 0; }