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

Не правильно работает программа - C++

Восстановить пароль Регистрация
 
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,888
Записей в блоге: 1
19.11.2011, 12:28     Не правильно работает программа #1
Написал программу но она чего то не правильно работает вот код:
C++
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
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
   string name;
   char text;
   cout << "Name File" << endl;
   cin >> name;
   ifstream f(name.c_str());
   while (!f.eof())
   {
      f >> text;
      cout << text;
   }
   cout << "Name save file" << endl;
   string namesave;
   cin >> namesave;
   ofstream of(namesave.c_str());
   of << tolower(text);
 
 
    
    system("pause");
    return 0;
}
Программа должна открыть файл и все что там перевести в нижний регистр букв, а потом записать все это файл.

Программа запускается но место того что бы перевести текcт QWERTY в нижний регистр, она в файл записует значения 121
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
LostCoast
82 / 82 / 5
Регистрация: 30.09.2011
Сообщений: 404
Записей в блоге: 6
19.11.2011, 12:52     Не правильно работает программа #2
C++
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
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
   string name;
   char text[80];
   ifstream f("test.txt");
   if (!f) return 1;
   while (!f.eof())
   {
      f >> text;
      cout << text;
   }
   
   cout << endl;
   ofstream of("test.txt");
   if (!of) return 1;
   for (int i = 0; i < strlen(text); i++)
       of << (char ) tolower(text[i]);
   of.close();
    
   system("pause");
   return 0;
}
держи

Добавлено через 1 минуту
Поясню, функция tolower возвращает int, поэтому она переводила тебе первую букву в нижний регистр и возвращала в виде числа. Здесь нужно явное преобразование типов.
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,888
Записей в блоге: 1
19.11.2011, 12:54  [ТС]     Не правильно работает программа #3
Цитата Сообщение от LostCoast Посмотреть сообщение
C++
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
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
   string name;
   char text[80];
   ifstream f("test.txt");
   if (!f) return 1;
   while (!f.eof())
   {
      f >> text;
      cout << text;
   }
   
   cout << endl;
   ofstream of("test.txt");
   if (!of) return 1;
   for (int i = 0; i < strlen(text); i++)
       of << (char ) tolower(text[i]);
   of.close();
    
   system("pause");
   return 0;
}
держи

Добавлено через 1 минуту
Поясню, функция tolower возвращает int, поэтому она переводила тебе первую букву в нижний регистр и возвращала в виде числа. Здесь нужно явное преобразование типов.
я как бы новичек а де здесь выполняется преобразования типов??? и как работает функция strlen
emilen
10 / 10 / 0
Регистрация: 25.05.2010
Сообщений: 52
19.11.2011, 12:55     Не правильно работает программа #4
C++
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
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
   string name;
   char text;
   cout << "Name File" << endl;
   cin >> name;
   ifstream f(name.c_str());
   cout << "Name save file" << endl;
   string namesave;
   cin >> namesave;
   ofstream of(namesave.c_str());
  
   while (!f.eof())
   {
      f >> text;
      cout << text;
      of << (char)tolower(text);
   }
        system("pause");
        return 0;
}
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,888
Записей в блоге: 1
19.11.2011, 13:00  [ТС]     Не правильно работает программа #5
Цитата Сообщение от emilen Посмотреть сообщение
C++
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
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
   string name;
   char text;
   cout << "Name File" << endl;
   cin >> name;
   ifstream f(name.c_str());
   cout << "Name save file" << endl;
   string namesave;
   cin >> namesave;
   ofstream of(namesave.c_str());
  
   while (!f.eof())
   {
      f >> text;
      cout << text;
      of << (char)tolower(text);
   }
        system("pause");
        return 0;
}
Знаю что задолбал но вот хотел спросить.
Вот мне дали задания: в нем надо по удалять в тексте с буквы D. это ваше можно удалить их спомошью оператора delete
LostCoast
82 / 82 / 5
Регистрация: 30.09.2011
Сообщений: 404
Записей в блоге: 6
19.11.2011, 13:07     Не правильно работает программа #6
strlen() - возвращает длину строки.
функция tolower возвратит тебе число а не символ, поэтому перед функцией нужно поставить (char), чтобы вернулся символ а не число, думаю скоро узнаешь про это.
delete очищает выделенную память для переменной. Чтобы удалить букву D можно просто поставить в цикле условие не печатать эту букву
C++
1
2
3
4
for (i = 0; i < 10; i++) {
   if (ch[i] != 'D')
     cout << ch[i];
}
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,888
Записей в блоге: 1
19.11.2011, 13:09  [ТС]     Не правильно работает программа #7
Цитата Сообщение от LostCoast Посмотреть сообщение
strlen() - возвращает длину строки.
функция tolower возвратит тебе число а не символ, поэтому перед функцией нужно поставить (char), чтобы вернулся символ а не число, думаю скоро узнаешь про это.
delete очищает выделенную память для переменной. Чтобы удалить букву D можно просто поставить в цикле условие не печатать эту букву
C++
1
2
3
4
for (i = 0; i < 10; i++) {
   if (ch[i] != 'D')
     cout << ch[i];
}
ну спасибо попрубую сегодня. Сори а если мне надо удалить слово где буква d
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.11.2011, 13:39     Не правильно работает программа
Еще ссылки по теме:

C++ Не правильно работает программа
C++ Почему программа не работает правильно?
C++ Программа работает не совсем правильно

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

Или воспользуйтесь поиском по форуму:
mc.Duck
Заблокирован
19.11.2011, 13:39     Не правильно работает программа #8
Sylar9, все! Задача 100% решена:
C++
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 <iostream>
#include <fstream>
#include <string>
using namespace std;
 
char* strtolower(char* s,int length)                  //функция преобразования слов 
{                                                     //из верхнего регистра в нижний
      for(int i=0;i<=length;i++)
      {
              if(s[i]>=65 && s[i]<=90) s[i]+=32;
              }
              return s;
      }
 
int main()
{
   string name;
   char stroka[100][100];                            //Максимальная длина строки - 100 симвволов!
   int line_count=0;
   char text;
   cout << "Name File" << endl;
   cin >> name;
   cout<<endl;cout<<endl;
   ifstream f(name.c_str());
   while (!f.eof())
   {
         line_count++;
      f.getline(stroka[line_count],100);              //лучше пользоваться методом "getline"
          cout << stroka[line_count]<<endl;
   }
   cout<<endl;cout<<endl;
   cout << "Name save file" << endl;
   string namesave;
   cin >> namesave;
   ofstream of(namesave.c_str());
   for(int i=1;i<=line_count;i++)
   {
           of<<strtolower(stroka[i],100)<<endl;         //записываем строку в нижнем регистре в файл
           }
 
 
    
        system("pause");
        return 0;
}
Yandex
Объявления
19.11.2011, 13:39     Не правильно работает программа
Ответ Создать тему
Опции темы

Текущее время: 09:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru