Kurs maturalny z języka angielskiego!
kurs-maturalny-jezyk-angielski

PROGRAMOWANIE I ALGORYTMY

Zajęcia maturalne z informatyki
Olimpiada Informatyczna Juniorów
    Prowadzący: Marcin Kasprowicz
  • właściciel serwisu algorytm.edu.pl
  • wrzesień 2024 — start zajęć
  • czytaj więcej

Rozwiązania - iteracje


powrót

//Ćwiczenie 1
#include<iostream>
#include<cstdlib>
using namespace std;

int main()
{
	unsigned int liczba,
	//zmienna będzie przechowywać sumę cyfr zmiennej liczba
	suma = 0; 
	
	cout<<"Podaj liczbę: ";
	cin>>liczba;
	
	cout<<"Suma cyfr liczby "<<liczba<<" wynosi: ";
	
	while(liczba>0)
	{
		suma+=liczba%10; //uzyskanie cyfry jednosci
		liczba/=10;		//skrócenie o cyfrę jednosci
	}
	
	cout<<suma<<endl;
	
	system("pause");
	return 0;
}

//Ćwiczenie 2
#include<iostream>
#include<cstdlib>
using namespace std;

int main()
{
	unsigned int a, b;
	unsigned long long wynik=1;
	
	cout<<"Podaj liczbę podstawę i wykładnik : ";
	cin>>a>>b;
	
	if(a==0&&b==0)
		cout<<-1<<endl;
	else
		if(a==0)
			cout<<0<<endl;
		else
		{
			for(int i=0;i<b;i++)
				wynik*=a;
			cout<<wynik<<endl;
		}
	
	system("pause");
	return 0;
}

//Ćwiczenie 3
#include<iostream>
#include<cstdlib>
#include<conio.h>
#include "windows.h"
void gotoxy(int x, int y)
{
COORD c;
c.X = x - 1;
c.Y = y - 1;
SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), c);
}

using namespace std;

int main()
{
	char litera;
	unsigned int n;
	
	cout<<"Podaj literę, którą chcesz narysować: ";
	cin>>litera;
	cout<<"Podaj długosć i szerokosć litery: ";
	cin>>n;

	system("cls");
	
	switch(litera)
	{
		case 'O':
			//rysowanie poziomych kresek
			for(int i=0;i<n;i++)
			{
				gotoxy(1+i,1);
				cout<<"*";
				gotoxy(1+i,n);
				cout<<"*";
			}
			//rysowanie pionowych kresek
			for(int i=1;i<n-1;i++)
			{
				gotoxy(1,1+i);
				cout<<"*";
				gotoxy(n,i);
				cout<<"*";
			}
			break;
		case 'L':
			//rysowanie kreski pionowej
			for(int i=0;i<n-1;i++)
			{
				gotoxy(1,i+1);
				cout<<"*";
			}
			//rysowanie kreski poziomej
			for(int i=0;i<n;i++)
			{
				gotoxy(1+i,n);
				cout<<"*";
			}
			break;
		case 'M':
			//rysowanie kresek pionowych
			for(int i=0;i<n;i++)
			{
				gotoxy(1,1+i);
				cout<<"*";
				gotoxy(2*n-1,1+i);
				cout<<"*";
			}
			//rysowanie kresek ukosnych
			for(int i=1;i<n;i++)
			{
				gotoxy(1+i,1+i);
				cout<<"*";
				gotoxy(n+i,n-i);
				cout<<"*";
			}
			break;
		case 'Z':
			//rysowanie poziomych kresek
			for(int i=0;i<n;i++)
			{
				gotoxy(i+1,1);
				cout<<"*";
				gotoxy(i+1,n);
				cout<<"*";
			}
			//rysowanie kreski ukosnej
			for(int i=1;i<n-1;i++)
			{
				gotoxy(n-i,i+1);
				cout<<"*";
			}
			break;
		case 'X':
			//rysowanie kresek ukosnych
			for(int i=1;i<=n;i++)
			{
				gotoxy(i,i);
				cout<<"*";
				gotoxy(n-i+1,i);
				cout<<"*";
			}
			break;
		case 'R':
			//rysowanie poziomych kresek
			for(int i=0;i<n;i++)
			{
				gotoxy(1+i,1); 
				cout<<"*";
				gotoxy(1+i,n);
				cout<<"*";
			}
			//rysowanie pionowych kresek
			for(int i=1;i<=n;i++)
			{
				gotoxy(1,i); //pion
				cout<<"*";
				gotoxy(1,n+i-1); //przedłużenie pionu
				cout<<"*";
				gotoxy(n,i); //pion równoległy
				cout<<"*";
			}
			//rysowanie kreski ukosnej
			for(int i=1;i<n;i++)
			{
				gotoxy(i+1,n+i);
				cout<<"*";
			}
			break;
		default:
			cout<<"Podałes złą literę!";
	}
	
	getch();
	system("cls");
	return 0;
}

//Ćwiczenie 4
#include<iostream>
#include<cstdlib>
using namespace std;

int main()
{
 	unsigned int n, m, i;
	
	cout<<"Podaj przedział: ";
	cin>>n>>m;
	
	cout<<"Wybierz opcję:\n";
	cout<<"1 - liczby są nieparzyste lub podzielne przez 5\n";
	cout<<"2 - liczby w dzieleniu przez 3 dają resztę 2 i cyfrą jedności jest 3 lub 4\n";
	cout<<"3 - dzielą się przez 5, ale nie dzielą się przez 3\n";
	
	char opcja;
	cin>>opcja;
	
	switch(opcja)
	{
		case '1':
			for(i = n;i<=m;i++)
				if(i%2==1 || i%5==0)
					cout<<i<<" ";
			break;
		case '2':
			for(i = n;i<=m;i++)
				if(i%3==2 && (i%10==3 || i%10 == 4))
					cout<<i<<" ";
			break;
		case '3':
			for(i = n;i<=m;i++)
				if(i%5==0 && i%3!=0)
					cout<<i<<" ";
			break;
		default:
			cout<<"Podałes nieprawidłową opcję!";
	}
	
	cout<<endl;
	system("pause");
	return 0;
}

//Ćwiczenie 5
//program działa dla niewielkiego n ponieważ wartosci
//potęg i silni bardzo szybko rosną
#include<iostream>
#include<cstdlib>
#include<iomanip>
using namespace std;

int main()
{
 	double x, wynik;
 	unsigned int n, jeden = 1;
 	unsigned long long silnia = 1, spom = 1, potega;
	
	cout<<"Podaj argument funkcji sinus: ";
	cin>>x;
	
	potega = x;
	wynik = x;
	
	cout<<"Podaj liczbę wyrazów szeregu Taylora: ";
	cin>>n;
	
	for(int i=1;i<n;i++)
	{
		++jeden; //odpowiada za to, czy potęga (-1) jest parzysta czy nie
		potega = potega * x * x; //wyznaczanie potęgi
		silnia = silnia * (++spom) * (++spom); //wyznaczanie silnie
		wynik = wynik +(jeden%2==0?-1:1) *  (double)potega/(double)silnia;
	}
	
	cout<<"sin("<<x<<") = "<<fixed<<setprecision(6)<<wynik<<endl;
	
	system("pause");
	return 0;
}