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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2015, 20:34   #1
textyre
Пользователь
 
Регистрация: 01.11.2014
Сообщений: 12
По умолчанию (C++) Неограниченный ввод в двумерный массив

Такая беда, что я допустим изначально задам strok=99, len=256. Но по сути же можно и не 99 использовать? Я решил в цикл поместить, у меня лишь получается одну строчку написать. Как только cin.getline не пробовал использовать - не получается. Вопрос такой: как вводить строки до определенного момента? Например до ввода звездочки или пустой строки.
Код:
#include "stdafx.h"
#include <stdio.h>
#include <locale.h>
#include <stdlib.h>
#include <iostream>
#include <cstdlib>
#define _CRT_SECURE_NO_WARNINGS

using namespace std;

void izm_stroki(char* mass, char* mass1, char sym)
{
	int len = 256;
	int k = 0;
	for (int i = 0; i < len; i++)
	{
		*(mass1 + k++) = *(mass + i);
		if (*(mass + i) == sym)
			*(mass1 + k++) = sym;
	}
};

int _tmain(int argc, _TCHAR* argv[])
{
	setlocale(LC_ALL, "rus");
	int strok = 5;
	int len = 256;
	int i=0;
	char sym;
	
	char **text = new char*[strok];
	for (int i = 0; i < strok; i++)
		*(text + i) = new char[len];

	char **izmass = new char*[strok];
	for (int i = 0; i < strok; i++)
		*(izmass + i) = new char[len]; 
	cout << "Введите символ, который будем удваивать: ";
	(cin >> sym).get();
	cout << sym << endl;
	cout << "Введите произвольный текст: ";
	do
	{
		cin.getline(*(text + i), len);
	} while (!*(text + strok));
	cout << "Введный текст:\n";
	for (int i = 0; i < '\0'; i++)
		cout << *(text + i) << '\n';
	cout << "Удвоить символ?";
	int d = strok;
	for (i=0; i<d; i++)
	{
		cin >> strok;
		if (strok>d - 1)
		{
			cout << "Введите номер существующей строки = ";
			i--;
		}
		else
		{
			izm_stroki(*(text + strok), *(izmass+strok), sym);
			cout<<*(izmass+strok)<<endl;
			cout << "В какой-то еще? ";
		} 
	}
	if (i==d)
		cout<<"Строки кончились";
	cout << "\nПолученный текст:\n";
	for (int i = 0; i < d; i++)
		cout << *(izmass + i)<<'\n';
	system("pause");
	return 0;
}
textyre вне форума Ответить с цитированием
Старый 02.06.2015, 21:01   #2
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Например:
1. Ввод строки
2. Получить длину строки.
3. Если строка пустая, то повторить ввод (по ошибке нажал Enter).
4. Если длина в один символ, то проверить символ на то, что это пробел или "*" или ещё какой символ, например Ctrl+Z.
4. Если соответствие установлено, то Break, а иначе продолжить обработку введённой строки.



Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программирование в VBA: двумерный массив M на N, нужно создать новый одномерный массив TheAnnihilyator Помощь студентам 1 04.06.2014 09:16
Java: Дан двумерный массив чисел А размером 6х6 и одномерный массив Х из 6-ти чисел. Заменить первые три строки массива A vikysha55 Помощь студентам 1 16.04.2014 10:50
Двумерный массив развернуть в одномерный массив по строкам[QBASIC] TrueStyle777 Помощь студентам 3 29.05.2013 21:56
Ввод с файла в двумерный массив Qlry Общие вопросы C/C++ 1 14.05.2011 22:26
Двумерный массив, одномерный массив. Branbal Помощь студентам 14 18.11.2009 12:40