Probleme propuse
1. Sa se afiseze suma numerelor de la 1...n, n se citeste de la tastatura.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
class Program
{
static int suma(int p, int u)
{
int m, m1, m2;
if (p == u) return p;
else
{
m = (p + u) / 2;
m1 = suma(p, m);
m2 = suma(m + 1, u);
return m1 + m2;
}
}
static void Main(string[] args)
{
Console.Write("n=");
int n = int.Parse(Console.ReadLine());
Console.WriteLine(suma(1, n));
Console.ReadKey();
}
}
2. Se citesc de la tastatura n numere. Sa se afiseze suma numerelor.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
public class vector
{
public int n;
public int[] a = new int[50];
public vector()
{
Console.Write("n=");
n = int.Parse(Console.ReadLine());
for (int i = 1; i <= n; i++)
{
Console.WriteLine("a[" + i + "]=");
a[i] = int.Parse(Console.ReadLine());
}
}
public int suma(int p, int u)
{
int m, m1, m2;
if (p == u) return a[p];
else
{
m = (p + u) / 2;
m1 = suma(p, m);
m2 = suma(m + 1, u);
return m1 + m2;
}
}
}
public class program
{
static void Main()
{
vector x = new vector();
Console.WriteLine(x.suma(1, x.n));
Console.ReadKey();
}
}
3. Se citesc de la tastatura n numere. Sa se afiseze valoarea minima.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
public class vector
{
public int n;
public int[] a = new int[50];
public vector()
{
Console.Write("n=");
n = int.Parse(Console.ReadLine());
for (int i = 1; i <= n; i++)
{
Console.WriteLine("a[" + i + "]=");
a[i] = int.Parse(Console.ReadLine());
}
}
public int min(int p, int u)
{
int m, m1, m2;
if (p == u) return a[p];
else
{
m = (p + u) / 2;
m1 = min(p, m);
m2 = min(m + 1, u);
if (m1 > m2) return m2;
else return m1;
}
}
}
public class program
{
static void Main()
{
vector x = new vector();
Console.WriteLine(x.min(1, x.n));
Console.ReadKey();
}
}
Se citesc de la tastatura n numere. Sa se afiseze pozitiile din vector unde se gaseste valoarea maxima.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
public class vector
{
public int n;
public int[] a = new int[50];
public vector()
{
Console.Write("n=");
n = int.Parse(Console.ReadLine());
for (int i = 1; i <= n; i++)
{
Console.WriteLine("a[" + i + "]=");
a[i] = int.Parse(Console.ReadLine());
}
}
public int max(int p, int u)
{
int m, m1, m2;
if (p == u) return a[p];
else
{
m = (p + u) / 2;
m1 = max(p, m);
m2 = max(m + 1, u);
if (m1 > m2) return m1;
else return m2;
}
}
public void pozitii(int i, int maxim)
{
if (a[i] == maxim) Console.Write(i + " ");
if (i < n) pozitii(i + 1, maxim);
}
}
public class program
{
static void Main()
{
vector x = new vector();
int maxim = x.max(1, x.n);
Console.WriteLine("Valoarea maxima="+maxim);
Console.WriteLine("pozitiile din vector unde se gaseste valoarea maxima");
x.pozitii(1, maxim);
Console.ReadKey();
}
}
(Cautare binara) Se citesc de la tastatura n numere intregi in ordine crescatoare si un numar intreg c. Sa se afiseze pozitia pe care se gaseste c in sirul celor n numere.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
public class vector
{
public int n;
public int c;
public int[] a = new int[50];
public vector()
{
Console.Write("n=");
n = int.Parse(Console.ReadLine());
for (int i = 1; i <= n; i++)
{
Console.WriteLine("a[" + i + "]=");
a[i] = int.Parse(Console.ReadLine());
}
Console.WriteLine("Dati nr cautat=");
c = int.Parse(Console.ReadLine());
}
public void caut(int p, int u)
{
int m;
if (p > u) Console.WriteLine("nr nu se gaseste printre elementele citite");
else
{
m = (p + u) / 2;
if (a[m] == c) Console.WriteLine("Elementul se gaseste pe pozitia "+m);
else
if(a[m]<c) caut(m+1,u);
else caut(p,m-1);
}
}
}
public class program
{
static void Main()
{
vector x = new vector();
x.caut(1, x.n);
Console.ReadKey();
}
}
Se citesc de la tastatura n numere. Sa se afiseze cmmdc-ul acestor numere.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
public class vector
{
public int n;
public int c;
public int[] a = new int[50];
public vector()
{
Console.Write("n=");
n = int.Parse(Console.ReadLine());
for (int i = 1; i <= n; i++)
{
Console.WriteLine("a[" + i + "]=");
a[i] = int.Parse(Console.ReadLine());
}
}
static int cmmdc(int a,int b)
{
if (a == b) return a;
else if (a > b) return cmmdc(a - b, b);
else return cmmdc(a, b - a);
}
public int cmmdcn(int p, int u)
{
int m, m1, m2;
if (p == u) return (a[p]);
else
{ m = (p + u) / 2;
m1 = cmmdcn(p, m);
m2 = cmmdcn(m + 1, u);
return cmmdc(m1, m2);
}
}
}
public class program
{
static void Main()
{
vector x = new vector();
Console.WriteLine("cmmdc="+x.cmmdcn(1, x.n));
Console.ReadKey();
}
}
Se citesc de la tastatura n numere. Sa se afiseze numarul numerelor strict pozitive.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
public class vector
{
public int n;
public int[] a = new int[50];
public vector()
{
Console.Write("n=");
n = int.Parse(Console.ReadLine());
for (int i = 1; i <= n; i++)
{
Console.WriteLine("a[" + i + "]=");
a[i] = int.Parse(Console.ReadLine());
}
}
public int numar(int p, int u)
{
int m, m1, m2;
if (p == u) if (a[p] > 0) return 1;
else return 0;
else
{
m = (p + u) / 2;
m1 = numar(p, m);
m2 = numar(m + 1, u);
return m1 + m2;
}
}
}
public class program
{
static void Main()
{
vector x = new vector();
Console.WriteLine("numarul de numere strict pozitive="+x.numar(1, x.n));
Console.ReadKey();
}
}
Se citesc de la tastatura n numere. Sa se afiseze numarul de numere prime.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
public class vector
{
public int n;
public int[] a = new int[50];
public vector()
{
Console.Write("n=");
n = int.Parse(Console.ReadLine());
for (int i = 1; i <= n; i++)
{
Console.WriteLine("a[" + i + "]=");
a[i] = int.Parse(Console.ReadLine());
}
}
static int prim(int i,int x)
{
if (x % i == 0) return 0;
if (i < x / 2) prim(i + 1, x);
return 1;
}
public int numar(int p, int u)
{
int m, m1, m2;
if (p == u) if ((a[p]>=2)&&(a[p]==2 || prim(2,a[p])==1)) return 1;
else return 0;
else
{
m = (p + u) / 2;
m1 = numar(p, m);
m2 = numar(m + 1, u);
return m1 + m2;
}
}
}
public class program
{
static void Main()
{
vector x = new vector();
Console.WriteLine("numarul de numere prime="+x.numar(1, x.n));
Console.ReadKey();
}
}