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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
inferno mf
1 / 1 / 0
Регистрация: 13.09.2009
Сообщений: 96
#1

Двумерный массив строк - C++

17.04.2010, 23:38. Просмотров 2108. Ответов 18
Метки нет (Все метки)

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

Добавлено через 17 минут
Уже разобрался)

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 <cstdlib>
#include <iostream>
 
using namespace std;
 
int main()
{
    int i,j,N,M;
    
    printf("Vvod razmernosti massiva\n");
    scanf("%d%d",&M,&N);
char* arrsym[M][N];
 for( i = 0; i < M; i++)
     for( j = 0; j < N; j++){
     arrsym[i][j] = (char*) malloc(256);
     std::cin >> arrsym[i][j];
     }
   std::cout << std::endl;
   std::cout << std::endl;
 for( i = 0; i < M; i++){
     for( j = 0; j < N; j++)
        std::cout << arrsym[i][j] << "   ";
        std::cout << std::endl;
 }
    
    system("PAUSE");
    return EXIT_SUCCESS;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.04.2010, 23:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Двумерный массив строк (C++):

Переписать массив строк из файла в двумерный массив - C++
Переписать массив строк из файла в двумерный массив типа CHAR &quot; char Map&quot; вот что получается, как сделать чтоб копировал строку в...

Двумерный массив.Замена строк - C++
Ребят проблемка назрела.. Нужно ввести номера строк, которые хотим поменять местами. Проблема вот в чем, что программа меняет раз на...

Двумерный динамический массив строк - C++
Надо создать двумерный динамический массив размером 5x5 (5 ячеек, для 5 строк). Заполнить его строчками текста, принятыми с клавиатуры. ...

Двумерный массив и сравнение строк - C++
Дана целочисленная матрица размера M x N. Различные строки матрицы назовем похожими, если совпадают множества чисел, встречающихся в этих...

Двумерный массив неизвестных строк и столбцов - C++
заранее не известно количество строк и столбцов. столбцов примерно i но может быть много меньше строк примерно j но может быть много...

Дан двумерный массив из m строк и n столбцов - C++
Дан двумерный массив из m строк и n столбцов. Заполнить его значениями элементов одномерного массива размеров mxn. Заполнение проводить по...

18
PointsEqual
ниначмуроФ
836 / 520 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
18.04.2010, 14:48 #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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <iostream>
#include <vector>
#include <conio.h>
#include <iomanip>
#include <cstring>
 
void strokMas(std::vector< std::vector<std::string> > &mas, const int ROWS, const int COLS);
 
int main()
{
    int ROWS=0;
    int COLS=0;
    std::cin>>ROWS;
    std::cin>>COLS;
 
    std::vector< std::vector<std::string> > mas(ROWS,std::vector<std::string>(COLS));
    strokMas(mas,ROWS,COLS);
    return 0;
}
 
void strokMas(std::vector< std::vector<std::string> > &mas, const int ROWS, const int COLS){
    int i=0;
    std::string word;
    while (i<ROWS){
        int j=0;
        while (j<COLS){
            std::cout<<"Vvedite slovo v yacheiky"<<"["<<i<<"]["<<j<<"]  :";
            std::cin>>word;
            mas[i][j]=word;
            ++j;
        }
        ++i;
    }
 
    for (int i=0; i<ROWS; i++){
        for (int j=0; j<COLS; j++){
            std::cout<<std::setw(9)<<mas[i][j];
        }
        std::cout<<std::endl;
    }
}
1
inferno mf
1 / 1 / 0
Регистрация: 13.09.2009
Сообщений: 96
21.04.2010, 19:17  [ТС] #3
Подскажите пожалуйста как проверить слово в каждой ячейке на повторяющиеся символы? Если они есть, то заменить слово заглавными буквами...

Тут как бы нужно посимвольно пробегаться по каждой строке. Как это сделать для каждой ячейки?

Добавлено через 18 часов 3 минуты
Сам принцип поиска повторяющихся символов понятен, как это применить к каждой ячейке матрицы?
0
PointsEqual
ниначмуроФ
836 / 520 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
21.04.2010, 19:25 #4
Цитата Сообщение от inferno mf Посмотреть сообщение
как это применить к каждой ячейке матрицы?
в цикле
0
inferno mf
1 / 1 / 0
Регистрация: 13.09.2009
Сообщений: 96
21.04.2010, 19:29  [ТС] #5
Цитата Сообщение от PointsEqual Посмотреть сообщение
в цикле
понятно, что в цикле ...как это правильно сделать? сначала идем по i-тым элементам при j=0, проверям есть ли в строке повторяющиеся символы, потом j++, так правильно?
0
inferno mf
1 / 1 / 0
Регистрация: 13.09.2009
Сообщений: 96
26.04.2010, 02:22  [ТС] #6
Не получается осуществить поиск ячеек в которых есть слова с неповторяющимеся символами(( помогите кто-нибудь пожалуйста разобраться
0
Vorona
Peace 2 all shining faces
669 / 531 / 45
Регистрация: 05.03.2010
Сообщений: 1,283
26.04.2010, 04:54 #7
может есть и поудобней вариант, но я могу предложить такой:
для уточнения, в ячейке массива строк находится слово или строка?
если слово, тогда сверяем в words[i][j]:
C++
1
2
3
4
5
6
7
8
counter = 0;
for(i = 0; i < n; i++)
    for(j = 0; j < strlen(words[i]); j++){
        for(x = 1+j; x < strlen(words[i]); x++)
            if(words[i][j] == words[i][j+x])
                i++;
        counter++;
    }
т.е. сверяем все символы по порядку с данным словом начиная с символа на котором остановились, чтоб не проходить повторно символы стоящие до символа который мы сравниваем(тавтология)
counter выдаст нам число слов с неповторяющимися знаками
1
inferno mf
1 / 1 / 0
Регистрация: 13.09.2009
Сообщений: 96
26.04.2010, 18:40  [ТС] #8
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
29
30
31
32
33
34
35
36
37
38
#include <cstdlib>
#include <iostream>
#include <cstring>
 
using namespace std;
 
int main()
{
    int i,j,N,M;
    
    printf("Vvod razmernosti massiva\n");
    scanf("%d%d",&M,&N);
char* arrsym[M][N];
 for( i = 0; i < M; i++)
     for( j = 0; j < N; j++){
     arrsym[i][j] = (char*) malloc(256);
     std::cin >> arrsym[i][j];
     }
   std::cout << std::endl;
   std::cout << std::endl;
 for( i = 0; i < M; i++){
     for( j = 0; j < N; j++)
        std::cout << arrsym[i][j] << "   ";
        std::cout << std::endl;
 }
  int x;
  int counter = 0;
for(i = 0; i < M; i++)
    for(j = 0; j < strlen(arrsym[i]); j++){
        for(x = 1+j; x < strlen(arrsym[i]); x++)
            if(arrsym[i][j] == arrsym[i][j+x])
                i++;
        counter++;
    }
    
    system("PAUSE");
    return EXIT_SUCCESS;
}
Вот , что получилось, но не компилится((( Ошибка - cannot convert 'char** ' to const char for argument '1 ' to size_t strlen(const char).

Ну вообще по заданию в ячейке строка, слово это же и есть строка...или есть какое-то отличие?
0
PointsEqual
ниначмуроФ
836 / 520 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
26.04.2010, 18:53 #9
Цитата Сообщение от inferno mf Посмотреть сообщение
слово это же и есть строка...или есть какое-то отличие?
есть примитивные строки(char) и string строки
1
inferno mf
1 / 1 / 0
Регистрация: 13.09.2009
Сообщений: 96
26.04.2010, 20:38  [ТС] #10
в моем случае это повидимому string строки...как с ними здесь осуществить поиск ячеек в которых есть строки с неповторяющимеся символами?

Даже если в ячейках должны быть слова, то почему не работает код?((( что там не так?((
0
PointsEqual
ниначмуроФ
836 / 520 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
26.04.2010, 20:44 #11
Цитата Сообщение от inferno mf Посмотреть сообщение
в моем случае это повидимому string строки...
неа)

Цитата Сообщение от inferno mf Посмотреть сообщение
как с ними здесь осуществить поиск ячеек в которых есть строки с неповторяющимеся символами?
если честно, я плохо понимаю что происходит в том коде
0
inferno mf
1 / 1 / 0
Регистрация: 13.09.2009
Сообщений: 96
29.04.2010, 01:33  [ТС] #12
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
29
30
31
32
33
34
35
36
37
38
#include <cstdlib>
#include <iostream>
#include <cstring>
 
using namespace std;
 
int main()
{
    int i,j,N,M;
    
    printf("Vvod razmernosti massiva\n");
    scanf("%d%d",&M,&N);
char* arrsym[M][N];
 for( i = 0; i < M; i++)
     for( j = 0; j < N; j++){
     arrsym[i][j] = (char*) malloc(256);
     std::cin >> arrsym[i][j];
     }
   std::cout << std::endl;
   std::cout << std::endl;
 for( i = 0; i < M; i++){
     for( j = 0; j < N; j++)
        std::cout << arrsym[i][j] << "   ";
        std::cout << std::endl;
 }
  int x;
  int counter = 0;
for(i = 0; i < M; i++)
    for(j = 0; j < strlen(arrsym[i]); j++){
        for(x = 1+j; x < strlen(arrsym[i]); x++)
            if(arrsym[i][j] == arrsym[i][j+x])
                i++;
        counter++;
    }
    
    system("PAUSE");
    return EXIT_SUCCESS;
}
В чем заключается ошибка cannot convert 'char** ' to const char for argument '1 ' to size_t strlen(const char) ? Как сделать проверку на повторяющиеся символы в ячейках?(((
0
PointsEqual
ниначмуроФ
836 / 520 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
29.04.2010, 01:48 #13
Цитата Сообщение от inferno mf Посмотреть сообщение
В чем заключается ошибка cannot convert 'char** ' to const char for argument '1 ' to size_t strlen(const char) ?
C++
1
2
for(j = 0; j < strlen(*arrsym[i]); j++){
        for(x = 1+j; x < strlen(*arrsym[i]); x++)
Добавлено через 2 минуты
inferno mf, а что вообще пытаешся сделать?
0
inferno mf
1 / 1 / 0
Регистрация: 13.09.2009
Сообщений: 96
29.04.2010, 01:56  [ТС] #14
Цитата Сообщение от PointsEqual Посмотреть сообщение
C++
1
2
for(j = 0; j < strlen(*arrsym[i]); j++){
        for(x = 1+j; x < strlen(*arrsym[i]); x++)
Добавлено через 2 минуты
inferno mf, а что вообще пытаешся сделать?
это неверно((( ну вообще хотелось посимвольно пробежаться по всем ячейкам...и потом определить кол-во ячеек с повторяющимеся символами...
0
PointsEqual
ниначмуроФ
836 / 520 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
29.04.2010, 02:36 #15
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <iostream>
#include <cstring>
#include <iomanip>
 
int main()
{
    int count_row=0;
    int count_col=0;
 
    std::cout<<"vvedite kol-vo ctrok massiva= ";
    std::cin>>count_row;
    std::cout<<std::endl<<"vvedite kol-vo ctolbcov massiva= ";
    std::cin>>count_col;
    std::cout<<std::endl;
 
 
    /*выделяем память под динамический массив*/
    char** pArray=new char*[count_col];
     for (int i=0; i<count_col; i++)
     pArray[i]=new char[count_row];
 
 
 
     /*заполнение*/
    for (int i=0; i<count_row; i++)
    for (int j=0; j<count_col; j++){
             std::cout<<"vvedite ["<<i<<"]["<<j<<"] element= ";
             std::cin>>pArray[i][j];
    }
 
 
    /*вывод*/
    std::cout<<std::endl<<"Massiv simvolov sfornirovan: "<<std::endl;
    for (int i=0; i<count_row; i++){
        for (int j=0; j<count_col; j++){
            std::cout<<std::setw(3)<<pArray[i][j];
        }
        std::cout<<std::endl;
    }
 
 
    /*поиск ячеек с повторяющимися элементами*/
 
 
    return EXIT_SUCCESS;
}
1
29.04.2010, 02:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.04.2010, 02:36
Привет! Вот еще темы с ответами:

Двумерный массив с рандомным количеством строк - C++
Здравствуйте. Пишу одну программку в VS2012 и не могу понять, возможно ли создать двумерный массив с заданным количеством столбцов и...

Дан двумерный массив, содержащий 12 строк и 14 столбцов - C++
Дан двумерный массив, содержащий 12 строк и 14 столбцов. Элементами массива являются целые числа. Упорядочить массив по невозрастанию...

Двумерный массив: сумма строк, максимумы столбцов - C++
в двумерном массиве посчитать сумму строк и записать эти суммы в отдельный массив. Посчитать максимальный элементы в каждом столбце в с++

Двумерный массив. Найти максимальный элемент 3 и 4 строк - C++
Информация о колоичестве жильцов в каждой из четырех квартир каждого этажа 12-ти этажного дома храниться в двумерном массиве (в первой...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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