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

Массивы (не вводится полностью матрица с буквами A и B) - C++

Восстановить пароль Регистрация
 
Sivilan
6 / 6 / 0
Регистрация: 17.03.2013
Сообщений: 66
20.09.2013, 01:36     Массивы (не вводится полностью матрица с буквами A и B) #1
У меня не вводится полностью матрица с буквами A и B,к примеру создав матрицу 5 на 6,я всего ввожу 1 ряди меня компилятор выкидывает.Спасибо
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
#include <stdio.h>
#include <conio.h>
 
int main () {
   int w,h,d;
    printf(" Vvedite w pri uslovii w>=1\n");
    scanf ("%d",&w);
    printf(" Vvedite h pri uslovii h<=100\n");
    scanf ("%d",&h);
    char **mas;
    mas = new char *[w];
    for (int i = 0; i < w; i++)
        mas[i] = new char [h];
   printf ("Oboznach'te territoriyu gosudarstv bykvami A i B \n");
    for (int i = 0; i < w; i++) {
        for (int j = 0; j < h; j++)
         scanf ("%c", &mas[i][j]);
    }
    d=0;
   for (int i = 0; i < w; i++) {
        for (int j = 0; j < h; j++)
    { if (j > 0){
        if (mas[i][j] != mas[i][j-1])
        {d++;}}
        if (i>0){
        if (mas[i][j] != mas [i-1][j])
        {
            d++;}}
 
        }
 
 
    }
printf("d=%d",d);
 
    delete [] mas;
    getch();
    return 0;
}
к примеру входные данные:
5-w 6-h
AAABB
ABBBB
AAABB
AAAAB
AAAAB
AABBB
выходные-13
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4841 / 2980 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
20.09.2013, 08:28     Массивы (не вводится полностью матрица с буквами A и B) #2
Ты так и вводишь:
5-w
?
После каждой введенной буквы надо нажимать Enter.
lipnev
60 / 60 / 1
Регистрация: 14.09.2013
Сообщений: 145
20.09.2013, 08:49     Массивы (не вводится полностью матрица с буквами A и B) #3
Sivilan, у меня этот код работает, но последняя строка не вводится. Проблема в том, что ты не учитвыешь, что строки в С заканчиваются символом \0. Получается, что у тебя при 5-w 6-h можно ввести только 5 строк, потому что вместо строки AAABB у тебя вводится строка AAABB и завершающий ноль, который к тому же записывается в элемент mas[1][0]. Дальше соответственно у тебя всё смещается и получается, что при пяти строках твой ввод уже отработал, потому что в 5 строках у тебя получается 30 элементов.
Теперь, я думаю, понятно, что надо сделать, чтоб всё работало. Нужно инициализировать строки с запасом на завершающий ноль, т. е.
C++
1
mas[i] = new char [h+1];
и чуток исправить вложенный цикл ввода
C++
1
for (int j = 0; j <= h; j++)
Sivilan
6 / 6 / 0
Регистрация: 17.03.2013
Сообщений: 66
20.09.2013, 09:31  [ТС]     Массивы (не вводится полностью матрица с буквами A и B) #4
lipnev, То есть сделать так
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
#include <stdio.h>
#include <conio.h>
 
int main () {
   int w,h,d;
    printf(" Vvedite w pri uslovii h<=100\n");
    scanf ("%d",&h);
    printf(" Vvedite h pri uslovii w>=1\n");
    scanf ("%d",&w);
    char **mas;
    mas = new char *[h+1];
    for (int i = 0; i < h; i++)
        mas[i] = new char [w];
   printf ("Oboznach'te territoriyu gosudarstv bykvami A i B \n");
    for (int i = 0; i < h+1; i++) {
        for (int j = 0; j < w; j++)
         scanf ("%c", &mas[i][j]);
    }
    d=0;
   for (int i = 0; i < h; i++) {
        for (int j = 0; j < w; j++)
    { if (j > 0){
        if (mas[i][j] != mas[i][j-1])
        {d++;}}
        if (i>0){
        if (mas[i][j] != mas [i-1][j])
        {
            d++;}}
 
        }
 
 
    }
printf("d=%d",d);
 
    delete [] mas;
    getch();
    return 0;
}
lipnev
60 / 60 / 1
Регистрация: 14.09.2013
Сообщений: 145
20.09.2013, 09:50     Массивы (не вводится полностью матрица с буквами A и B) #5
Да.
Yandex
Объявления
20.09.2013, 09:50     Массивы (не вводится полностью матрица с буквами A и B)
Ответ Создать тему
Опции темы

Текущее время: 18:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru