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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Stl
 Аватар для Stl
0 / 0 / 0
Регистрация: 05.05.2009
Сообщений: 7
#1

Проверьте, в чем ошибка? - C++

05.05.2009, 10:35. Просмотров 371. Ответов 8
Метки нет (Все метки)

Задача, в том что надо открыть 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
27
28
29
30
31
32
33
34
35
#include <fstream.h>
#include <string.h>
#include <iostream.h>
#include <ctype.h>
 
#define BUF_SIZE 512
 
void main()
{
    fstream in,out;
    char string[BUF_SIZE];
    while (1){
        cout<<"Enter file name: ";
        cin>>string;
        in.clear();
        in.open(string,ios::in|ios::nocreate|ios::binary);
        if (!in) {cerr<<"\n нет такого файла \n";continue;}
        else break;
    }
    out.open("111.txt",ios::out|ios::binary);
 
 
    while (!in.eof())
    {
        in.read(string,BUF_SIZE);
        for(unsigned i=0;i<strlen(string);i++){
            if (isalpha(string[i])) out.put(' ');
            if (string[i]==' ') out.put('*');
            out.put(string[i]);
        }
    }
    in.close();
    out.close();
    cout<<"\n ок \n";
}
буду рад любым замечаниям.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.05.2009, 10:35     Проверьте, в чем ошибка?
Посмотрите здесь:

C++ В чем ошибка
В чем ошибка? C++
у меня ошибка в коде проверьте!!! C++
В чем ошибка? C++
в чем ошибка? C++
C++ в чем ошибка?
C++ В чем ошибка?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Patch
2276 / 491 / 11
Регистрация: 01.04.2009
Сообщений: 2,178
05.05.2009, 10:38     Проверьте, в чем ошибка? #2
можеть хоть напишешь, что не работает?
Stl
 Аватар для Stl
0 / 0 / 0
Регистрация: 05.05.2009
Сообщений: 7
05.05.2009, 10:49  [ТС]     Проверьте, в чем ошибка? #3
Цитата Сообщение от Patch Посмотреть сообщение
можеть хоть напишешь, что не работает?
text.txt
Код
123 qwe
 1 q 2 w e r... ! 
098 *
111.txt
Код
123*  q w e  //не поменяло, а добавило * и ' ' 
* 1*  q* 2*  w*  e*  r...* !* //работает не правильно
098* *
Rififi
 Аватар для Rififi
2332 / 1047 / 43
Регистрация: 03.05.2009
Сообщений: 2,656
05.05.2009, 10:58     Проверьте, в чем ошибка? #4
if ...
else if ...
else ...
Patch
2276 / 491 / 11
Регистрация: 01.04.2009
Сообщений: 2,178
05.05.2009, 11:02     Проверьте, в чем ошибка? #5
так у тебя нет прерывания цикла при проверке условий.
он проверет одно - делает что надо, дальше проверят второе - делает второе, и наконец копирует исходный символ.
сделай так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
                for(unsigned i=0;i<strlen(string);i++){
                        if (isalpha(string[i]))
                             {
                                   out.put(' ');
                                   continue;
                              }
                        if (string[i]==' ') 
                             {
                                   out.put('*');
                                   continue;
                              }
                        out.put(string[i]);
                }
Stl
 Аватар для Stl
0 / 0 / 0
Регистрация: 05.05.2009
Сообщений: 7
05.05.2009, 11:10  [ТС]     Проверьте, в чем ошибка? #6
Цитата Сообщение от Patch Посмотреть сообщение
так у тебя нет прерывания цикла при проверке условий.
он проверет одно - делает что надо, дальше проверят второе - делает второе, и наконец копирует исходный символ.
сделай так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
                for(unsigned i=0;i<strlen(string);i++){
                        if (isalpha(string[i]))
                             {
                                   out.put(' ');
                                   continue;
                              }
                        if (string[i]==' ') 
                             {
                                   out.put('*');
                                   continue;
                              }
                        out.put(string[i]);
                }
спасибо, цикл работает.
только isalpha проверка букв, а нужно цифр, погуглив не нашел.
ISergey
Maniac
Эксперт С++
 Аватар для ISergey
1345 / 878 / 51
Регистрация: 02.01.2009
Сообщений: 2,643
Записей в блоге: 1
05.05.2009, 11:14     Проверьте, в чем ошибка? #7
Цитата Сообщение от Stl Посмотреть сообщение
только isalpha проверка букв, а нужно цифр, погуглив не нашел.
isdigit
YurA_280784
Заблокирован
05.05.2009, 11:21     Проверьте, в чем ошибка? #8
Ошибка вот здесь
C++
1
2
3
if (isalpha(string[i])) out.put(' ');
                        if (string[i]==' ') out.put('*');
                        out.put(string[i]);
1 - е сначала пробелы надо на звёздочки менять, а потом только цифры на пробелы
2 - е цифры проверяют не isalpha - это проверка букв, а isdigit
вообщем вот как надо
C++
1
2
3
4
5
6
7
if (string[i]==' ') 
     out.put('*');
else
if(isdigit(string[i])) 
out.put(' ');
else
out.put(string[i]);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.05.2009, 11:22     Проверьте, в чем ошибка?
Еще ссылки по теме:

C++ в чем ошибка?
В чем ошибка? C++
C++ В чем ошибка?
C++ В чем ошибка?
C++ В чем ошибка?

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

Или воспользуйтесь поиском по форуму:
Stl
 Аватар для Stl
0 / 0 / 0
Регистрация: 05.05.2009
Сообщений: 7
05.05.2009, 11:22  [ТС]     Проверьте, в чем ошибка? #9
Цитата Сообщение от ISergey Посмотреть сообщение
isdigit
спасибо.
Yandex
Объявления
05.05.2009, 11:22     Проверьте, в чем ошибка?
Ответ Создать тему
Опции темы

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