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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.11.2017, 22:21   #1
Reed21
Пользователь
 
Регистрация: 08.11.2017
Сообщений: 11
Сообщение C++, заполнение массива

Код:
 for (i=1;i<=n;i++)
        for (j=1;j<=m;j++)
            {if(x==i && y==j)
            {a[i][j]='*'; break;}}
Вместо "*" выводит число 42. В чём может быть проблема?
Reed21 вне форума Ответить с цитированием
Старый 09.11.2017, 22:29   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

1. Массивы нумеруются с 0
2. Проблемы нет, вы просто выводите код символа, а не символ.
p51x вне форума Ответить с цитированием
Старый 09.11.2017, 22:36   #3
Reed21
Пользователь
 
Регистрация: 08.11.2017
Сообщений: 11
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
1. Массивы нумеруются с 0
С выводом массива проблем нет. На сколько мне известно массив можно нумеровать начиная с 1 для простоты понимания, но при этом цикл должен работать пока меньше или равно.(Возможно я не прав, если так то исправьте меня, пожалуйста.)

Цитата:
Сообщение от p51x Посмотреть сообщение
2. Проблемы нет, вы просто выводите код символа, а не символ.
Не подскажите как вывести символ, а не его код?
Reed21 вне форума Ответить с цитированием
Старый 09.11.2017, 23:23   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Цитата:
Сообщение от Reed21 Посмотреть сообщение
На сколько мне известно массив можно нумеровать начиная с 1 для простоты понимания, но при этом цикл должен работать пока меньше или равно.(Возможно я не прав, если так то исправьте меня, пожалуйста.)
Не так. Массивы в С++ нумеруются с 0. Элемента с номером n не существует и писать вы будете в левом месте.

Цитата:
Сообщение от Reed21 Посмотреть сообщение
Не подскажите как вывести символ, а не его код?
Покажите ваш вывод.
p51x вне форума Ответить с цитированием
Старый 09.11.2017, 23:31   #5
Reed21
Пользователь
 
Регистрация: 08.11.2017
Сообщений: 11
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Покажите ваш вывод.
Я покажу всю задачу, потому что не знаю как лучше выделить вывод.Если интересно, то это что-то на подобии сапёра.

Код:
#include <bits/stdc++.h>
using namespace std;
int main ()
{int n,m,w,x,y,a[100][100];
cin>>n>>m;
cin>>w;
int i,j;

while (w>0)
    {cin>>x>>y;
    for (i=1;i<=n;i++)
        for (j=1;j<=m;j++)
            {if(i==x && j==y)
            {a[i][j]='*'; break;}}
        w--;}
int c=0;
for (i=1;i<=n;i++){
    for (j=1;j<=m;j++){
     if(a[i][j]!='*')
        {if (a[i][j-1]=='*')c++;
        if (a[i-1][j-1]=='*')c++;
        if (a[i-1][j]=='*')c++;
        if (a[i-1][j+1]=='*')c++;
        if (a[i][j+1]=='*')c++;
        if (a[i+1][j+1]=='*')c++;
        if (a[i+1][j]=='*')c++;
        if (a[i+1][j-1]=='*')c++;
            a[i][j]=c;
        c=0;}
        cout<<a[i][j]<<" ";}
cout<<endl;}
return 0;}
Reed21 вне форума Ответить с цитированием
Старый 10.11.2017, 00:53   #6
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

click me
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 10.11.2017, 14:12   #7
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Сообщений: 576
По умолчанию

в с, с++ массивы индексируются с нуля.

что касается вывода символа. может надо вот так?
Код:
char a[100][100];
SAMOUCHKA вне форума Ответить с цитированием
Старый 10.11.2017, 18:37   #8
Reed21
Пользователь
 
Регистрация: 08.11.2017
Сообщений: 11
По умолчанию

Цитата:
Сообщение от SAMOUCHKA Посмотреть сообщение
что касается вывода символа. может надо вот так?
Код:
char a[100][100];
Нет, не подходит. Звёздочку вывело, а вместо цифр появились знаки вопроса.
Reed21 вне форума Ответить с цитированием
Старый 10.11.2017, 19:12   #9
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Сообщений: 576
По умолчанию

Цитата:
Сообщение от Reed21 Посмотреть сообщение
Нет, не подходит. Звёздочку вывело, а вместо цифр появились знаки вопроса.
что должен делать твой код, до конца не вникал. вместо звездочки были цыфры(код символа) потому что ты значение '*' присваивал переменной int.
цыфры должны выводится из переменной int c , правильно понял?

попробуй вместо
Код:
int c = 0;
вот так
Код:
char c = '0';
SAMOUCHKA вне форума Ответить с цитированием
Старый 10.11.2017, 19:31   #10
Reed21
Пользователь
 
Регистрация: 08.11.2017
Сообщений: 11
По умолчанию

Цитата:
Сообщение от SAMOUCHKA Посмотреть сообщение
что должен делать твой код, до конца не вникал.
цыфры должны выводится из переменной int c , правильно понял?
вот что должно вывести:
* 2
2 *
1 1
а вот что выводит с int:
42 2
2 42
1 1
а вот что выводит с char:
* ?
? *
? ?
Он должен в i,j (которые равняются x и у) поставить звёздочки. Потом проверять каждую ячейку вокруг элемента массива, который не равняется звёздочке, и заполнить этот элемент числу звёздочек вокруг него. И так с каждым, а потом вывести массив.
Знаю, что объяснил не очень понятно, но по другому не знаю как) Проще говоря, что похожее на игру "Сапёр".
Reed21 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двумерные массивы Внимание! В задаче реализовать заполнение массива, вывод на экран исходного массива и измененного (если при реш Гарри Паскаль, Turbo Pascal, PascalABC.NET 3 26.06.2015 09:45
Одномерные массивы Внимание! В задаче реализовать заполнение массива, вывод на экран исходного массива и измененного (если при ре Гарри Паскаль, Turbo Pascal, PascalABC.NET 1 25.06.2015 08:55
Заполнение listbox значениями из массива. Заполнение массива. Gnaqeaz C# (си шарп) 9 23.10.2014 07:53
Заполнение массива Hrum Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 24.11.2012 00:54
Заполнение массива. Небесный Общие вопросы C/C++ 3 01.09.2009 01:39