/* * arrays.cpp * * Created on: 05.11.2013 * Author: trifon */ #include using namespace std; void test_arrays() { int a[] = { 2, 4 }; // int a[2] = { 2, 4 }; int b[30] = { 1,5,7,8,2,6 },c[30] = { 1,5,7,8,2,6 }; int i; cout << "i = "; cin >> i; cout << b[i] << endl; b[i] = 10; // !!! b = c; // !!! Не сравнява поелементно! if (b == c) cout << "Да!"; else cout << "Не!"; // !!! cin >> b; cout << b; } int main() { const int MAX = 100; int a[MAX], n; cout << "n = "; cin >> n; for(int i = 0; i < n; i++) { cout << "a[" << i << "] = "; cin >> a[i]; } int sum = 0; for(int i = 0; i < n; i++) sum += a[i]; cout << "sum = " << sum << endl; int x; cout << "x = ";cin >> x; int i = 0; while (i < n && a[i] != x) i++; // a[i] == x - ДА // i == n - НЕ cout << "Числото " << x; // ? ---> a[i] != x // ? ---> i == n if (i == n) cout << " НЕ"; cout << " се среща в масива!" << endl; i = 0; while(i < n-1 && a[i] <= a[i+1]) i++; // i == n-1 - ДА // a[i] > a[i+1] - НЕ cout << "Масивът "; if (i < n-1) cout << "НЕ "; cout << "образува монотонно растяща редица!" << endl; i = 0; bool foundSame = false; while (!foundSame && i < n - 1) { // искаме да проверим дали // a[i] се среща в a[i+1],...,a[n-1] int j = i+1; // има ли някое a[j] == a[i]? while (j < n && a[i] != a[j]) j++; // j == n - a[i] не се среща в a[i+1],...,a[n-1] // a[j] == a[i] - a[i] се среща if (j < n) foundSame = true; i++; } cout << "Масивът "; if (foundSame) cout << "НЕ "; cout << "представя множество!" << endl; // a) int count = 0; for(int i = 0; i < n; i++) if (a[i] == x) count++; cout << "Числото " << x << " се среща " << count << " пъти" << endl; // б) int maxcount = 0, maxnumber; for(int j = 0; j < n - 1; j++) { // броим колко пъти a[j] се среща в масива int count = 1; for(int i = j+1; i < n; i++) if (a[i] == a[j]) count++; if (count > maxcount) { maxcount = count; maxnumber = a[j]; } } cout << "Числото " << maxnumber << " се среща "; cout << maxcount << " пъти" << endl; // i - позицията на чертата for(int i = 0; i < n - 1; i++) { // дотук знаем, че a[0],..., a[i-1] са подредени // Трябва да намерим най-малкият елемент // от a[i] до a[n-1] // mini - индекс на най-малкия елемент int mini = i; for(int j = i + 1; j < n; j++) if (a[j] < a[mini]) mini = j; // mini съдържа индекса на най-малкия елемент // трябва да разменим a[i] с a[mini] if (i != mini) { int x = a[i]; a[i] = a[mini]; a[mini] = x; } // вече знаем, че a[0], ... a[i] са подредени } for(int i = 0; i < n; i++) cout << "a[" << i << "] = " << a[i] << endl; cout << "Моля, въведете подреден масив:" << endl; int b[MAX], m; cout << "m = "; cin >> m; for(int i = 0; i < m; i++) { cout << "b[" << i << "] = "; cin >> b[i]; } int c[MAX]; /* int ia = 0, ib = 0; for(int i = 0; i < n + m; i++) { // от кой масив да вземем if (ib == m || (ia < n && a[ia] < b[ib])) { // вземаме от a, ако // b е свършил или a не е свършил и // елементът в a е по-малък c[i] = a[ia]; ia++; } // ib < m && (ia == n || a[ia] >= b[ib]) else { c[i] = b[ib]; ib++; } }*/ int ia = 0, ib = 0, ic = 0; // 1 част: и в двата масива има елементи while (ia < n && ib < m) if (a[ia] < b[ib]) c[ic++] = a[ia++]; else c[ic++] = b[ib++]; // 2 част: единият от масивите е свършил while (ia < n) c[ic++] = a[ia++]; while (ib < m) c[ic++] = b[ib++]; for(int i = 0; i < n + m; i++) cout << "c[" << i << "] = " << c[i] << endl; return 0; }