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

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

Войти
Регистрация
Восстановить пароль
 
Mr.ILLUMINOR
4 / 4 / 0
Регистрация: 13.04.2012
Сообщений: 37
#1

Непонятная задача на массивы из книги Герберта Шилдта - C++

27.12.2012, 10:58. Просмотров 534. Ответов 7
Метки нет (Все метки)

Решил заняться изучением C++. Для этих целей купил себе книгу "C++ для начинающих. Шаг за шагом" автора Герберта Шилдта (2011 год). В ней есть следующая задача на массивы:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>;
using namespace std;
int main()
{
    setlocale(LC_ALL,"Russian");
    int sqrs[10][2] = { {1,1}, {2,4}, {3,9}, {4,16}, {5,25}, {6,36}, {7,49}, {8,64}, {9,81}, {10,100} }, x, i;
    cout << "Введите число от 1 до 10: ";
    cin >> x;
    for (i=0; i<=10; i++)
    {
        if (sqrs[i][0] == x) break;
        cout << "Квадрат " << x << " равен ";
        cout << sqrs[x][1] << "\n";
    }
    system("pause");
    return 0;
}
Программа должна запрашивать у пользователя число от 1 до 10 и выдавать квадрат этого числа. Не надо писать, что для этого нужно просто умножить введённое число на само себя, ведь то задача для закрепления материала по массивам, поэтому используются именно массивы. Проблема в том, что программа не работает как следует:

http://i52.***********/big/2012/1227/...256e1c702c.jpg

Меня так же интересует почему в условии if написано sqrs[i][0], а при выводе на экран sqrs[x][1]. Почему [0] и почему [1]?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2012, 10:58     Непонятная задача на массивы из книги Герберта Шилдта
Посмотрите здесь:

Книги Герберта Шилдта - C++
Здравствуйте! Закончил 1 курс, по программированию на С++ остановились на классах, наследовании и пр. для дальнейшего изучения языка хочу...

Не работает программа из книги Герберта Шилдта. - C++
Подскажите и мне тоже из этой книги не работает программа. #include&lt;iostream&gt; #include&lt;cstdlib&gt; #include&lt;conio.h&gt; using namespace...

Не работает программа из книги Герберта Шилдта. - C++
При вводе кода из вышеупомянутой книги, выдает 3 ошибки: 1) error C2440: '=' : cannot convert from 'char ' to 'char' 2)error C2446:...

Книги Г.Шилдта в каком порядке нужно или какие книги для изучения с++ - C++
Скажите в каком порядке надо читать книги Г.Шилдта для изучения с++ . Возможно сначала придется с учить , или как лучше ? Или подскажите...

Книги Шилдта - C++
Скажите пожалуйста в чем разница между двумя его книгами: -&quot;Самоучитель С++&quot; -&quot;С++. Базовый курс&quot; Желательно мнение читавших. А...

Кто читал книги Г. Шилдта, отзовитесь - C++
Вообщем случайно забрел в книжный и там купил &quot;Полный справочник по С++ Г. Шилдт&quot;. Пришел домой решил почитать мнения людей о этой книге, я...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Schizorb
509 / 461 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
27.12.2012, 11:07     Непонятная задача на массивы из книги Герберта Шилдта #2
C++
1
2
3
4
5
6
7
8
9
for (i=0; i<10; i++)
{
    if (sqrs[i][0] == x)
    {        
        cout << "Квадрат " << x << " равен ";
        cout << sqrs[i][1] << "\n";
        break;
    }
}
-Индекс должен быть i, а не x.
-break сделай после того, как вывел на экран (или выводи на экран уже после цикла)
-В условии цикла тоже ошибка, выход за пределы массива был.

Добавлено через 1 минуту
Цитата Сообщение от Mr.ILLUMINOR Посмотреть сообщение
Почему [0] и почему [1]?
Потому что создан массив из 10 строк и 2 столбцов. В столбце с индексом 0 - само число, в столбце с индексом 1 - его квадрат.
Alex_La
17 / 17 / 2
Регистрация: 28.06.2010
Сообщений: 77
27.12.2012, 11:10     Непонятная задача на массивы из книги Герберта Шилдта #3
Автор не много видимо ошибся. рабочий код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
        setlocale(LC_ALL,"Russian");
    int sqrs[10][2] = { {1,1}, {2,4}, {3,9}, {4,16}, {5,25}, {6,36}, {7,49}, {8,64}, {9,81}, {10,100} }, x, i;
    cout << "Введите число от 1 до 10: ";
    cin >> x;
    for (i=0; i<=10; i++)
    {
        if (sqrs[i][0] == x)
        {
        cout << "Квадрат " << x << " равен ";
        cout << sqrs[x-1][1] << "\n";
        }
    }
    system("pause");
х-1 надо при выводе, т.к. отсчет с 0 идет
0 и 1. в памяти массив представляется как:
.... 0 1
-------
0 | 1 1
1 | 2 4
2 | 3 9
...........
основы самые программирования
Mr.ILLUMINOR
4 / 4 / 0
Регистрация: 13.04.2012
Сообщений: 37
27.12.2012, 11:12  [ТС]     Непонятная задача на массивы из книги Герберта Шилдта #4
Спасибо. Обидно, конечно, за ошибки в купленной книге, но за себя сильней обидно. Мог бы и сам разобраться, если бы лучше усвоил масссивы.
Schizorb
27.12.2012, 11:15
  #5

Не по теме:

Mr.ILLUMINOR, странная книга, если в таком маленьком примере по крайней мере 3 косяка..((

WhiteP
606 / 204 / 23
Регистрация: 20.11.2012
Сообщений: 426
27.12.2012, 11:16     Непонятная задача на массивы из книги Герберта Шилдта #6
Может задание - исправить код?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
using namespace std;
int main()
{
    setlocale(LC_ALL,"Russian");
    int sqrs[10][2] = { {1,1}, {2,4}, {3,9}, {4,16}, {5,25}, {6,36}, {7,49}, {8,64}, {9,81}, {10,100} }, x, i;
    cout << "Ââåäèòå ÷èñëî îò 1 äî 10: ";
    cin >> x;
    for (i=0; i<10; i++)
    {
        if (sqrs[i][0] != x) continue;
        cout << "ГЉГўГ*äðГ*ГІ " << x << " Г°Г*ГўГҐГ* ";
        cout << sqrs[i][1] << "\n";
    }
    system("pause");
    return 0;
}
Mr.ILLUMINOR
4 / 4 / 0
Регистрация: 13.04.2012
Сообщений: 37
27.12.2012, 11:27  [ТС]     Непонятная задача на массивы из книги Герберта Шилдта #7
Самое интересное, что данная программа идёт именно как пример работы с двумерными массивами ("C++ для начинающих. Шаг за шагом" Герберта Шилдта, издательства Эком за 2011 год, на странице 160). Будьте осторожны!

Добавлено через 6 минут
А есть ли принципиальная разница между

C++
1
2
3
if (sqrs[i][0] != x) continue;
        cout << "Квадрат " << x << " равен ";
        cout << sqrs[i][1] << "\n";
и (я сделал так)

C++
1
2
3
4
5
if (sqrs[i][0] == x)
        {
            cout << "Квадрат " << x << " равен ";
            cout << sqrs[i][1] << "\n";
        }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.12.2012, 11:30     Непонятная задача на массивы из книги Герберта Шилдта
Еще ссылки по теме:

Объясните работу рекурсивной функции из книги Г. Шилдта - C++
Здравствуйте.Вопрос такой ,самостоятельно изучаю с++ по книге Герберта Шилда,дошел до темы рекурсия ,в книге есть такой пример: #include...

Найти и исправить ошибку в коде с пузырьковой сортировкой (пример из книги Шилдта) - C++
программа сортировки массива пузырьковым методом из книги Шилдта. компилятор на 15, 18, 24, 26, 27, 28, 36 пишет ошибка invalid types...

задача непонятная - C++
Объясните, пожалуйста, что нужно сделать, а то формулу не могу вывести, т.е. что нужно делать и с какой последовательностью. Было бы...

Массивы и наследования(непонятная ошибка в консоле std::logic_error) - C++
Вот два класса, не могу в мейне объект elementspiska создать подскажите добрые люди:) class Bill { protected: string name; ...


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

Или воспользуйтесь поиском по форуму:
Schizorb
509 / 461 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
27.12.2012, 11:30     Непонятная задача на массивы из книги Герберта Шилдта #8
Результат будет такой же. Но второе логичнее кажется. Только можно добавить break, раз мы число нашли, цикл можно завершить.
Yandex
Объявления
27.12.2012, 11:30     Непонятная задача на массивы из книги Герберта Шилдта
Ответ Создать тему
Опции темы

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