C, Unix, OPEN(),CLOSE(),READ(), WRITE(): Копирование файлов

Начался новый предмет, новые лабы.

Задачка примерно такая: Есть *nix-операционная система. В ней написать приложение на C, которое умеет копировать файлы при помощи системных вызовов Open(), Close(), Read(), Write();

В моем случае в качестве операционной системы использую Ubuntu 12.04

Continue reading

C++: Массивы, сортировка и нахождение минимальных-максимальных индексов

Дан массив вещественных чисел X=(x1,x2,..,xn). Записать элементы
заданного массива Х в массив Y следующим образом: в начальной части
расположить положительные элементы в порядке возрастания, затем в
порядке убывания отрицательные элементы, нулевые элементы не
записывать. Оценить, как при этом изменилось положение максимального
и минимального элементов массива.
Использовать функции.

Задачка простая на вид. Приступаем. У нас есть массивы, целых два. с ними нужно уметь делать следующее:

  • Создавать (Random)
  • Выводить на экран
  • Сортировать
  • Дополнять элементами (для второго массива)

Continue reading

C++: Среднее арифметическое + нахождение минимального и максимального элементов (индексов) + сортировка

Хорошие задачки стали давать в универах. Составные =)

Вычислить среднее арифметическое элементов массива X=(x1,x2,…,xn),
расположенных между его минимальным и максимальным значениями.
Если минимальный элемент размещается в массиве раньше
максимального, то упорядочить массив на данном промежутке по
возрастанию его элементов, и наоборот, если минимальный элемент
размещается после максимального, то упорядочить по убыванию.

PS: Нельзя использовать динамическую память :(
Задача на самом деле не задача, а состоящая из трех подзадач:

  1. Найти минимальный и максимальный элементы и их индексы
  2. Вычислить среднее арифметическое для этого промежутка
  3. Отсортировать промежуток по возростанию или убыванию в зависимости от того, как расположены минимальный и максимальный элементы.

Continue reading

С++ отсортировать строку матрицы в которой больше всего отрицательных элементов

Задача полностью сформулирована в заголовке.

Задача как бы разбивается на 2:

  • Найти ту строчку, где больше всего минимальных элементов
  • Отсортировать эту строчку.

Исходный код:

Continue reading

C++: Найти сумму простых делителей

Задача:

Дана последовательность из целых чисел. 0 — конец последовательности. Для каждого числа найти сумму его простых делителей. Оформить функцией определение суммы простых делителей числа.

Итак. Последовательность — массив. Заполняем его с клавиатуры и выводим как есть. Далее сами вычисления. Нужно найти простые числа до числа, для этого я буду использовать функцию isPrime (она на шарпе, но да я одну строчку изменил и работает на си), а нам еще нужно и делители. Значит остаток от деления числа должен быть равен нулю.

Continue reading

C++: Обернуть цифры в числе (для последовательности)

Новая задачка.

Вводится последовательность из n целых чисел. Для каждого числа последовательности вывести новое число, которое появляется после записи цифр числа в обратном порядке. Функцией оформить определение нового числа для заданного.

Примечание: Сделать нужно без применения динамической памяти.

Начинаем думать. Работа с цифрами в числе. и функция. Пригодится что-то вроде вот этой функции, только ее все же нужно переписать.

Continue reading

C++, Транспонированная матрица

Не хватало транспонированной матрицы:

Upd: Транспонированная матрица на java

Способ без использования динамической памяти (n не больше ста):

#include <iostream>
#include <time.h>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    const int maxsize = 100;
    int a [maxsize][maxsize], n;
    int temp;
    cout << "n=";
    cin >> n;

    if (n > maxsize)
    {
        cout << "n is too lage...";
        system("pause");
        return -1;
    }
    srand(time(NULL));
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            a[i][j] = rand() % 10;
            cout << a[i][j] << " ";
        }
        cout << endl;
    }
    for(int i=0;i<n;i++) 
    { 
        for(int j=i;j<n;j++) 
        {
            temp=a[j][i];
            a[j][i]=a[i][j];
            a[i][j]=temp;
        }
    }
    cout << "Transp.:" << endl;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            cout << a[i][j] << " ";
        }
        cout << endl;
    }
    system("pause");
    return 0;
}

Пример работы программы

С++, найти некоторые числа

Интересная попралась задачка.

Напишите программу которая найдет три нечетных числа, идущих подряд, для которых правдивы утверждения:a < b < c, и a2+b2+c2 равно четырехзначному числу у которого все цифры одинаковы (т.е 1111, 8888 итп).

Continue reading

C++: четное число

Функция простая, но кому-то возможно сократит время, поиска или решения задачи.

Из Википедии, четное число, то число, которое делится без остатка на 2.

Функция на си:

bool is_even_number(int a)
{
	return a % 2 == 0;
}

Возвращает true, если число четное и false в противном случае.

C++: Заполнить матрицу так, чтобы на диагоналях были случайные числа, а остальные-нули

Задача:

Напишите программу, которая принимает с клавиатуры число N, создает матрицу размера N на N, у которой на главной и побочной диагоналях расположены случайные числа, а остальные элементы равны нулю. Затем выведите матрицу на экран.

Задача похожа на предыдущую, с той лишь разницей, что нужно заполнять и побочную диагональ. Для этого я так же воспользуюсь функцией из набора, которая возвращает true, если элемент матрицы (массива) стоит на диагонали. В этот раз на любой из них. Continue reading