Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
sweetydady
6 / 2 / 0
Регистрация: 19.02.2012
Сообщений: 40
1

помогите с операторами while и for

03.05.2012, 19:45. Просмотров 595. Ответов 11
Метки нет (Все метки)

есть программа, и мне нужно чтоб выводило информацию о файле во время оператора while.
все работает, если оставить один if и к нему добавить else, но мне нужно чтоб несколько вариантов выводило, например : файл скрытый, и только для чтения.
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
#include <windows.h>
#include <iostream>
 
using namespace std;
 
int main()
{
  DWORD  file_attr;
 
  // Г·ГЁГІГ*ГҐГ¬ Г*òðèáóòû ГґГ*éëГ*
  file_attr = GetFileAttributes("D:\\hello.jpg");
  if(file_attr == -1)
  {
    cerr << "Get file attributes failed." << endl
      << "The last error code: " << GetLastError() << endl;
    cout << "Press any key to finish.";
    cin.get();
    return 0;
  }  
  // ïðîâåðÿåì, ГЄГ*êîé ГЅГІГ® ГґГ*éë
while (file_attr == -1)
  {
  if(file_attr == FILE_ATTRIBUTE_NORMAL)
    cout << "This is a normal file." << endl;
   
  if(file_attr == FILE_ATTRIBUTE_HIDDEN)
    cout << "This is a hidden file." << endl;
    
  if(file_attr == FILE_ATTRIBUTE_READONLY)
    cout << "This is not a ReadOnly file." << endl;
  
  if(file_attr == FILE_ATTRIBUTE_SYSTEM)
    cout << "This is not a System file." << endl;
   
  if(file_attr == FILE_ATTRIBUTE_TEMPORARY)
    cout << "This is not a TEMPORARY file." << endl;
    
  if(file_attr == FILE_ATTRIBUTE_COMPRESSED)
    cout << "This is not a COMPRESSED file." << endl;
}
 
  system ("pause");
  
  return 0;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.05.2012, 19:45
Ответы с готовыми решениями:

Работа с операторами
Как многие идущие к своей цели програмисты я встретился с таким делом как...

Работа с операторами(+,-) в С++
Доброго времени суток, имеются 2 вектора типа int, например: vector&lt;int&gt; v1...

Задания с операторами
Тут такая фишка оч нужна помощь 1а)Даны три различных числа. Среднее из них...

Робота с операторами C++
Створити клас Дріб полями чисельник та знаменник. Визначити наступні методи для...

Программа с операторами if else
В заданиях требуется для рисунка, на которых области обозначены римскими...

11
Toshkarik
1149 / 866 / 90
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 1
03.05.2012, 20:02 2
Ну а Вы сами как думаете, если переменная file_attr имеет целочисленный тип и может в один момент времени быть равна только одному значению.
1
sweetydady
6 / 2 / 0
Регистрация: 19.02.2012
Сообщений: 40
03.05.2012, 20:05  [ТС] 3
Цитата Сообщение от Toshkarik Посмотреть сообщение
Ну а Вы сами как думаете, если переменная file_attr имеет целочисленный тип и может в один момент времени быть равна только одному значению.
Вы не подскажите что сделать, а то мозги уже кипят(
0
Toshkarik
1149 / 866 / 90
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 1
03.05.2012, 20:10 4
Скорей всего тут возвращается значение флагов. Я еще пока не знаком с WinAPI, но могу предположить, что нужно сравнивать с помощью битовых операций. В данном случае битовой операции &. Попробуйте
C++
1
if ( file_attr & FILE_ATTRIBUTE_NORMAL )
и так с каждым условием.
0
sweetydady
6 / 2 / 0
Регистрация: 19.02.2012
Сообщений: 40
03.05.2012, 20:22  [ТС] 5
Цитата Сообщение от Toshkarik Посмотреть сообщение
Скорей всего тут возвращается значение флагов. Я еще пока не знаком с WinAPI, но могу предположить, что нужно сравнивать с помощью битовых операций. В данном случае битовой операции &. Попробуйте
C++
1
if ( file_attr & FILE_ATTRIBUTE_NORMAL )
и так с каждым условием.
не работает
0
amfisat
67 / 67 / 36
Регистрация: 16.06.2009
Сообщений: 240
03.05.2012, 20:28 6
Если верить msdn, то функция GetFileAttributes возвращает не целое число, но список элементов (атрибутов), потому и не срабатывает условие
C++
1
 if(file_attr == -1)
0
Toshkarik
1149 / 866 / 90
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 1
03.05.2012, 20:29 7
С того же msdn
C++
1
2
3
DWORD WINAPI GetFileAttributes(
  __in  LPCTSTR lpFileName
);
Как мы видим функция возвращает целое число.
0
sweetydady
6 / 2 / 0
Регистрация: 19.02.2012
Сообщений: 40
03.05.2012, 20:33  [ТС] 8
так что ж мне делать? курсак горит
0
Toshkarik
1149 / 866 / 90
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 1
03.05.2012, 20:35 9
А что именно не работает в предложенном мной варианте? По идеи все должно работать.
0
sweetydady
6 / 2 / 0
Регистрация: 19.02.2012
Сообщений: 40
03.05.2012, 20:36  [ТС] 10
Цитата Сообщение от Toshkarik Посмотреть сообщение
А что именно не работает в предложенном мной варианте? По идеи все должно работать.
пишет нажмите кнопку для продолжения (выхода) и все
0
Toshkarik
1149 / 866 / 90
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 1
03.05.2012, 20:38 11
Так правильно, условия цикла что в себе содержит? Делать пока file_attr равна -1? Если с файлом все в порядке то оно и выполнятся не будет.

Добавлено через 49 секунд
Если вам нужно просто вывести все атрибуты один раз, то вообще уберите цикл.
1
sweetydady
6 / 2 / 0
Регистрация: 19.02.2012
Сообщений: 40
03.05.2012, 20:42  [ТС] 12
Цитата Сообщение от Toshkarik Посмотреть сообщение
Так правильно, условия цикла что в себе содержит? Делать пока file_attr равна -1? Если с файлом все в порядке то оно и выполнятся не будет.

Добавлено через 49 секунд
Если вам нужно просто вывести все атрибуты один раз, то вообще уберите цикл.
ЗАРАБОТАЛО!!! Огромнейшее спасибо!!
0
03.05.2012, 20:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.05.2012, 20:42

Проблема с операторами
начинаю работаю на VC10 ввожу #include &lt;iostream.h&gt; почеркивает и пишет,...

Запись и считывание операторами << >>
Ребят, прошу помочь. Нужно создать класс с 3мя полями. Имя, фамилия и номер...

Задания с операторами выбора
Задали две программы а материал не обьяснили сам пробывал но запутался с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru