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

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

Войти
Регистрация
Восстановить пароль
 
chip046
0 / 0 / 0
Регистрация: 21.03.2012
Сообщений: 16
#1

Опишите операторы цикла. Приведите примеры. - C++

13.06.2012, 19:34. Просмотров 875. Ответов 9
Метки нет (Все метки)

1. Опишите операторы цикла. Приведите примеры.

2. Напишите программу на языке СИ++ сложения двух матриц (двумерных массивов). Даны матрицы A[5][5] и B[5][5]. Надо их определить и проинициализировать, распечатать, получить матрицу C[5][5], которая состоит из сумм элементов массива A и массива B (C[i][j] = A[i][j] + B[i][j]). Результат распечатать. Подсчитать сумму элементов массива C и распечатать.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.06.2012, 19:34     Опишите операторы цикла. Приведите примеры.
Посмотрите здесь:

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

насчет перечисления(зачем я объявляю переменную в перечислении? Приведите примеры где удобно использовать перечисление?) - C++
зачем я объявляю переменную в перечислении? Чтобы мог обращаться к элементам перечисления? Правильно ли мое суждение и приведите примеры...

Опишите сходство и различие использования операторов цикла for, while - C++
0пишите сходство и различие использования операторов цикла for, while и do ... while. Приведите примеры.

операторы цикла - C++
написать программу для решения уравнений: http://s2.ipicture.ru/uploads/20110601/A52Swkt6.png ...

операторы цикла - C++
составить программу для вычисления S. задачу решить тремя способами( с использованием трех типов оператора цикла

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

[C++] Операторы цикла - C++
(я пишу в Dev-Cpp, писать начал около месяца назад...) Х изменяется в диапазоне от a до b с шагом h. Вычисление суммы вести до тех пор,...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Spaum145
2 / 2 / 0
Регистрация: 23.08.2009
Сообщений: 21
15.06.2012, 13:16     Опишите операторы цикла. Приведите примеры. #2
1ый вопрос - искать в кижках по программированию
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
// так полагаю, что массивы типа int. Если double или вдруг(!) string,
// то почти ничего не изменится
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define DIM 5 //dimension -размерность массива
 
void Init(int **A)
{
    for (int i=0; i<DIM; i++){
        for (int j=0; j<DIM; j++)
            A[i][j]=rand()%100;
    }
}
 
void PrintMas(int ** mas)
{
    for (int i=0; i<DIM; i++)
    {
        for (int j=0; j<DIM; j++)
        {
            printf("%3d\t",mas[i][j]);
        }
        printf("\n");
    }
}
 
void SumMas(int ** A, int ** B, int ** C)
{
    for (int i=0; i<DIM; i++)
    {
        for (int j=0; j<DIM; j++)
        {
            C[i][j]=A[i][j]+B[i][j];
        }
    }
}
 
int ElemSum (int ** A)
{
    int count=0;
    for (int i=0; i<DIM; i++)
        for (int j=0; j<DIM; j++)
            count+=A[i][j];
    return count;
}
 
void main()
{
    srand ( time(NULL) );
    //определение
    int **A=new int*[DIM], **B=new int*[DIM], **C=new int*[DIM];
    for (int i=0;i<DIM;i++) 
    {
        A[i]=new int[DIM];
        B[i]=new int[DIM];
        C[i]=new int[DIM];
    }
    
    //инициализация
    Init(A);
    Init(B);
    
    //Вывод A, B
    printf("Massiv A:\n");
    PrintMas(A);
    printf("Massiv B:\n");
    PrintMas(B);
 
    //суммирование A и В
    printf("C = summma(A,B):\n");
    SumMas(A,B,C);
    PrintMas(C);
 
    //сумма элементов массива С
    printf("summma elementov C: %d\n", ElemSum(C));
 
    system("pause");
    //очищение памяти
    for(int i=0; i<DIM; i++) delete A, B;
         delete A, B;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Massiv A:
 19      66      88       1      60
 15      30      56      91      80
 42      81      80      92      47
 27       9      61      16      89
 60      46      62      17      55
Massiv B:
 23      58      11      31      23
  3      28       2      58      94
  6      62      83      67      18
  7      52      91      55      16
  5      18      29      17      41
C = summma(A,B):
 42     124      99      32      83
 18      58      58     149     174
 48     143     163     159      65
 34      61     152      71     105
 65      64      91      34      96
summma elementov C: 2188
Добавлено через 10 часов 29 минут
Забыл добавить массив С в блок освобождения динамической памяти
C++
1
2
3
    //очищение памяти
    for(int i=0; i<DIM; i++) delete A, B, C;
         delete A, B, C;
вспомнил уже когда засыпал)
sandye51
программист С++
681 / 583 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
15.06.2012, 14:16     Опишите операторы цикла. Приведите примеры. #3
Цитата Сообщение от Spaum145 Посмотреть сообщение
//очищение памяти
* * for(int i=0; i<DIM; i++) delete A, B, C;
* * * * *delete A, B, C;
и что это за ерунда?
Spaum145
2 / 2 / 0
Регистрация: 23.08.2009
Сообщений: 21
15.06.2012, 14:27     Опишите операторы цикла. Приведите примеры. #4
Да, забыл подписать.
C++
1
2
3
    //очищение памяти
    for(int i=0; i<DIM; i++) delete A[i], B[i], C[i];
         delete A, B, C;
т.е. не просто удалить указатели, а потом еще раз их удалить (повторное освобождение памяти), а сначала удалить массивы указателей (A[i], B[i], C[i]), а потом уже массивы указателей на указатели (A, B, C) . Полагаю вы это имели ввиду?

Но это в принципе не относится к вопросам chip046. Но спасибо, что поправили
sandye51
программист С++
681 / 583 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
15.06.2012, 14:34     Опишите операторы цикла. Приведите примеры. #5
все равно ерунда

Добавлено через 5 минут
Spaum145, запустите код, предоставленный ниже. Может поймете ошибку
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
 
class c
{
public:
    ~c()
    {
        std::cout << "1" << std::endl;
    }
};
 
int main(int argc, const char * argv[])
{
    c* a1 = new c[2];
    c* a2 = new c[2];
    c* a3 = new c[2];
    
    delete[]a1, a2, a3;
    
    return 0;
}
Spaum145
2 / 2 / 0
Регистрация: 23.08.2009
Сообщений: 21
15.06.2012, 14:47     Опишите операторы цикла. Приведите примеры. #6
Судя по выводу деструктор вызывался только два раза... Я все равно не догоняю
sandye51
программист С++
681 / 583 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
15.06.2012, 14:54     Опишите операторы цикла. Приведите примеры. #7
Цитата Сообщение от Spaum145 Посмотреть сообщение
delete A[i], B[i], C[i];
такой синтаксис неприемлим

Во-первых, массивы надо удалять используя оператор delete[]array_name;
Во-вторых, даже если тут исправить, то выражение "delete[]A[i], B[i], C[i]" означает следующее:
это составной оператор и тут память, выделенная под массив элементов A[i], будет освобождена
а с массивами B[i], C[i] ничего не произойдет.
Что и было продемонстрированно в моем примере

правильно надо писать delete[]A[i], delete[]B[i], delete[]C[i];
Spaum145
2 / 2 / 0
Регистрация: 23.08.2009
Сообщений: 21
15.06.2012, 15:04     Опишите операторы цикла. Приведите примеры. #8
Цитата Сообщение от Spaum145 Посмотреть сообщение
деструктор вызывался только два раза
это потому, что было освобожден один объект класса с, состоящий из двух элементов?
sandye51
программист С++
681 / 583 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
15.06.2012, 15:11     Опишите операторы цикла. Приведите примеры. #9
Цитата Сообщение от Spaum145 Посмотреть сообщение
это потому, что было освобожден один объект класса с, состоящий из двух элементов?
это потому что составной оператор "delete[]a1, a2, a3;" можно разделить на 3 независимых
1. delete[]a1;
2. a2;
3. a3;

Первый освобождает память, выделенную под массив объектов. И вызывает у каждого объекта деструктор. Поскольку в массиве только 2 элемента, то и было напечатан две единички
А операторы 2 и 3 ничего не делают
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.06.2012, 17:49     Опишите операторы цикла. Приведите примеры.
Еще ссылки по теме:

Операторы цикла (while, do...while) - C++
Вводится точность e. Вычислить сумму ряда (LR2). Вычисления продолжать до тех пор, пока очередное слагаемое не станет меньше e.

Операторы цикла while и do … while - C++
Здравствуйте,помогите пожалуйста решить задачу простым способом. 1) Вводить последовательность чисел до тех пор, пока их сумма...

Операторы цикла - C++
Помогите с кодом: //--------------------------------------------------------------------------- #include &lt;vcl.h&gt; #include...

Операторы цикла - C++
Вводить с клавиатуры буквы, пока не будет введен символ, не являющийся буквой. Определить, является ли введенная последовательность...

Операторы цикла. - C++
Вводится число X&gt;1 и точность e. Вычислить с заданной точностью квадратный корень введенного числа X, не пользуясь функцией SqRt (один из...


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

Или воспользуйтесь поиском по форуму:
chip046
0 / 0 / 0
Регистрация: 21.03.2012
Сообщений: 16
15.06.2012, 17:49  [ТС]     Опишите операторы цикла. Приведите примеры. #10
Цитата Сообщение от sandye51 Посмотреть сообщение
это потому что составной оператор "delete[]a1, a2, a3;" можно разделить на 3 независимых
1. delete[]a1;
2. a2;
3. a3;

Первый освобождает память, выделенную под массив объектов. И вызывает у каждого объекта деструктор. Поскольку в массиве только 2 элемента, то и было напечатан две единички
А операторы 2 и 3 ничего не делают
уважаемые програмисты, спасибо Вам огромное за помощь, я в програмировании ни фига не соображаю, а инст как то заканчивать надо:-) примного благодарен!!!!!!!!
Yandex
Объявления
15.06.2012, 17:49     Опишите операторы цикла. Приведите примеры.
Ответ Создать тему
Опции темы

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