Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.02.2013, 14:33   #1
three_cats
Форумчанин
 
Аватар для three_cats
 
Регистрация: 27.09.2012
Сообщений: 175
По умолчанию Ошибка при сравнении элементов массива

Должен сравнивать слова массива и вывести первое слово, нарушающее алфавитный прядок. Почему-то, k все время равна 14. В чем дело?
А если присвоить фиксированное количество слов, всегда выводит первое.

Код:
#include <iostream>
#include <string>
#include <cstring>
#include <sstream>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

using namespace std;

int main() {
cout << "Please enter string: ";
string s;
getline(cin,s);
istringstream iss(s);
string w;
string c[15];
int ci = 0;
while (iss >> w)
{
c[ci] = w;
ci++;
}

int k = 0;
for (int i = 0; i < 15; i++)
for (int j = 0; j < c[i].length() - 1; j++) {
if (c[i][j] > c[i][j+1]) {
k = i;
break;
}
}

cout << с[k];

cout << "\r\nHit any key, please...";
_getch();
return 0;    
}
Никто

мой блог

Последний раз редактировалось three_cats; 24.02.2013 в 14:41.
three_cats вне форума Ответить с цитированием
Старый 24.02.2013, 20:05   #2
Че Гевара
Форумчанин
 
Аватар для Че Гевара
 
Регистрация: 25.09.2012
Сообщений: 182
По умолчанию

Вы не выходите по условию из первого цикла, и он выполняется до конца
Попробуйте так
Код:
#include <iostream>
#include <string>
#include <cstring>
#include <sstream>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

using namespace std;

int main() {
cout << "Please enter string: ";
string s;
getline(cin,s);
istringstream iss(s);
string w;
string c[15];
int ci = 0;
	while (iss >> w)
	{
	c[ci] = w;
	ci++;
	}

int k = 0;
int flag = 0;
	for (int i = 0; i < 15; i++)
	{
		for (int j = 0; j < c[i].length() - 1; j++)
		{
			if (c[i][j] > c[i][j+1]) 
			{
			k = i;
			flag = 1;
			break;
			}
		}
	if(flag) break;
	}

cout << с[k];

cout << "\r\nHit any key, please...";
_getch();
return 0;    
}
Отладка кода вдвое сложнее, чем его написание. Так что если вы пишете код настолько умно, насколько можете, то вы по определению недостаточно сообразительны, чтобы его отлаживать.
Brian W. Kernighan.

Последний раз редактировалось Че Гевара; 24.02.2013 в 20:13.
Че Гевара вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема при сравнении двух таблиц Sergepro Microsoft Office Excel 4 11.09.2012 11:04
Ошибка при сравнении файлов Olper Microsoft Office Excel 2 11.11.2011 04:11
Ошибка в сравнении деревьев kaizer131 Помощь студентам 4 26.05.2010 13:36
Ошибка при Сравнении времени Студло БД в Delphi 6 07.02.2010 00:12