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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Uinslou
Старичок :)
728 / 315 / 5
Регистрация: 03.04.2011
Сообщений: 1,430
#1

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

15.04.2011, 13:01. Просмотров 1107. Ответов 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
#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();
}
В чём здесь ошибка ? Подскажите пожалуйста. Спасибо заранее.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.04.2011, 13:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поиск ошибки в коде (C++):

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

Поиск очевидной ошибки в относительно простом коде - C++
Предлагаю такую тему для новичков. Новичок должен найти очевидную ошибку в относительно простом коде. Это может стать небольшим...

Поиск ошибки в коде. Игра Крестики-Нолики - C++
После первого хода человека, компьютер сразу заполняет все оставшееся поле. Думаю, проблема в том, что надо чтобы после хода компьютера...

Поиск степени числа - исправить ошибки в коде - C++
Не могу найти ошибку Не компилируется данный код в Visual Studio 2010. Задача Y=X^N // Y=X^N.cpp: определяет точку входа для...

Найти ошибки в коде и исправить эти ошибки (Наследование) - C++
Вот в общем 3 файла, изучаю наследование на примере односвязного и двусвязного списков: list.h (inline) #pragma once class list...

Найти ошибки в коде и исправить эти ошибки - C++ - C++
Судя по вываливающейся ошибки, идет двойное освобождение памяти. У самого не получается отловить откуда. A.h #pragma once ...

10
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;
}
0
Uinslou
Старичок :)
728 / 315 / 5
Регистрация: 03.04.2011
Сообщений: 1,430
15.04.2011, 16:55  [ТС] #3
Спасибо

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

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

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

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

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

А можешь помочь исправить ? Был бы очень признателен
0
x1Mike7x
217 / 130 / 6
Регистрация: 06.11.2010
Сообщений: 234
15.04.2011, 20:27 #8
20я строка - нужно делать --n, вместо --i.
И не совсем понятно зачем делать if (s[0]==' ') s[0]=s[1];
+ В некоторых случаях может быть выход за пределы массива.
0
Uinslou
Старичок :)
728 / 315 / 5
Регистрация: 03.04.2011
Сообщений: 1,430
15.04.2011, 23:45  [ТС] #9
Что-то всё равно не получается =/
0
x1Mike7x
217 / 130 / 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
0
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 минут
Есть идеи ?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.04.2011, 23:02
Привет! Вот еще темы с ответами:

Найти ошибки в коде и исправить эти ошибки - C++
Есть у меня вот такой код: #include &lt;iostream&gt; using namespace std; class A{ private: int* a; size_t size_; ...

Ошибки в коде - C++
При компиляции компилятор выдает подобные ошибки: C:\Users\Дом\Desktop\12.c:2:23: interrupt.h: No such file or directory ...

ошибки в коде - C++
#include &lt;iostream&gt; #include &lt;locale.h&gt; using namespace std; class Massiv { public : int n,m;

Ошибки в коде - C++
Есть код программы #include &lt;stdio.h&gt; #include &lt;conio.h&gt; int x = {1, 2, 1, 3, 12, 2}; int min1(int k) { int s; if( k ==...


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

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

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