Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Массивы
- /* 58) Даны два строго упорядоченных по возрастанию массива X и Y из n элементов каждый. В массиве X найти все такие элементы X[k], для которых найдутся некоторые элементы из массива Y, удовлетворяющие соотношению: Y[i] < X[k] < Y[i + 1]. Вычислить количество m таких элементов из X и переписать их в первые m элементов массива C. */
- #define _CRT_SECURE_NO_WARNINGS
- #include <stdio.h>
- #include <stdlib.h>
- #include <conio.h>
- #include <ctime>
- int find_num(int a[], int b[], int c[], int n)
- {
- int k = 0;
- int count = 0;
- if ((b[0] > a[n - 1]) || (b[n - 1] < a[0]))
- return 0;
- for (int j = 0; j < n; j++)
- {
- for (int i = k; i < n - 1; i++)
- {
- if (a[j] > b[i])
- if (a[j] < b[i + 1])
- {
- c[count++] = a[j];
- k = i;
- break;
- }
- }
- }
- return count;
- }
- void fill_array(int a[], int n)
- {
- for (int k = 0; k < n; k++)
- a[k] = (rand() % 100) + 1;
- }
- void print_array(int a[], int n)
- {
- for (unsigned int j = 0; j < n; j++)
- {
- printf("%d\t", a[j]);
- }
- printf("\n");
- }
- int main()
- {
- int n;
- printf("input array length:\n");
- scanf("%d", &n);
- int *a = new int[n];
- int *b = new int[n];
- int *c = new int[n];
- fill_array(a, n);
- fill_array(b, n);
- int x = find_num(a, b, c, n);
- printf("two arrays:\n");
- print_array(a, n);
- print_array(b, n);
- printf("result:");
- print_array(c, x);
- system("pause");
- return 0;
- }
- //Матрицы
- //19. По заданным коэффициентам и правым частям найти решение "треугольной" системы из n уравнений.
- #define _CRT_SECURE_NO_WARNINGS
- #include <stdio.h>
- #include <stdlib.h>
- #include <conio.h>
- #include <ctime>
- double** create_array(int string, int column)
- {
- double **a = new double*[string];
- for (unsigned int i = 0; i < string; i++)
- {
- a[i] = new double[column];
- }
- return a;
- }
- void delete_array(double **a, int string)
- {
- for (int j = 0; j < string; j++)
- delete[]a[j];
- }
- void print_array(double **a, int string, int column)
- {
- for (unsigned int k = 0; k < string; k++)
- {
- printf("\n");
- for (unsigned int j = 0; j < column; j++)
- {
- printf("%f\t", a[k][j]);
- }
- }
- printf("\n");
- }
- void fill_array(double **a, int string, int column)
- {
- for (unsigned int k = 0; k < string; k++)
- for (unsigned int j = 0; j < column; j++)
- {
- if (j == column - 1 || j <= k)
- a[k][j] = rand() % 10 + 1;
- else
- a[k][j] = 0;
- }
- }
- double **find_solution(double **a, int string, int column)
- {
- double **arr = create_array(string, 1);
- for (int i = 0; i < string; i++)
- {
- arr[i][0] = 0;
- }
- arr[0][0] = a[0][column - 1] / a[0][0];
- for (int i = 1; i < string; i++)
- {
- arr[i][0] = a[i][0];
- for (int j = 0; j < i; j++)
- {
- arr[i][0] -= a[i][j] * arr[j][0];
- }
- arr[i][0] /= a[i][i];
- }
- return arr;
- }
- int main()
- {
- int string;
- int column;
- printf("put the number of unknowns, please:\n");
- scanf("%d", &string);
- column = string + 1;
- double **a = create_array(string, column);
- fill_array(a, string, column);
- printf("Matrix:");
- print_array(a, string, column);
- double **b = find_solution(a, string, column);
- printf("Solution:");
- print_array(b, string, 1);
- delete_array(a, string);
- delete_array(b, string);
- system("pause");
- return 0;
- }
- //указатели
- //52) Выяснить, каких элементов в массиве A больше : отрицательных, положительных или нулей.
- #define _CRT_SECURE_NO_WARNINGS
- #include <stdio.h>
- #include <stdlib.h>
- #include <conio.h>
- int** create_array(int w, int h)
- {
- int **a = new int*[w];
- for (unsigned int i = 0; i < w; i++)
- {
- a[i] = new int[h];
- }
- return a;
- }
- void delete_array(int **a, int w)
- {
- for (int j = 0; j < w; j++)
- delete[]a[j];
- }
- void print_array(int **a, int w, int h)
- {
- for (unsigned int k = 0; k < w; k++)
- {
- printf("\n");
- for (unsigned int j = 0; j < h; j++)
- {
- printf("%d\t", a[k][j]);
- }
- }
- }
- void fill_array(int **a, int w, int h)
- {
- for (unsigned int k = 0; k < w; k++)
- for (unsigned int j = 0; j < h; j++)
- {
- a[k][j] = (rand() % 40) - 21;
- }
- }
- /*
- Находим каких знаков в массиве больше:
- 1) Если больше положительных возвращает 1
- 2) Если больше отрицательных возвращает -1
- 3) Иначе ноль
- */
- int check_signs(int **a, int n, int m)
- {
- int pos = 0, nul = 0, neg = 0;
- for (int i = 0; i < n; i++)
- for (int j = 0; j < m; j++)
- {
- if (a[i][j] > 0)
- pos++;
- else if (!(a[i][j]))
- nul++;
- else neg++;
- }
- if (pos >= neg && pos > nul)
- return 1;
- else if (neg > pos && neg >= nul)
- return -1;
- else return 0;
- }
- int main()
- {
- int n,
- m;
- printf("Input arrat height and width:\n");
- scanf("%d \n%d", &n, &m);
- int **a = create_array(n, m);
- fill_array(a, n, m);
- print_array(a, n, m);
- if(check_signs(a, n, m) == 1)
- printf("\nThere is more positive numbers!\n");
- if (!(check_signs(a, n, m)))
- printf("\nThere is more nulls!\n");
- if (check_signs(a, n, m) == -1)
- printf("\nThere is more negative numbers!\n");
- delete_array(a, n);
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement