Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Тестовое задание для трудоустройства - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как в с++ прописать оператор Shape, чтобы при перемещении по форме он менял свои очертания? http://www.cyberforum.ru/cpp-beginners/thread990564.html
Как в с++ прописать оператор Shape, чтобы при перемещении по форме он менял свои очертания?) например, в левом верхнем углу он был квадратом, в правом верхнем чтобы стал кругом. вот фрагмент кода,...
C++ Массивы. Указатели. Обработка одномерных массивов Определите сумму элементов массива, расположенных до максимального. Не вводить максимальный элемент, а находить его) http://www.cyberforum.ru/cpp-beginners/thread990559.html
Написать программу, вычисляющую значение выражения C++
Помогите решить задачку с использованием основных операторов языка С++
Массивы, указатели, обработка одномерных массивов C++
Вывести на экран все числа заданной последовательности, индексы которых есть степени тройки. Определить в заданной последовательности целых чисел количество чисел, которые являются степенью тройки. ...
C++ Создать класс с данными о человеке http://www.cyberforum.ru/cpp-beginners/thread990513.html
Создать класс с данными о человеке. В классе должны отражаться следующие сведения: идентификационный код, год рождения и заработная плата, а также функции ввода / вывода этих сведений. После этого...
C++ Последовательность Даны натуральное число n,действительные числа а,x1....xn (x1<=x2<=...<=xn).Получить последовательность y1...yn+1,членами которой являются члены последовательности x1....xn и значение а ,такую ,что... подробнее

Показать сообщение отдельно
MechanicPaul
2 / 2 / 0
Регистрация: 25.05.2013
Сообщений: 157

Тестовое задание для трудоустройства - C++

28.10.2013, 16:07. Просмотров 1828. Ответов 11
Метки (Все метки)

Решил попробовать устроиться в компанию и узнать что вообще и как.
Отправил в компанию резюме, дали тестовое задание:
Страуструп. Глава 6, Упражнения 6.6., задание 22, страница 184. (издание 2002г.)
Напишите программу, которая удаляет комментарии из программы на C++.

Пусть она читает из текстового файла, удаляет комментарии обоих видов (// и /* */) и записывает результат в новый текстовый файл.
Не заботьтесь о внешнем виде вывода.
Считайте что // /* и */ не будут содержаться в самих комментариях, строках и символьных константах.
Решение должно быть на C++ языке. При решении задачи можно использовать любые сторонние библиотеки и любую среду разработки. Исходные коды решения присылайте в виде zip-архива. Бинарный файл не нужен.

Я вот решил задачу.
В ответ получил:
"Ваше тестовое задание мы получили.
Но, в выполненном Вами тестовом задании было найдено много ошибок, и к сожалению, в настоящий момент мы не готовы сделать Вам предложение о работе. Мы выполняем сложные проекты, и полагаем, что Ваших знаний и опыта будет недостаточно для работы над этими проектами. Ваше резюме мы внесли в наш «банк данных», если произойдут какие-либо изменения, мы Вам перезвоним."

Собственно вот в чём вопрос: Каким образом должно выглядеть решение подобной задачи? Чего не хватает ребятам для компаний? Люди, которые уже проходили подобные тестирования итп, дайте советов)

Вот мой способ реализации этой программы.
Кликните здесь для просмотра всего текста
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#include <iostream>
#include <string>
#include <fstream>
#include <cstring>
 
using namespace std;
 
void deleteCommentsInFile(ifstream& file){
    string temp_str;
    string rezult_str;
 
    //активность многострочного комментария
    bool multiLineComment = false;
 
    while(!file.eof())
    {
        //строчное считывание
        getline(file, temp_str, '\n');
 
        //поиск однострочных комментариев
        if(temp_str.find("//") != string::npos){
            temp_str.erase(temp_str.find("//"),temp_str.length() - temp_str.find("//"));    
        }
        //поиск многострочных комментариев
        else if(temp_str.find("/*") != string::npos)
        {
            //удаляем всё что после многострочного комментария
            temp_str.erase(temp_str.find("/*"), temp_str.length() - temp_str.find("/*"));
 
            //если что-то было до него, то добавляем это в результат
            if(temp_str.length())
                rezult_str += temp_str;
 
            //пропускаем всё, пока не встретим конец многострочного комментария " */ " 
            multiLineComment = true;
            file >> temp_str;
            while(multiLineComment == true)
            {
                int strInd = 0;
                for(strInd; strInd < temp_str.length(); strInd++)
                {   
                    if(temp_str.at(strInd) == '*' && temp_str.at(strInd + 1) == '/'){
                        multiLineComment = false;
                        strInd += 2;
                    }
                    //добавляем всё, что было после закрывающего тега в строке с ним
                    if(multiLineComment == false){
                        while(strInd < temp_str.length())
                        {
                            rezult_str += temp_str.at(strInd);
                            ++strInd;
                        }
                        rezult_str.append("\n");
                    }
                }
                file >> temp_str;
            }
        }
        rezult_str += temp_str;      
        rezult_str.append("\n");  
    }
 
    //вывод на консоль и запись в файл
    cout << rezult_str << endl;
    ofstream outFile("out.txt");
    outFile << rezult_str;
    outFile.close();
}
 
int main()
{
    //открываем файл
    ifstream file("input.txt");
  
    //если файл не открылся
    if(!file)
    {
        cerr<<"Error when try to open \"input.txt\"."<<endl;
        exit(-1);
    }else{
        deleteCommentsInFile(file);
    }
    file.close();
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru