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

Поиск ошибки в коде - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Uinslou
Старичок :)
 Аватар для Uinslou
728 / 315 / 5
Регистрация: 03.04.2011
Сообщений: 1,430
15.04.2011, 13:01     Поиск ошибки в коде #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 "stdafx.h"
#include <conio.h> 
#include <iostream>
 
using namespace std;
 
void main()
{
char s[150];
int i,k; 
gets(s); 
int n=strlen(s); 
for (i = 0; i < n; i++) 
{ if ((s[i]==' ') && (s[i+1]==' ')) 
{
for (k = i; k < n; k++)
{
s[k]=s[k+1];
}
i--; 
}
if (s[0]==' ') s[0]=s[1]; 
}
cout <<s; 
 
getch();
}
В чём здесь ошибка ? Подскажите пожалуйста. Спасибо заранее.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.04.2011, 13:01     Поиск ошибки в коде
Посмотрите здесь:

Ошибки в коде. C++
Ошибки в коде C++
Ошибки в коде( C++
Поиск ошибки в коде. Игра Крестики-Нолики C++
C++ Ошибки в коде
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
term1t
 Аватар для term1t
25 / 25 / 2
Регистрация: 04.03.2011
Сообщений: 61
15.04.2011, 13:16     Поиск ошибки в коде #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
#include <iostream>
 
using namespace std;
 
int main() {
    char s[150];
    int i,k; 
    gets(s); 
    int n=strlen(s); 
    for (i = 0; i < n; i++) { 
         if ((s[i]==' ') && (s[i+1]==' ')) {
             for (k = i; k < n; k++) {
                 s[k]=s[k+1];
                          }
    i--; 
}
    if (s[0]==' ') s[0]=s[1]; 
}
cout <<s; 
 
system("PAUSE");
return 0;
}
Uinslou
Старичок :)
 Аватар для Uinslou
728 / 315 / 5
Регистрация: 03.04.2011
Сообщений: 1,430
15.04.2011, 16:55  [ТС]     Поиск ошибки в коде #3
Спасибо

А вот логическая ошибка в чём может быть ?
From_Tula
40 / 40 / 2
Регистрация: 22.05.2009
Сообщений: 469
15.04.2011, 17:34     Поиск ошибки в коде #4
Uinslou, а задача в чем может заключаться?
Uinslou
Старичок :)
 Аватар для Uinslou
728 / 315 / 5
Регистрация: 03.04.2011
Сообщений: 1,430
15.04.2011, 17:46  [ТС]     Поиск ошибки в коде #5
From_Tula, изначально удаление лишних пробелов

Просто преподаватель говорит, что у меня где-то логическую ошибку видит, причём без запуска программы.

Добавлено через 9 минут
Вот начальное условие:

Написать программу удаляющую лишние пробелы в строке.
Пример:
на входе - "строка ____ с лишними пробелами"
на выходе - "строка ____ с лишними пробелами"
Примечание: Объявление строки
String ^str=”Неllo” ;// где «str» - имя переменной

Но потом преподаватель сказал, что через string не обязательно, и я вот так сделал Но говорит есть логическая ошибка. Вообщем, вот такие дела.
From_Tula
40 / 40 / 2
Регистрация: 22.05.2009
Сообщений: 469
15.04.2011, 17:52     Поиск ошибки в коде #6
ну судя по твоему коду ты пробелы не удаляешь а кидаешь их в конец строки?
Uinslou
Старичок :)
 Аватар для Uinslou
728 / 315 / 5
Регистрация: 03.04.2011
Сообщений: 1,430
15.04.2011, 20:16  [ТС]     Поиск ошибки в коде #7
From_Tula, да скорее всего))

А можешь помочь исправить ? Был бы очень признателен
x1Mike7x
 Аватар для x1Mike7x
214 / 127 / 6
Регистрация: 06.11.2010
Сообщений: 234
15.04.2011, 20:27     Поиск ошибки в коде #8
20я строка - нужно делать --n, вместо --i.
И не совсем понятно зачем делать if (s[0]==' ') s[0]=s[1];
+ В некоторых случаях может быть выход за пределы массива.
Uinslou
Старичок :)
 Аватар для Uinslou
728 / 315 / 5
Регистрация: 03.04.2011
Сообщений: 1,430
15.04.2011, 23:45  [ТС]     Поиск ошибки в коде #9
Что-то всё равно не получается =/
x1Mike7x
 Аватар для x1Mike7x
214 / 127 / 6
Регистрация: 06.11.2010
Сообщений: 234
16.04.2011, 00:04     Поиск ошибки в коде #10
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
#include <iostream>
#include <string.h>
 
using namespace std;
 
int main() 
{
    char s[180] = "It’s   getting cold   and  people are   gonna need wool sweaters, so     if you’re a   sheep, fair warning, get ready      to be shorn. You’re  welcome.";
    int i, k; 
    int n = strlen(s); 
    for (i = 0; i < n-1; i++) 
    { 
         if ( (s[i]==' ') && (s[i+1]==' ') ) 
         {
             for (k = i+1; k < n; k++) 
             {
                 s[k-1] = s[k];
             }
             i--; 
             s[n--] = '\0';
         }
    }
    s[n] = '\0';
 
    cout << s; 
 
    return 0;
}
http://codepad.org/E2DXyjm7
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.04.2011, 23:02     Поиск ошибки в коде
Еще ссылки по теме:

Поиск степени числа - исправить ошибки в коде C++
Ошибки в коде C++
C++ Информация о сотрудниках предприятия. Поиск ошибки в коде

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

Или воспользуйтесь поиском по форуму:
Uinslou
Старичок :)
 Аватар для Uinslou
728 / 315 / 5
Регистрация: 03.04.2011
Сообщений: 1,430
19.04.2011, 23:02  [ТС]     Поиск ошибки в коде #11
"В твоей программе неверно производится действие после проверки на первый пробел. Строка не сдвигается на символ, а нулевой элемент массива (пробел) заменятся первым элементом, вместо того чтобы сдвинуть все символы в строке."

Вот что мне сказал преподаватель. Помогите пожалуйста

Вот код:

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 "stdafx.h"
#include <conio.h>
#include <iostream>
 
using namespace std;
 
void main()
{
char s[150];
int i,k;
gets(s);
int n=strlen(s);
for (i = 0; i < n; i++)
{ if ((s[i]==' ') && (s[i+1]==' '))
{
for (k = i; k < n; k++)
{
s[k]=s[k+1];
}
i--;
}
if (s[0]==' ') s[0]=s[1];
}
cout <<s;
 
getch();
}
Добавлено через 1 час 20 минут
Есть идеи ?
Yandex
Объявления
19.04.2011, 23:02     Поиск ошибки в коде
Ответ Создать тему
Опции темы

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