Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Студентам с лабораторными сюда (https://forum.antichat.xyz/showthread.php?t=122076)

oneofnamers 16.02.2009 13:18

Кто-нибудь, подскажите пожалуйста книги по Си/Си++, где бы описывалось применение системных функции Линукс.
Вот условие лабораторной:
Написать программу на си/си++, которая копирует файлы и считывает их атрибуты. Использовать системные функции ОС Линукс.

frostJKE 16.02.2009 17:06

Парни помогите кто чем может. Мне нужно написать программку на C++
Собственно вот задание: Ввести с клавиатуры русское слово. Разбить его по слогам.

snAKe33 16.02.2009 18:51

**
Помогите мне с лабой..надо написать программу на паскале.
Вообщем сама задача:
Из каждой очередной тройки букв удалить среднюю букву. Тип списка: циклический.
P.S заранее благодарен
**

bigex 16.02.2009 19:29

Люди очень нужна ваша помощь, задачка на C++
Задание:
Дан массив A[n] , найти наименьшее число элементов которые нужно выкинуть из массива чтобы осталась возрастающая последовательность элементов.

неделю раздумий не к чему не привели :(( можно даже словами, как вообще организовать такой алгоритм... программу я сам смогу написать... очень прошу помощи ))

groundhog 16.02.2009 19:37

Ну сам подумай... Какие признаки возрастающей последовательности? Каждый последующий элемент больше предыдущего... Т.е. те элементы, которые не удовлетворяют этому критерию и должны быть отброшены... Решение ещё не очевидно?

bigex 16.02.2009 22:54

если б было всё так просто я бы не обращался, тут другое нужно найти МИНИМАЛЬНОЕ количество элементов которые нужно откинуть , покажу на примере:
последовательность : 1 7 1 8 3 5 9 8 0
решение должно быть : 1 1 3 5 9 (откинуто всего 4)
если по вашему то получиться отсеивание каждого элемента что больше предыдущего то есть останется 1 7 8 9 - а это не удовлетворяет условию...
а если ещё вначале самого массива будет максимальная величина в массиве то отброситься вообще всё что после неё, тоесть нужно найти оптимальный элемент с которого и начинать отсеивание... но и тут не так всё просто , простое отсеивание не подойдёт, так как нужно при каждом удовлетворении условия что след. элемент больше предыдущего запускать новый цикл который проверял бы элементы после этих двух...
я уже по не множку грешу в сторону рекурсий...

snAKe33 17.02.2009 23:05

вот помоги исправить задачу...нужно сделать так что бы из каждой очередной тройки букв удалить среднюю букву. Тип списка циклический.
А данная программа удаляет первую букву..а нужно что бы последнюю.
это паскаль
Uses Crt;
type
pSpisok = ^Slova;
Slova = Record
slv : string[10];
next : pSpisok
end;
var
Head1, Tail1, Head2, Tail2, Ptr1, Ptr2, Pysk1, Pysk2 : pSpisok;
St, Str : string[10];
F : text;
I, K, N : integer;
Name : string;
begin
ClrScr;
Writeln ('Fail dolgen sodergat slova, raspologennie postrochno');
Writeln ('Vvedite imya faila: ');
Readln (Name);
Assign (F, Name);
Reset (F);
Head1 := Nil;
Tail1 := Nil;
Head2 := Nil;
Tail2 := Nil;
ClrScr;
While not Eof(F) do
begin
Readln (F, St);
New (Ptr1);
Ptr1^.Slv :=St;
Ptr1^.Next := Nil;
If Tail1 <> Nil then
Tail1^.Next := Ptr1;
Tail1 := Ptr1;
If Head1 = Nil then
Head1 := Ptr1;
end;
Tail1^.Next := Head1;
Ptr1 := Head1;
Pysk1 := Head1;
repeat
Str := Ptr1^.Slv;
N := length(str) – 1 div 3;
If Str <> '' then K := 1;
for I := 1 to N do
begin
Delete (Str, K, 1);
K := K + 2;
end;
New (Ptr2);
Ptr2^.Slv := Str;
Ptr2^.Next := Nil;
If Tail2 <> Nil then
Tail2^.Next := Ptr2;
Tail2 := Ptr2;
If Head2 = Nil then
Head2 := Ptr2;
Pysk1 := Ptr1^.Next;
Ptr1 := Pysk1;
Until Pysk1 = Head1;
Tail2^.Next := Head2;
Pysk1 := Head1;
Pysk2 := Head2;
Ptr1 := Head1;
ptr2 := Head2;
repeat
Write (Ptr1^.Slv,' ');
Writeln (Ptr2^.Slv);
Pysk1 := Ptr1^.Next;
Pysk2 := Ptr2^.Next;
Ptr1 := Pysk1;
Ptr2 := Pysk2;
until Pysk2 = Head2;
repeat until KeyPressed;
End.

Algol 17.02.2009 23:20

Цитата:

Сообщение от bigex
Задание:
Дан массив A[n] , найти наименьшее число элементов которые нужно выкинуть из массива чтобы осталась возрастающая последовательность элементов.

Код:

    class Program
    {
        static void Main(string[] args)
        {
            int[] A = new int[] { 1, 7, 1, 8, 3, 5, 9, 8, 0 };
            int count = calc(A);
            Console.WriteLine(count);
            Console.ReadLine();
        }

        //подсчет минимального числа исключений
        private static int calc(int[] A)
        {
            //пербираем число отбрасываемых элементов
            for (int i = 0; i < A.Length; i++)
            {
                if(Exclude(A, 0, i, new bool[A.Length]))
                    return i;
            }

            return A.Length;
        }

        //исключение одного элемента
        private static bool Exclude(int[] A, int fromIndex, int excludeCount, bool[] excluded)
        {
            if(excludeCount==0)
                return Check(A, excluded);
            for (int i = fromIndex; i < A.Length; i++)
            {
                excluded[i] = true;
                if(Exclude(A, i + 1, excludeCount - 1, excluded))
                    return true;
                excluded[i] = false;
            }
            return false;
        }

        //проверка на возрастание
        private static bool Check(int[] A, bool[] excluded)
        {
            int prev = int.MinValue;
            for(int i=0;i<A.Length;i++)
            if(!excluded[i])
            {
                if (A[i] <= prev)
                    return false;
                prev = A[i];
            }

            return true;
        }
    }


lll6 17.02.2009 23:47

Код:

Uses Crt;
type
pSpisok = ^Slova;
Slova = Record
slv : string[10];
next : pSpisok
end;
var
Head1, Tail1, Head2, Tail2, Ptr1, Ptr2, Pysk1, Pysk2 : pSpisok;
St, Str : string[10];
F : text;
I, K, N : integer;
Name : string;
begin
ClrScr;
Writeln ('Fail dolgen sodergat slova, raspologennie postrochno');
Writeln ('Vvedite imya faila: ');
Readln (Name);
Assign (F, Name);
Reset (F);
Head1 := Nil;
Tail1 := Nil;
Head2 := Nil;
Tail2 := Nil;
ClrScr;
While not Eof(F) do
begin
Readln (F, St);
New (Ptr1);
Ptr1^.Slv :=St;
Ptr1^.Next := Nil;
If Tail1 <> Nil then
Tail1^.Next := Ptr1;
Tail1 := Ptr1;
If Head1 = Nil then
Head1 := Ptr1;
end;
Tail1^.Next := Head1;
Ptr1 := Head1;
Pysk1 := Head1;
repeat
Str := Ptr1^.Slv;
N := length(str) - 1 div 3;
If Str <> '' then K := 1;
for I := 1 to N do
begin
Delete (Str, K+1, 1);
K := K + 2;
end;
New (Ptr2);
Ptr2^.Slv := Str;
Ptr2^.Next := Nil;
If Tail2 <> Nil then
Tail2^.Next := Ptr2;
Tail2 := Ptr2;
If Head2 = Nil then
Head2 := Ptr2;
Pysk1 := Ptr1^.Next;
Ptr1 := Pysk1;
Until Pysk1 = Head1;
Tail2^.Next := Head2;
Pysk1 := Head1;
Pysk2 := Head2;
Ptr1 := Head1;
ptr2 := Head2;
repeat
Write (Ptr1^.Slv,' ');
Writeln (Ptr2^.Slv);
Pysk1 := Ptr1^.Next;
Pysk2 := Ptr2^.Next;
Ptr1 := Pysk1;
Ptr2 := Pysk2;
until Pysk2 = Head2;
repeat until KeyPressed;
End.

Вот, удаляет среднюю букву из каждой тройки, попробуй.

snAKe33 18.02.2009 18:26

Цитата:

Сообщение от lll6
Код:

Uses Crt;
type
pSpisok = ^Slova;
Slova = Record
slv : string[10];
next : pSpisok
end;
var
Head1, Tail1, Head2, Tail2, Ptr1, Ptr2, Pysk1, Pysk2 : pSpisok;
St, Str : string[10];
F : text;
I, K, N : integer;
Name : string;
begin
ClrScr;
Writeln ('Fail dolgen sodergat slova, raspologennie postrochno');
Writeln ('Vvedite imya faila: ');
Readln (Name);
Assign (F, Name);
Reset (F);
Head1 := Nil;
Tail1 := Nil;
Head2 := Nil;
Tail2 := Nil;
ClrScr;
While not Eof(F) do
begin
Readln (F, St);
New (Ptr1);
Ptr1^.Slv :=St;
Ptr1^.Next := Nil;
If Tail1 <> Nil then
Tail1^.Next := Ptr1;
Tail1 := Ptr1;
If Head1 = Nil then
Head1 := Ptr1;
end;
Tail1^.Next := Head1;
Ptr1 := Head1;
Pysk1 := Head1;
repeat
Str := Ptr1^.Slv;
N := length(str) - 1 div 3;
If Str <> '' then K := 1;
for I := 1 to N do
begin
Delete (Str, K+1, 1);
K := K + 2;
end;
New (Ptr2);
Ptr2^.Slv := Str;
Ptr2^.Next := Nil;
If Tail2 <> Nil then
Tail2^.Next := Ptr2;
Tail2 := Ptr2;
If Head2 = Nil then
Head2 := Ptr2;
Pysk1 := Ptr1^.Next;
Ptr1 := Pysk1;
Until Pysk1 = Head1;
Tail2^.Next := Head2;
Pysk1 := Head1;
Pysk2 := Head2;
Ptr1 := Head1;
ptr2 := Head2;
repeat
Write (Ptr1^.Slv,' ');
Writeln (Ptr2^.Slv);
Pysk1 := Ptr1^.Next;
Pysk2 := Ptr2^.Next;
Ptr1 := Pysk1;
Ptr2 := Pysk2;
until Pysk2 = Head2;
repeat until KeyPressed;
End.

Вот, удаляет среднюю букву из каждой тройки, попробуй.

блин идиот...я искал эту строчку но не нашел..)))
думал еще как же программа удаляет без этого действия....тупица)))лови + помог найти!


Время: 21:42