Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.95/20: Рейтинг темы: голосов - 20, средняя оценка - 4.95
Teddy_o_O
1 / 1 / 0
Регистрация: 12.04.2011
Сообщений: 48
1

Основы работ с циклами и функциями

09.09.2011, 11:17. Просмотров 3598. Ответов 21
Метки нет (Все метки)

Дана целочислительная прямоугольная матрица. Определить:
1) количество строк, которые не имеют ни одного нулевого элемента.

2) Найти максимальное из чисел встречающихся в матрице более одного раза

3) Обойти по спирали, начиная с центра, все элементы квадратной матрицы МхN. Вывести на печать в порядке обхода.

Кому не трудно и кто что может... Если можно опишите почему так и так.. хочу освоить С++.. Спасиб..

Добавлено через 16 минут
3) Обойти по спирали, начиная с центра, все элементы квадратной матрицы Мх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
34
35
36
37
38
39
40
41
42
#include <iostream.h>
#include <iomanip.h>
 
int main(int argc, char* argv[])
{
   const int SIZE = 15;
   int arr[SIZE][SIZE] = {0};
   int iIndex, jIndex, n = 0, count = 1;
 
   iIndex = jIndex = SIZE / 2;
   while (n < SIZE)
   {
      for (int i = 0; i < n; i++)
      {
         arr[iIndex++][jIndex] = count++;
      }
      for (int i = 0; i < n; i++)
      {
         arr[iIndex][jIndex++] = count++;
      }
      n++;
      for (int i = 0; i < n; i++)
      {
         arr[iIndex--][jIndex] = count++;
      }
      for (int i = 0; i < n; i++)
      {
         arr[iIndex][jIndex--] = count++;
      }
      n++;
   }
   for (int i = 0; i < SIZE; i++)
   {
      for (int j = 0; j < SIZE; j++)
      {
         cout << setw(4) << arr[i][j];
      }
   cout << endl;
   }
   system("pause");
   return 0;
}
оставлю решение 3 задачки мало-ли у кого как у меня будет задание... Обход по спирали происходит против часовой стрелки..
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.09.2011, 11:17
Ответы с готовыми решениями:

Выделываются с циклами
#include &lt;iostream.h&gt; #include &lt;math.h&gt; void main() {int...

Непонятки с циклами
while(List-&gt;Text.Pos(&quot;&lt;/a&gt;&quot;)&gt;0) { a=(List-&gt;Text.Pos(&quot;&lt;a href=\&quot;&quot;)); ...

Работа с циклами в C++ Builder
Составить программу для вычисления значения выражения: sqrt(a+sqrt(a+sqrt(a))),...

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

Решение лабораторных работ через Borland C++!Oплата!
Здравствуйте ребята! Могли бы вы помочь решить лабораторные работы? Мне скоро...

21
SalterOk
116 / 113 / 10
Регистрация: 02.06.2011
Сообщений: 280
09.09.2011, 11:18 2
Если освоить - то это уже хорошо.
Буду дома напишу подробней.
1
Teddy_o_O
1 / 1 / 0
Регистрация: 12.04.2011
Сообщений: 48
09.09.2011, 11:38  [ТС] 3
!!!!!
К 3) задачке...и там не MxN, a NxN..
Как создать двухмерный массив?.. Мне нужно задавать размер матрицы с программы, а не с её кода..
0
mimicria
return (true);
1960 / 1097 / 219
Регистрация: 19.04.2011
Сообщений: 2,345
09.09.2011, 11:49 4
Цитата Сообщение от Teddy_o_O Посмотреть сообщение
Как создать двухмерный массив?.. Мне нужно задавать размер матрицы с программы, а не с её кода..
C++
1
2
3
int **matrix=new *int[N];
for(int i=0;i<N;i++)
    matrix[i]=new int[M];
1
Teddy_o_O
1 / 1 / 0
Регистрация: 12.04.2011
Сообщений: 48
09.09.2011, 11:51  [ТС] 5
=) Опоздал отредактировать.... вообщем можно 3 задачку уже оставить как есть... Препод согласился...

Добавлено через 43 секунды
Mimicria Спасиб... а это я сохраню для себя как пример... или может добавлю в код что бы лишних вопросов не было!))
0
SalterOk
116 / 113 / 10
Регистрация: 02.06.2011
Сообщений: 280
09.09.2011, 17:53 6
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
#include <stdio.h>
#include <locale>
#include <conio.h>
 
int main() {
    int N,M,counter = 0;
    bool flag = false;
    setlocale(LC_ALL,"Russian");
    printf("Введите размеры матрици\n");
    scanf("%d%d",&N,&M);
    int *mass = new int[N,M];
    for (int i = 0; i < M; i++) {
        for (int j = 0; j < N; j++) {
            mass[j,i] = rand() % 10;   //запелняем матрицу
            printf("%d ",mass[j,i]);     //и сразу выводим ее элементы
            if (!mass[j,i]) flag = true; //если mass[j,i] равен нулю - устанавливаем flag = true
        }
        if (!flag) counter++;    //если flag == false (тоесть в строке нет нуля)
                                               //то увеличиваем счетчик
        flag = false;               //сбрасываем значение для новой строки
        printf("\n");
    }
 
    printf("Количество строк, которые не имеют ни одного нулевого элемента %d",counter);
    getch();
    return 0;
}
Добавлено через 3 минуты
будет время еще второй сделаю - а так:
обычно проходят по масиву и подсчитывают сколько раз встречается каждый уникальный элемент и сохраняют элемент и количество куда-то (еще один массив)
0
Lelik-pahan
09.09.2011, 20:41
  #7

Не по теме:

Основы работ с цыклами и функцыями
кажется пора при регистрации на форуме сделать экзамен по русскому языку

0
asics
Freelance
Эксперт С++
2854 / 1789 / 355
Регистрация: 09.09.2010
Сообщений: 3,841
09.09.2011, 21:38 8
Цитата Сообщение от SalterOk Посмотреть сообщение
int *mass = new int[N,M];
Цитата Сообщение от SalterOk Посмотреть сообщение
printf("%d ",mass[j,i]);
Цитата Сообщение от SalterOk Посмотреть сообщение
if (!mass[j,i])
Вы это серьезно ?
0
SalterOk
116 / 113 / 10
Регистрация: 02.06.2011
Сообщений: 280
09.09.2011, 22:17 9
Цитата Сообщение от asics Посмотреть сообщение
Вы это серьезно ?
с этим delphi(шоб его - учить заставляют) окончательно спутал синтаксис - хоть компилятор пропустил и все какбы правильно работает
кто-то может объяснить если так работает
C++
1
int *mass = new int[N,M];
то почему везде как пример дают??
C++
1
2
3
4
int **n = new int* [N];
for (int i = o; i<N; i++) {
   n[i] = new int[M];
}
0
asics
Freelance
Эксперт С++
2854 / 1789 / 355
Регистрация: 09.09.2010
Сообщений: 3,841
09.09.2011, 22:25 10
Цитата Сообщение от SalterOk Посмотреть сообщение
кто-то может объяснить если так работает
C++
1
int *mass = new int[N,M]
;
Сдесь срабатывает оператор кома, т. е. мы просто выделяем память под одномерный масив, размером M.
Еще пример:
C++
1
int f() {return 1, 2, 3;}
вернет 3
0
SalterOk
116 / 113 / 10
Регистрация: 02.06.2011
Сообщений: 280
09.09.2011, 22:27 11
ой-ой все я понял что я делал - точней я даже не знаю о чем думал когда это писал(только не нужно расказывать почему не правильно)
но вот почему компилятор пропустил такой код я не пойму - значит он не считает его ошибочным??

Добавлено через 1 минуту
Цитата Сообщение от asics Посмотреть сообщение
Сдесь срабатывает оператор кома, т. е. мы просто выделяем память под одномерный масив, размером M.
спасибо большое - нужно повнимательней быть.
0
Teddy_o_O
1 / 1 / 0
Регистрация: 12.04.2011
Сообщений: 48
10.09.2011, 16:09  [ТС] 12
SalterOk все равно ты очень помог.. а кто то знает ришение 1?
0
SalterOk
116 / 113 / 10
Регистрация: 02.06.2011
Сообщений: 280
10.09.2011, 16:57 13
менять много не пришлось - кажется на этот раз все правильно
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
#include <stdio.h>
#include <locale>
#include <conio.h>
 
int main() {
    const int N = 6, M = 20;
    int counter = 0;
    bool flag = false;
    setlocale(LC_ALL,"Russian");
    int mass[N][M];
    for (int i = 0; i < M; i++) {
        for (int j = 0; j < N; j++) {
            mass[j][i] = rand() % 10;
            printf("%d ",mass[j][i]);
            if (!mass[j][i]) flag = true;
        }
        if (!flag) counter++;
        flag = false;
        printf("\n");
    }
 
    printf("Количество строк, которые не имеют ни одного нулевого элемента %d",counter);
    getch();
    return 0;
}
1
Teddy_o_O
1 / 1 / 0
Регистрация: 12.04.2011
Сообщений: 48
12.09.2011, 14:38  [ТС] 14
C++
1
 mass[j][i] = rand() % 10;
ругается!
0
rangerx
1942 / 1551 / 478
Регистрация: 31.05.2009
Сообщений: 2,913
12.09.2011, 16:09 15
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
#include <iostream>
#include <iomanip>
#include <cstddef>
#include <ctime>
#include <cstdlib>
 
int main()
{
    const std::size_t m = 4;
    const std::size_t n = 3;
 
    int matrix[m][n];
    
    // заполняем матрицу
    std::srand(std::time(0));
    for(std::size_t i = 0; i < m; ++i)
        for(std::size_t j = 0; j < n; ++j)
            matrix[i][j] = std::rand() % 10;
 
    // выводим на экран
    std::cout << "matrix:\n";
    for(std::size_t i = 0; i < m; ++i)
    {
        for(std::size_t j = 0; j < n; ++j)
            std::cout << std::setw(4) << matrix[i][j];
        std::cout << '\n';
    }
 
    // считаем
    std::size_t count = m;
    for(std::size_t i = 0; i < m; ++i)
    {
        for(std::size_t j = 0; j < n; ++j)
        {
            if(matrix[i][j] == 0)
            {
                --count;
                break;
            }
        }
    }
 
    std::cout << "result: " << count << '\n';
 
    return 0;
}
1
Teddy_o_O
1 / 1 / 0
Регистрация: 12.04.2011
Сообщений: 48
15.09.2011, 10:48  [ТС] 16
Помогите 2 задачка ругается
C++
1
 mass[j][i] = rand() % 10;
вот в этой части...
Как задать правильно рандом? я смотрел, так вроде бы и правильно а не работает!!!
0
koldun
145 / 100 / 6
Регистрация: 11.03.2010
Сообщений: 478
15.09.2011, 11:02 17
C++
1
mass[j][i] = std::rand() % 10;
1
LK
Заблокирован
15.09.2011, 12:21 18
Лучший ответ Сообщение было отмечено как решение

Решение

C++
1
2
3
Randomise();
const NUM = 100;
int i =Random(NUM%10);
3
Infinity3000
1060 / 579 / 87
Регистрация: 03.12.2009
Сообщений: 1,255
15.09.2011, 12:37 19
Цитата Сообщение от LK Посмотреть сообщение
Randomise();
Randomize();
2
koldun
145 / 100 / 6
Регистрация: 11.03.2010
Сообщений: 478
15.09.2011, 14:11 20
Цитата Сообщение от Infinity3000 Посмотреть сообщение
Randomize();
подобного рода ошибки вполне в стиле ЛК

это такая себе защита от дурака с копипейстом
что бы люди немного думали..
2
15.09.2011, 14:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.09.2011, 14:11

основы трояна
все мы знаем что большинство троянов состоят из Клиента и Сервера. Мне нужно...

Основы Builder C++
Ребят, не nодскажете какие-нибудь источники , где оnисываются все функции и...

Основы ООП [С++]
Немного знаю Java, написал программу которая по заданным 2-м сторонам и углом...


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

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

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