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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2016, 23:10   #1
yurda
 
Регистрация: 24.05.2015
Сообщений: 8
По умолчанию Нужно распечатать строки, в которых имеются одинаковые соседние элементы.

Нужно распечатать строки, в которых имеются одинаковые соседние элементы. Код работает если первые элементы одинаковые, иначе нет. Не могу понять что нужно сделать что бы сравнивались другие элементы ?
Код:
 #include <iostream>

using namespace std;

int main()
{
	setlocale(LC_ALL, "Russian");
	int strok = 3; //Количество строк в массиве
	int len = 255; //Длина строки

	char **Massiv = new char*[strok]; //Выделяем память под количество строк

	for (int i = 0; i<strok; i++)
		Massiv[i] = new char[len]; //Выделяем память под количество символов в строке для каждой строки в отдельности

	cout << "Вводимое количество строк = " << strok << "\n";
	for (int i = 0; i<strok; i++)
		cin.getline(Massiv[i], len); //Считываем строки с клавиатуры в массив

	cout << "Полученный массив: " << endl;
	for (int i = 0; i < strok; i++) {
		for (int j = 0; j < len; j++) {
			if (Massiv[i][j] == Massiv[i][j + 1]){
				cout << Massiv[i] << "\n"; //Выводим строку с одинаковыми элементами ??
			} break;
		}
		
	}

	for (int i = 0; i<strok; i++)
		delete[]Massiv[i]; //Освобождаем память
	delete[]Massiv;

	system("pause");
	return 0;
}
yurda вне форума Ответить с цитированием
Старый 02.05.2016, 23:28   #2
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

break перед }
ну и потом схлопочешь с индексами проблемы... точнее лень говорить, нужно в код вникать

Последний раз редактировалось GreenWizard; 02.05.2016 в 23:31.
GreenWizard вне форума Ответить с цитированием
Старый 02.05.2016, 23:39   #3
yurda
 
Регистрация: 24.05.2015
Сообщений: 8
По умолчанию

Поставил break из за того, что потом он очень много раз вывод подряд все строки
yurda вне форума Ответить с цитированием
Старый 02.05.2016, 23:44   #4
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

Цитата:
Сообщение от yurda Посмотреть сообщение
Поставил break из за того, что потом он очень много раз вывод подряд все строки
ну так, нужно вывести раз и break-нуть...... а у тебя оно первые 2 символа проверяет и в любом случает делает break, не проверяя след. символы

Код:
	cout << "Полученный массив: " << endl;
	for (int i = 0; i < strok; i++) {
		for (int j = 0; j < len; j++) {
			if (Massiv[i][j] == Massiv[i][j + 1]){
				cout << Massiv[i] << "\n"; //Выводим строку с одинаковыми элементами ??
				break;
			} 
		}
		
	}
GreenWizard вне форума Ответить с цитированием
Старый 02.05.2016, 23:50   #5
yurda
 
Регистрация: 24.05.2015
Сообщений: 8
По умолчанию

Я так тоже пробовал, и теперь он просто введеные строки выводит без проверки. И почему то if не работает. Может не правильно условие задано? https://gyazo.com/8cb021036ef213944d51c334cc3da6fa

Последний раз редактировалось yurda; 02.05.2016 в 23:54.
yurda вне форума Ответить с цитированием
Старый 03.05.2016, 00:10   #6
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

каждая строка = 255 символов у тебя
первые символы - слова, далее - либо нули, либо мусор... как вариант:
Код:
	cout << "Полученный массив: " << endl;
	for (int i = 0; i < strok; i++) {
		for (int j = 0; Massiv[i][j + 1] != 0; j++) {
			if (Massiv[i][j] == Massiv[i][j + 1]){
				cout << Massiv[i] << "\n"; //Выводим строку с одинаковыми элементами ??
				break;
			} 
		}
		
	}
GreenWizard вне форума Ответить с цитированием
Старый 03.05.2016, 00:19   #7
yurda
 
Регистрация: 24.05.2015
Сообщений: 8
По умолчанию

Огромное спасибо! Готов расцеловать
yurda вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
дан целочисленный массив размера n . Удалить из массива все соседние одинаковые элементы sergeymalcow Помощь студентам 10 01.12.2014 09:14
Составить программу для подсчета кол-ва слов, у которых имеются одинаковые буквы. Сержикк C# (си шарп) 0 08.06.2014 18:40
Файлы в паскале: Скопировать из файла F1 в файл F2 все строки, в которых есть одинаковые слова. shadezx Помощь студентам 7 05.12.2013 23:56
В двумерном числовом массиве размером n*m, определить, есть ли столбец, в котором имеются одинаковые элементы (Delphi) Arnold9131 Помощь студентам 3 15.03.2013 21:07
даны натуральные трехзначные числа, нужно выбрать такие, запись которых содержит два одинаковые цифры. TuuuZ Помощь студентам 2 28.12.2009 16:18