Студентам с лабораторными сюда

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by begin_end, 28 Apr 2015.

  1. begin_end

    begin_end Green member

    Joined:
    4 Jan 2007
    Messages:
    265
    Likes Received:
    638
    Reputations:
    476

    Это продолжение аналогичной переполненной темы:
    https://forum.antichat.ru/threads/122076/
     
    _________________________
  2. RedFern.89

    RedFern.89 Member

    Joined:
    20 Jan 2010
    Messages:
    575
    Likes Received:
    48
    Reputations:
    0
    1. Составить программу, которая находит все числа из диапазона от M до N, обладающие тем свойством, что сумма нечетных цифр, входящих в состав числа является делителем исходного числа.
    2. Дана шахматная доска 8 х 8. Составить программу, которая выводит сообщение о том, может ли ферзь Ф1 с клетки (а,b) сделать ход на клетку (c,d) и при этом не оказаться под боем коня К1, стоящего на клетке (e,f). Конь ходит "буквой Г", т.е если он стоит на клетке, помеченной буквой К1, то он может сделать ход на любую из клеток, помеченной символом (*). Ферзь ходит прямо, а также по диагонали и его возможные ходы с клетки отмеченной буквой Ф1 показаны символом (+)

    Рисунок

    3. Дан массив X[1:N] целых чисел. Составить программу, которая позволяет определить наибольшее число идущих подряд различающихся элементов в этом массиве. Изменять порядок следования элементов и использовать другие массивы нельзя. Например, для массива 5,7,3,6,7 [7,8,9,10,11,23,1], 1,5 искомое значение равно 7.
    4. Дан двумерный массив целых чисел А[N,N]. Составить фрагмент программы, которая определяет наибольших элемент заштрихованной области массива.

    Рисунок

    5.Составить программу, которая выполняет удаление из натурального числа X некоторой заданной цифры D. Например, для числа 58789890 и цифры 8 результатом будет 57990.
    6. Составить программу, которая вычисляет значение бесконечной цепной дроби с некоторой заданной точностью D<<1. Точность D определяется как абсолютное значение разности результатов текущего и предыдущего шагов деления.

    Рисунок.

    7.Составить программу, которая позволяет определить правильность расстановки круглых скобок в заданном арифметическом выражении, записанном на языке программирования.
     
  3. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    634
    Likes Received:
    246
    Reputations:
    42
    1) Не указан язык
    2) Скрины шикарные
     
    R3re and MOHAX_228 like this.
  4. baranka941

    baranka941 New Member

    Joined:
    13 May 2015
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    написать программу на С# сохранения и обновления файлов в долговременном архиве, т.е. сравнить все файлы с файлами на удаленном сервере если совпадения найдены мы сравниваем дату последнего изменения если нужно перезаписываем его если не надо идем дальше, если совпадений не найдено просто копируем этот файл в архив. Нужна помощь написать надо до 18.05.2015 а я не могу
     
  5. demigods

    demigods New Member

    Joined:
    9 May 2015
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    С++
    Заполнить 2х мерный массив, размер задает пользователь(не более 8 строк на 11 столбцов). Заполнить его случайными целыми числами в диапазоне заданным пользователем. Отсортировать строки по убыванию, если количество нечетных чисел больше чем четных и по возрастанию если количество четных чисел больше чем нечетных.
     
  6. .buzz

    .buzz Banned

    Joined:
    19 Jan 2011
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    1. Заменить первый элемент массива, кратный 5, нулем.

    2. Заменить элементы массива с нечетными номерами на квадраты их номеров.

    3. Из элементов массива D сформировать массив Aтой же размерности по правилу: если номер четный, то значение элемента находится по формуле Ai = Di2, а если нечетный, то по формуле Ai = Di / i.

    в лс , за работу $$
     
  7. int 27h

    int 27h New Member

    Joined:
    12 Dec 2015
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Сап, посоны. Я оказался сортом быдлокодера, способным по памяти реализовать наиболее важные алгоритмы и структуры данных, но не умеющим применять эти структуры в подобных задачах. В них главная сложность в том, чтобы правильно понять условие и предусмотреть все возможные ситуации. Помогите их решить. Говорят, что во всех трех задачах достаточно одного двойного условия "осталось ли время" и "остались ли задачи", и все три задачи можно решить одним кодом с использованием условной компиляции.

    Код для решения первой (не проходит 6 тест): https://ideone.com/Dtf1xb

    Code:
    [LIST=1]
    [*]#include <iostream>
    [*]#include <stack>
    [*]
    
    [*]int main(){
    [*]    int t, tmax, n;
    [*]    int day_new_task;    // День получения новой задачи
    [*]    int day_last_task = 0;    // День получения предыдущей
    [*]
    
    [*]    std::stack<int> s;
    [*]
    
    [*]    std::cin >> t;    //Количество дней, которое тратится на любую задачу
    [*]    std::cin >> tmax;    // Количество дней в курсе
    [*]    std::cin >> n;    // Количество задач в курсе
    [*]
    
    [*]    // В цикле рассматриваем задачи с 1 по n-ю
    [*]    for(int i = 1; i <= n; i++){
    [*]        std::cin >> day_new_task;    //День, в который получена i-я задача
    [*]        if(day_last_task == 0) day_last_task = day_new_task;    //День, в который получена предыдущая задача
    [*]
    
    [*]        // Если при получении новой задачи студент еще решает старую
    [*]        // Дополнительное условие: дни получения новой и текущей задачи не равны
    [*]        // Запоминаем задачу, которую студент не решил
    [*]        if((day_new_task - day_last_task < t) && (day_new_task ^ day_last_task))
    [*]            s.push(i);
    [*]        // Если студент свободен, даем ему новую задачу
    [*]        if(day_new_task - day_last_task >= t)
    [*]            day_last_task = day_new_task;
    [*]    }
    [*]
    
    [*]    std::cout << s.size() << std::endl;
    [*]    while(!s.empty()){
    [*]        std::cout << s.top() << " ";
    [*]        s.pop();
    [*]    }
    [*]
    
    [*]    int pause;
    [*]    std::cin >> pause;
    [*]}
    [/LIST]
    

    Условия задач:

    [​IMG]

    [​IMG]

    [​IMG]
     
  8. Elli M

    Elli M New Member

    Joined:
    18 Dec 2015
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    На языке СИ. Написать функцию NOD, которая возвращает наибольший общий делитель двух целых чисел, и функцию NOK, которая возвращает наименьшее общее кратное двух целых чисел.
    Помогите найти ошибку в коде:)
    #include <iostream>
    #include <stdio.h>
    #include <clocale>

    using namespace std;

    int NOD(int a, int b);
    int NOK(int a, int b);

    int NOD(int a, int b)
    {
    while ((a != 0) && (b != 0)) {
    if (a > b) a = a % b;
    else b = b % a;
    }
    return a + b;
    }

    int NOK(int a, int b)
    {
    return (a * b) / NOD(a, b);
    system("pause");
    }
    void main()
    {
    int a, b;
    setlocale(LC_CTYPE, "rus");
    printf("Введите чмсло а : ");
    scanf_s("%d", &a);
    setlocale(LC_CTYPE, "rus");
    printf("Введите чмсло b : ");
    scanf_s("%d", &b);
    if (a <= 0 || b <= 0)
    {
    system("cls");

    }
    printf("Наибольший общий делитель двух целых чисел : \n ", NOD);
    printf("Наименьшее общее кратное двух целых чиселл : \n ", NOK);
    printf ("\n\n");
    system("pause");
    }
     
  9. neviens

    neviens Member

    Joined:
    9 Oct 2013
    Messages:
    82
    Likes Received:
    28
    Reputations:
    3
    Code:
    //...
    printf("Наибольший общий делитель двух целых чисел : %d\n ", NOD(a, b));
    printf("Наименьшее общее кратное двух целых чиселл : %d\n ", NOK(a, b));
    //...
     
  10. ZodiaX

    ZodiaX Reservists Of Antichat

    Joined:
    7 May 2009
    Messages:
    533
    Likes Received:
    308
    Reputations:
    51
    "Введите число":)
     
    MichelleBoxing and MOHAX_228 like this.
  11. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    634
    Likes Received:
    246
    Reputations:
    42
    Если тебе нужно было бы, ты бы потрудился перевести задачу и написать язык, на котором она должна быть выполнена.
     
  12. jonipeper

    jonipeper New Member

    Joined:
    13 Mar 2016
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Не могу сделать функцию runFile() что бы она:
    Вывести в алфавитном порядке список товаров, хранящихся больше месяца, стоимость которых превышает 1000000 руб., используя созданное меню.
    Code:
    #define _CRT_SECURE_NO_WARNINGS
    #include <conio.h>
    #include <iostream>
    using namespace std;
    
    struct date
    {
        int dd;
        int mm;
        int yy;
    };
    
    
    struct commodity //объявляем шаблон структуры
    {char name[30]; //Наименование
    int num; //Количество едениц товара
    int price; //Цена за единицу
    date d;// дата поступления товара
    
    };
    // функция для обмена ячейками массива структур
    void swapp(commodity &a, commodity &b)
    {
        commodity temp;
        temp = a;
        a = b;
        b = temp;
    }
    
    
    int u=0,y=0,l=0; //глобальные переменные.1-ая отвечает за создание файла,2-аяследит за колличеством заполненых структур
    commodity r[20]; //массив структур
    //прототипы функций
    int menu();
    void newFile();
    void viewFile();
    void addFile();
    void editFile();
    void runFile();
    void deleterecord();
    int main()
    {
    while(1)
        switch (menu()) //вызом меню
    {
    case 1:newFile();break;
    case 2:viewFile();break;
    case 3:addFile();break;
    case 4:editFile();break;
    case 5:runFile();break;
    case 6:deleterecord();break;
    case 7:return 0;
    default:printf("Neverniy vibor\n");
    }
    _getch();
    }
    int menu()
    {
    int choice;
    do
    {
    system ("cls");//очищает содержание экрана
    printf("Menu\n");
    printf("1.newFile\n");
    printf("2.viewFile\n");
    printf("3.addFile\n");
    printf("4.editFile\n");
    printf("5.runFile\n");
    printf("6.deleterecord\n");
    printf("7.vihod\n");
    printf("Vash vibor?\n");
    scanf("%d", &choice);//ввод действия,которое хотим произвести
    system("cls");
    }while (choice>7);
    return choice;
    }
    void newFile()
    {
    int q;
    FILE *f;
    f=fopen("pkp.txt", "w");
    do
    {
        printf("vvedite naimenovanie tovara ");
    scanf("%s",r[l].name);
    printf("vvedite kolichestvo edinic ");
    scanf("%d",&r[l].num);
    printf("vvedite cena za edinicy ");
    scanf("%d",&r[l].price);
    printf("vvedite den ");
    scanf("%d",&r[l].d.dd);
    printf("vvedite mesec ");
    scanf("%d",&r[l].d.mm);
    printf("vvedite god ");
    scanf("%d",&r[l].d.yy);
    printf("hotite dobavit esche tovaru?\n");//условие,которое спрашивает у нас,хотим ли мы ещё добавить структуру
    printf("1.Da\t2.Net\n");
    printf("vash vibor(chislo)? ");
    scanf("%d",&q);
    l++;
    }while (q!=2);
    for(int i=0;i<l;i++)//записываем данные в файл
        {
    fprintf(f,"%s\n",r[i].name);
    fprintf(f,"%d\n",r[i].num);
    fprintf(f,"%d\n",r[i].price);
    fprintf(f,"%d\n",r[i].d.dd);
      fprintf(f,"%d\n",r[i].d.mm);
       fprintf(f,"%d\n",r[i].d.yy);
    }
    y++;//счетчик проверяющий создан ли файл изменяется только тут
    fclose(f);//закрываем файл
    }
    void viewFile()
    {
    if(y!=0)//смотрим создан ли файл
    {
    FILE *f;
    f=fopen("pkp.txt", "r");//фай открыт только для чтения
    if(u==0)
    {
    for(int i=0;i<l;i++)//в этом цикле считываем данные из файла в структуру
    {
    fscanf(f,"%s\n",r[i].name);
    fscanf(f,"%d\n",&r[i].num);
    fscanf(f,"%d\n",&r[i].price);
    fscanf(f,"%d\n",&r[i].d.dd);
    fscanf(f,"%d\n",&r[i].d.mm);
    fscanf(f,"%d\n",&r[i].d.yy);
    }
    for(int i=0;i<l;i++)//выводим стуктуру на экран
    {
    printf("naimenovanie tovara ");
    printf("%s\n",r[i].name);
    printf("kolichestvo edinic ");
    printf("%d\n",r[i].num);
    printf("cena za edinicy ");
    printf("%d\n",r[i].price);
    printf("den ");
    printf("%d\n",r[i].d.dd);
    printf("mesec ");
    printf("%d\n",r[i].d.mm);
    printf("god ");
    printf("%d\n",r[i].d.yy);
    }
    }
    else
    {
    for(int i=0;i<l;i++)//в этом цикле считываем данные из файла в структуру
    {
    fscanf(f,"%s\n",r[i].name);
    fscanf(f,"%d\n",&r[i].num);
    fscanf(f,"%d\n",&r[i].price);
    fscanf(f,"%d\n",&r[i].d.dd);
    fscanf(f,"%d\n",&r[i].d.mm);
    fscanf(f,"%d\n",&r[i].d.yy);
    }
    for(int i=0;i<l;i++)//выводим стуктуру на экран
    {
    printf("naimenovanie tovara %s\n", r[i].name);
    printf("kolichestvo edinic %d\n",r[i].num);
    printf("cena za edinicy %s\n",r[i].price);
    printf("den %s\n",r[i].d.dd);
    printf("mesec %s\n",r[i].d.mm);
    printf("god %s\n",r[i].d.yy);
    }
    }
    fclose(f);//закрываем файл
    }
    else//если файл не создан то
    printf("ne sozdan");
    _getch();
    }
    void addFile()
    {
    if(y!=0)//смотрим создан ли файл
    {
    FILE *f;
    f=fopen("pkp.txt", "a");//файл открыт для дозаписи
    if(u==0)
    {
    //дозаписываем
         printf("vvedite naimenovanie tovara ");
    scanf("%s",r[l].name);
    printf("vvedite kolichestvo edinic ");
    scanf("%d",&r[l].num);
    printf("vvedite cena za edinicy ");
    scanf("%d",&r[l].price);
    printf("den ");
    scanf("%d",&r[l].d.dd);
    printf("mesec ");
    scanf("%d",&r[l].d.mm);
    printf("god ");
    scanf("%d",&r[l].d.yy);
    l++;//увеличиваем счётчик колличества заполненых структур,т.к. мы добавляем новые данные в самый конец,т.е. на место l
    fclose(f);
    }
    else
    {
    printf("vvedite naimenovanie tovara ");
    scanf("%s",r[l].name);
    printf("vvedite kolichestvo edinic ");
    scanf("%d",&r[l].num);
    printf("vvedite cena za edinicy ");
    scanf("%d",&r[l].price);
    printf("den ");
    scanf("%d",&r[l].d.dd);
    printf("mesec ");
    scanf("%d",&r[l].d.mm);
    printf("god ");
    scanf("%d",&r[l].d.yy);
    l++;//увеличиваем счётчик колличества заполненых структур,т.к. мы добавляем новые данные в самый конец,т.е. на место l
    fclose(f);
    runFile();
    }
    }
    else
    printf("ne sozdan");
    _getch();
    }
    void editFile()
    {
    int q;
    if(y!=0)//проверяем создан ли файл
    {
    FILE *f;
    f=fopen("pkp.txt", "w");
    printf("vvedite nomer tovara,kotori vi hotite izmenit\n");
    scanf("%d",&q);
    if(q<l)//смотрим не превышает ли введённое число количество стуртур,которое у нас имеется
    {
    for(int i=0;i<l;i++)//в этом цикле считываем данные из файла в структуру
    {
    fscanf(f,"%s\n",r[i].name);
    fscanf(f,"%d\n",&r[i].num);
    fscanf(f,"%d\n",&r[i].price);
    fscanf(f,"%d\n",&r[i].d.dd);
    fscanf(f,"%d\n",&r[i].d.mm);
    fscanf(f,"%d\n",&r[i].d.yy);
    if(i==q)
    {
    printf("vvedite naimenovanie tovara ");
    scanf("%s",r[q].name);
    printf("vvedite kolichestvo edinic ");
    scanf("%d",&r[q].num);
    printf("vvedite cena za edinicy ");
    scanf("%d",&r[q].price);
    printf("den ");
    scanf("%d",&r[q].d.dd);
    printf("mesec ");
    scanf("%d",&r[q].d.mm);
    printf("god ");
    scanf("%d",&r[q].d.yy);
       }
      }
    fclose(f);
    }
    else//если колличество структур меньше введённого числа,то мы выдаем ошибку и выходим из программы
    {
    printf("oshibka");
    }
    }
    else
    printf("ne sozdan");//если файл не создан
    _getch();
    }
    void runFile()
    {
    if(y!=0)
    {
    FILE *f;
    f=fopen("pkp.txt", "w");
    for(int i=0;i<l;i++)
    {
       const int N = 20;  // размер массива
        commodity ar[N]; // массив структур
        date currentDate;// объект структуры для текущей датты
    
        // текущая дата
        currentDate.dd = 13;
        currentDate.mm = 03;
        currentDate.yy = 2016;
       
    
        // сначала отсортируем массив структур по названию товаров
        for(int i(1); i < N; i++){
            for(int j(N-1); j >= i; j--){
                for(int k(0); ar[j-1].name[k]; k++){
                    if(ar[j-1].name[k] > ar[j].name[k]) { swapp(ar[j-1],ar[j]); break; } // если буква первого слова больше чем буква второго, то меняем местами слова и переходим к следующему слову
                    else if(ar[j-1].name[k] == ar[j].name[k]) continue; // если буквы равны, то проверяем следующую букву
                    else break;
                }
               
            }
        }
    
        // теперь выведем те товары, которые соответсвуют заданным условиям
        // т.е. их цена больше 1000000 и лежат на складе больше месяца
        for(int i(0); i < N; i++){
        if(ar[i].price > 1000000)
            if(currentDate.yy > ar[i].d.yy) cout << ar[i].name << endl;
            else if(currentDate.mm > ar[i].d.mm && currentDate.dd > ar[i].d.dd) cout << ar[i].name << endl;
        }
        cin.get();
       }
        for(int i=0;i<l;i++)//записываем данные в файл
       {
    fprintf(f,"%s\n",r[i].name);
    fprintf(f,"%d\n",&r[i].num);
    fprintf(f,"%s\n",&r[i].price);
    fprintf(f,"%s\n",&r[i].d.dd);
    fprintf(f,"%s\n",&r[i].d.mm);
    fprintf(f,"%s\n",&r[i].d.yy);
    }
    u++;
    fclose(f);
    }
    else
    printf("ne sozdan");
    _getch();
    }
    void deleterecord()
    {
    if(y!=0)
    {
    FILE *f;
    f=fopen("pkp.txt", "w");
    int q;
    printf("vvedite porjadkovi nomer tovara,kotori vi hotite udalit\n");
    scanf("%d",&q);//вводим порядковый номер структуры, который хотим удалить
    if(q<l)//проверяет не больше ли введённое нами число колличества структур. Если больше то выдает ошибку, если меньше то удаляет
    { for(int i=0;i<l;i++)
    
       {
        fscanf(f,"%s\n",r[i].name);
        fscanf(f,"%d\n",&r[i].num);
        fscanf(f,"%d\n",&r[i].price);
        fscanf(f,"%d\n",&r[i].d.dd);
        fscanf(f,"%d\n",&r[i].d.mm);
        fscanf(f,"%d\n",&r[i].d.yy);
       }
     
    for(int i=q;i<l-1;i++)
    r[i]=r[i+1];
    l--;
    fclose(f);
    }
    else//если введённое число больше количества структур
    printf("oshibka");
    }
    else
    printf("ne sozdan");
    _getch();
    } 

    Надо что бы она брала из файла названия товаров, но я не знаю как это сделать.

    Code:
    void runFile()
    {
    if(y!=0)
    {
     FILE *f;
     f=fopen("pkp.txt", "w");
     for(int i=0;i<l;i++)
     {
       const int N = 20;  // размер массива
    	commodity ar[N]; // массив структур
        date currentDate;// объект структуры для текущей датты
     
        // текущая дата
        currentDate.dd = 13;
        currentDate.mm = 03;
        currentDate.yy = 2016;
    	
    
    	// сначала отсортируем массив структур по названию товаров
        for(int i(1); i < N; i++){
            for(int j(N-1); j >= i; j--){
                for(int k(0); ar[j-1].name[k]; k++){
                    if(ar[j-1].name[k] > ar[j].name[k]) { swapp(ar[j-1],ar[j]); break; } // если буква первого слова больше чем буква второго, то меняем местами слова и переходим к следующему слову
                    else if(ar[j-1].name[k] == ar[j].name[k]) continue; // если буквы равны, то проверяем следующую букву
                    else break;
                }
    			
            }
        }
     
        // теперь выведем те товары, которые соответсвуют заданным условиям
        // т.е. их цена больше 1000000 и лежат на складе больше месяца
        for(int i(0); i < N; i++){
        if(ar[i].price > 1000000)
            if(currentDate.yy > ar[i].d.yy) cout << ar[i].name << endl;
            else if(currentDate.mm > ar[i].d.mm && currentDate.dd > ar[i].d.dd) cout << ar[i].name << endl;
        }
    	cin.get();
       }
        for(int i=0;i<l;i++)//записываем данные в файл
       {
     fprintf(f,"%s\n",r[i].name);
     fprintf(f,"%d\n",&r[i].num);
     fprintf(f,"%s\n",&r[i].price);
     fprintf(f,"%s\n",&r[i].d.dd);
     fprintf(f,"%s\n",&r[i].d.mm);
     fprintf(f,"%s\n",&r[i].d.yy);
     }
     u++;
     fclose(f);
    }
    else
     printf("ne sozdan");
    _getch();
    }
     
  13. nekitos911

    nekitos911 Member

    Joined:
    22 Nov 2016
    Messages:
    46
    Likes Received:
    10
    Reputations:
    9
    Нужно написать плавную сортировку на NASMе,может кто помочь?
     
  14. pastword

    pastword New Member

    Joined:
    19 Feb 2017
    Messages:
    18
    Likes Received:
    0
    Reputations:
    0
    Помогите (С#)
    Поиск файлов в директориях и поддиректориях. Как это осуществить, нашел в MSDN вот эту рекурсию:
    blic static ArrayList DirSearch(string sDir, ArrayList virList)
    {
    try
    {
    foreach (string d in Directory.GetDirectories(sDir))
    {
    foreach (string f in Directory.GetFiles(d, "IMG001.exe"))
    {
    //lstFilesFound.Items.Add(f);
    virList.Add(f);

    }
    DirSearch(d, virList);
    }
    }
    catch (System.Exception excpt)
    {
    //MessageBox.Show(excpt.ToString());
    }
    return virList;


    }
    поиск продолжается в другую поддиректорию как только код пытается войти в какую нибудь системную директорию, например если в диске есть такие папки:
    папка-1
    папка-2
    папка-3
    SystemVolumeInformation
    папка-4
    папка-N
    То поиск будет проведен до директории "папка-3" включительно.
    ВОПРОС В ТОМ КАК СДЕЛАТЬ ПОИСК В ПАПКЕ - 4 и ПАПКА-N?
     
  15. SooLFaa

    SooLFaa Members of Antichat

    Joined:
    17 Mar 2014
    Messages:
    530
    Likes Received:
    499
    Reputations:
    154
    Изи же. Список всех директорий и по ним бежишь (это если надо не до первого найденного файла а все возможные пути смотреть) в противном случае терминатор на рекурсии.
    Сам не справишься велком ту лс напишу тебе вечерком тулзятину. И разумеется скину в тему
     
    _________________________
  16. pastword

    pastword New Member

    Joined:
    19 Feb 2017
    Messages:
    18
    Likes Received:
    0
    Reputations:
    0
    да, да, да типа исключить некоторые директории из поиска, как сделать, буду ждать, спасибо за ранее.
     
  17. SooLFaa

    SooLFaa Members of Antichat

    Joined:
    17 Mar 2014
    Messages:
    530
    Likes Received:
    499
    Reputations:
    154
    https://codepaste.net/a7ffct
    Code:
    using System;
    using System.IO;
    
    namespace FileScan
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine(FindInDir(new DirectoryInfo(@"C:\"), "test.txt", true));
            }
    
            public static string FindInDir(DirectoryInfo dir, string pattern, bool recursive)
            {
                string files = "";
                foreach (FileInfo file in dir.GetFiles(pattern))
                {
                    files += (file.FullName + "\n");
                }
    
                if (recursive)
                {
                    foreach (DirectoryInfo subdir in dir.GetDirectories())
                    {
                        try {
                            FindInDir(subdir, pattern, recursive);
                        }
                        catch (UnauthorizedAccessException)
                        {
                            continue;
                        }
                    }
                }
                return files;
            }
    
        }
    }
    
    
     
    _________________________
    pastword likes this.
  18. pastword

    pastword New Member

    Joined:
    19 Feb 2017
    Messages:
    18
    Likes Received:
    0
    Reputations:
    0
    круто! работает!.
    есть еще одна проблемка я пишу на WForms, и хотел чтобы поисковик искал во всех дисках. Делаю так:
    string[] drivers = Directory.GetLogicalDrives();
    bool b = false;
    for (int i = 0; i < drivers.Length; i++)
    {
    if (string.Compare(drivers[], @"C:\", true) == 0)
    b = false;//в C:\ очень много подкаталогов так что пока не буду капать глубоко
    else b = true;
    FindInDir(new DirectoryInfo(drivers[]), "IMG001.exe", b);
    }

    У меня 3 диска (C, H, L), а GetLogicalDrivers(); возвращает 5 дисков (C,D,G,H,L), как исключить 2 не существующих диска из поиска

    к стати я внес немного изменения в метод FindInDir сделав его public void - ом короче:
    public static ArrayList virList = new ArrayList();
    public void FindInDir(DirectoryInfo dir, string pattern, bool recursive)
    {
    foreach (FileInfo file in dir.GetFiles(pattern))
    {
    virList.Add(file.FullName);
    }...
     
    #18 pastword, 6 Mar 2017
    Last edited: 6 Mar 2017
  19. pastword

    pastword New Member

    Joined:
    19 Feb 2017
    Messages:
    18
    Likes Received:
    0
    Reputations:
    0
    все нашел решение:
    string[] drivers = Directory.GetLogicalDrives();
    bool b = false;
    for (int i = 0; i < drivers.Length; i++)
    listBox2.Items.Add(drivers);
    for (int i = 0; i < drivers.Length; i++)
    {
    if (Directory.Exists(drivers))
    {
    b = (string.Compare(drivers, @"C:\", true) == 0) ? false : true;
    FindInDir(new DirectoryInfo(drivers), "IMG001.exe", b);
    }
    else continue;
    }
     
  20. vladrom

    vladrom New Member

    Joined:
    8 May 2017
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Здравствуйте. Нужна помощь с кодом. Тема задания "Классы(Абстрактные)". Задания прикреплю как и код. Кому не сложно помогите, пожалуйста. Код не компилируется.

    Код:
    Code:
    #include <iostream>
    #include <string>
    
    using namespace std;
    
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    class Date {
    private:
        int year, month, day;
    public:
        Date() {
            year = 1; month = 1; day = 1;
        }
        Date(int y, int m, int d) { year = y; month = m; day = d; }
    
        void setDate(int new_y, int new_m, int new_d){
            year = new_y;
            month = new_m;
            day = new_d;
        }
    
        int getYear(){
            return year;
        }
        int getMonth(){
            return month;
        }
        int getDay(){
            return day;
        }
    
        void Show() {
            cout << day << "." << month << "." << year << endl;
        }
    };
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    class Software {
    protected:
        string p_name, p_manufacturer;
    public:
        Software() {}
        Software(string Name, string Manufacturer) : p_name(Name), p_manufacturer(Manufacturer) {}
        virtual void Show(){
            cout << "Name " << p_name << endl;
            cout << "Manufacturer " << p_manufacturer << endl;
        }
        virtual void TimeUse(Date *dat) = 0;
    };
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    class FreeSoftware : public Software {
    public:
        FreeSoftware() {}
        FreeSoftware(string Name, string Manufacturer) : Software(Name, Manufacturer)
        {}
    
        void setFreeSoftware(string new_Name, string new_Manufacturer) {
            p_name = new_Name;
            p_manufacturer = new_Manufacturer;
        }
    
        string getName() {
            return p_name;
        }
        string getManufacturer() {
            return p_manufacturer;
        }
    
        void TimeUse(Date *data) {
            cout << "Not limited" << endl;
        }
    };
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    class SharewareSoftware : public Software {
    private:
        Date *p_date;
        int p_freetimeuse;
    public:
        SharewareSoftware() {}
        SharewareSoftware(string Name, string Manufacturer, Date *Date, int Freetime) : Software(Name, Manufacturer), p_date(Date), p_freetimeuse(Freetime)
        {}
    
        void setSharewareSoftware(string new_Name, string new_Manufacturer, Date *new_Date, int new_FreeTimeUse) {
            p_name = new_Name;
            p_manufacturer = new_Manufacturer;
            p_date = new_Date;
            p_freetimeuse = new_FreeTimeUse;
        }
    
        string getName() {
            return p_name;
        }
        string getManufacturer() {
            return p_manufacturer;
        }
        Date *getDate() {
            return p_date;
        }
        int getFreeTimeUse() {
            return p_freetimeuse;
        }
    
        void Show() {
            Software::Show();
            cout << "Date "; p_date->Show();
            cout << "FreeTimeUse " << p_freetimeuse << " year(s)" << endl;
        }
    
        void TimeUse(Date *data1) {
            if (p_date->getYear() + p_freetimeuse < data1->getYear()) {
                if (p_date->getMonth() < data1->getMonth()) {
                    if (p_date->getDay() < data1->getDay()) {
                        cout << "It is possible to use" << endl;
                    }
                    else cout << "Cant't use it" << endl;
                }
                else cout << "Cant't use it" << endl;
            }
            else cout << "Cant't use it" << endl;
        }
    };
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    class ProprietarySoftware : public Software {
    private:
        Date *p_date;
        int p_timeuse;
        float p_price;
    public:
        ProprietarySoftware(){}
        ProprietarySoftware(string Name, string Manufacturer, Date *Date, int TimeUse, float Price) : Software(Name, Manufacturer), p_date(Date), p_timeuse(TimeUse), p_price(Price)
        {}
    
        void setSharewareSoftware(string new_Name, string new_Manufacturer, Date *new_Date, int new_TimeUse, float new_Price) {
            p_name = new_Name;
            p_manufacturer = new_Manufacturer;
            p_date = new_Date;
            p_timeuse = new_TimeUse;
            p_price = new_Price;
        }
    
        string getName() {
            return p_name;
        }
        string getManufacturer() {
            return p_manufacturer;
        }
        Date *getDate() {
            return p_date;
        }
        int getTimeUse() {
            return p_timeuse;
        }
        float getPrice() {
            return p_price;
        }
    
        void Show() {
            Software::Show();
            cout << "Date "; p_date->Show();
            cout << "TimeUse " << p_timeuse << " year(s)" << endl;
            cout << "Price " << p_price << endl;
        }
    
        void TimeUse(Date *data2) {
            if ((p_date->getYear() + p_timeuse) < data2->getYear()) {
                if (p_date->getMonth() < data2->getMonth()) {
                    if (p_date->getDay() < data2->getDay()) {
                        cout << "It is ppssible to use" << endl;
                    }
                    else cout << "Cant't use it" << endl;
                }
                else cout << "Cant't use it" << endl;
            }
            else cout << "Cant't use it" << endl;
        }
    };
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    int main() {
        int year, month, day;
        cout << "Enter date ";
        cout << "day "; cin >> day;
        cout << "\t month "; cin >> month;
        cout << "\t year "; cin >> year;
        Date *today = new Date(day, month, year);
    
        Software *objects[3];
        objects[0] = new FreeSoftware("Programma", "Sozdatel");
        objects[1] = new SharewareSoftware("Programma2", "Sozdatel2", new Date(15, 3, 2017), 2);
        objects[2] = new ProprietarySoftware("Programma3", "Sozdatel3", new Date(24, 11, 2016), 1, 100);
    
        for (int i = 0; i < 4; i++)
        {
            objects[i]->Show();
            cout << "Software: ";
            objects[i]->TimeUse(new Date(day, month, year));
        }
        for (int i = 0; i < 4; i++)
        {
            delete objects[i];
        }
        system("pause");
        return 0;
    }