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

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

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

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

05.05.2009, 10:35. Просмотров 379. Ответов 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++
Определить максимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы 1) произведения элементов в тех строках,...

Реализовать через тип данных структура. При сборке и отладки возникает ошибка. В чем ошибка? - C++
С++ в таблице из 5 строк хранятся данные о товарах: наименование, цена, количество. Определить и вывести наименование товара, цена которого...

Ошибка 2 error LNK2019, не пойму в чем ошибка - C++
Выдает такую ошибку: Ошибка 2 error LNK2019: ссылка на неразрешенный внешний символ &quot;int __cdecl game(void)&quot; (?game@@YAHXZ) в функции....

В чем ошибка? - C++
#include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;cmath&gt; #include &lt;ctime&gt; using namespace std; int main () { int n=0; ...

В чем ошибка? - C++
В чем ошибка там, где подчеркнута строка желтым? Я так понял, там что-то про сочетание констант и логических значений типа &quot;bool&quot;, что...

в чем ошибка? - C++
#include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; int main() { float x,y; cout&lt;&lt;&quot;vvedite x:&quot;; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Patch
2276 / 491 / 11
Регистрация: 01.04.2009
Сообщений: 2,178
05.05.2009, 10:38 #2
можеть хоть напишешь, что не работает?
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
2359 / 1054 / 44
Регистрация: 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
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
Эксперт С++
1373 / 884 / 52
Регистрация: 02.01.2009
Сообщений: 2,653
Записей в блоге: 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]);
Stl
0 / 0 / 0
Регистрация: 05.05.2009
Сообщений: 7
05.05.2009, 11:22  [ТС] #9
Цитата Сообщение от ISergey Посмотреть сообщение
isdigit
спасибо.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.05.2009, 11:22
Привет! Вот еще темы с ответами:

в чем ошибка - C++
#include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;conio.h&gt; void main() { double a, b, c, d, f, e, g, x, y; ...

В чем ошибка? - C++
Пишет что мол использована неинициализированная переменная b, y и x. Вроде все обьявлено же, что за прикол? #include &lt;iostream&gt; ...

В чем ошибка - C++
Я пытаюсь вывести элементы массива в обратном порядке, в чем моя ошибка Добавлено через 10 секунд #include &lt;iostream&gt; using...

в чем ошибка? - C++
#include &quot;stdafx.h&quot; #include&lt;iostream&gt; #include&lt;conio.h&gt; #include&lt;clocale&gt; #include&lt;string&gt; using namespace std; int...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
05.05.2009, 11:22
Ответ Создать тему
Опции темы

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