Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 21.02.2019
Сообщений: 2
1

Пастбище представляет собой прямоугольник, разбитый на N x N клеток

21.02.2019, 22:02. Просмотров 2102. Ответов 4
Метки нет (Все метки)


Столкнулся в проблемой при решении задачи. Вроде всё написал, но ошибка при компиляции непонятная. Unhandled exception at 0x012F8654 in ConsoleApplication18.exe: 0xC0000005: Access violation reading location 0xFDFDFE01. Вот задача:
Кликните здесь для просмотра всего текста
Пастбище представляет собой прямоугольник, разбитый на N x N клеток. В каждой клетке растет трава, имеющая свою калорийность (во всех клетках калорийность травы разная). В левой нижней клетке стоит корова Мурка. Съев всю траву в своей клетке, она перемещается на одну клетку вправо или на одну клетку вверх, всегда выбирая ту из клеток, калорийность травы в которой больше (за пределами поля трава не растет). В конце концов корова приходит в правую верхнюю клетку. Требуется определить, сколько всего калорий получит корова (считая калории травы в первой и в последней клетках).
Подскажите что неправильно в коде, пожалуйста
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
#include <iostream>
#include <conio.h>
using namespace std;
 
 
int main(){
    setlocale(LC_ALL, "Russian");
    int i, j, n;
    cin >> n;
    float**p = new float*[n];
    for ( i = 0; i < n; i++)
        p[i] = new float[n];
    for ( i = 0; i < n; i++) {
        for (j = 0; j < n; j++) {
            cin >> p[i][j]; 
        }
    }
    int a = n - 1;
    int b = 0;
    for (int step = 0; step = 2 * n - 1; step++){
        if (p[a - 1][b] > p[a][b + 1]){
            p[a][b] += p[a - 1][b];
            a = a - 1;
        } 
        else{
            p[a][b] += p[a][b + 1];
            b++;
        }
    }
    cout << p[a][b];
    getch();
    return 0;
}
Входные данные
Сначала вводится число N – размер поля (2 ≤ N ≤ 10). В следующей строке вводятся через пробел числа, задающие количество калорий в клетках верхнего ряда, в следующей – количество калорий в клетках следующего ряда, …, в последней – количество калорий в клетках нижнего ряда. Все числа – различные, натуральные, не превосходящие 100.

Выходные данные
Требуется вывести количество калорий, которое получит корова.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.02.2019, 22:02
Ответы с готовыми решениями:

Что собой представляет WebService?
Ребят, кто может мне описать что собой представляет WebService. Может кто даст ссылки на литературу...

Что за собой представляет STDP протокол?
Здравствуйте всем! подскажите пожалуйста что за собой представляет STDP протокол? в интернете не...

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

Гараж представляет собой стек на n машин
подскажите как решить задачу,пожалуйста 1)Гараж представляет собой стек на n машин. 2)Время...

4
2 / 1 / 1
Регистрация: 11.03.2018
Сообщений: 96
21.02.2019, 22:41 2
prosto_ya_tupoy, Можете пример привести?

Добавлено через 11 секунд
Для задачи
0
Продавец времени
4887 / 2668 / 612
Регистрация: 12.03.2015
Сообщений: 12,916
21.02.2019, 22:46 3
А у меня компилится без ошибки.
Однако, warning-то есть...

Код
E:\Cpp Projects\thread2407735\main.cpp|22|warning: suggest parentheses around assignment used as truth value [-Wparentheses]|
Пастбище представляет собой прямоугольник, разбитый на N x N клеток
0
0 / 0 / 0
Регистрация: 21.02.2019
Сообщений: 2
21.02.2019, 23:48  [ТС] 4
Например
Ввод:
2
1 4
7 9
Вывод:
20

Добавлено через 1 минуту
А задача правильно решается? На выводе то что нужно,
0
1282 / 620 / 292
Регистрация: 17.11.2018
Сообщений: 1,593
21.02.2019, 23:48 5
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
int main()
{
    setlocale( LC_ALL, "Russian" );
    int i, j, n;
 
    cin >> n;
    float**p = new float*[n];
    for( i = 0; i < n; i++ )
        p[i] = new float[n];
 
    for( i = 0; i < n; i++ )
        for( j = 0; j < n; j++ )
            cin >> p[i][j];
 
    i = n - 1;
    j = 0;
    float sum = p[i][j];
    while( i != 0 || j != n - 1 )
    {
        i != 0 && p[i - 1][j] > p[i][j + 1] ? i-- : j++;
        sum += p[i][j];
    }
 
    cout << sum << endl;
 
    for( int i = 0; i < n; i++ )
        delete[] p[i];
    delete[] p;
 
    return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.02.2019, 23:48

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

Почему Stack<T> внутренне представляет собой массив?
Я всегда думал, что наиболее логично использовать для этого связный список. Как же там организован...

Указанный фрагмент представляет собой алгоритм перевода числа
B:=0;P:=1; Repeat Ml:=n mod 10; ...

Маховик представляет собой диск .Определить тормозящий момент
Маховик представляющий собой диск массой m=10кг и радиусом R=10 см ,свободно вращается вокруг...

Царство царя Гороха представляет собой выпуклый N-угольник
Олимпиадная задача. Царство царя Гороха представляет собой выпуклый N-угольник, внутри которого...


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

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

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