Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
16 / 16 / 1
Регистрация: 03.05.2010
Сообщений: 158
1

При определенном условии сгенерировать массив

08.10.2010, 15:04. Показов 1267. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нужно при определенном условии сгенерировать массив, если написать это условие:
C
1
2
3
4
int i,j;
for(i=0; i<n; i++)
 for(j=0; j<n; j++)
  x[i][j]=(j<n-i-1) ? 0:j+1;
то получается такой массив:
0 0 0 4
0 0 3 4
0 2 3 4
1 2 3 4.
Как подправить условие, чтобы вывело такой массив:
0 0 0 1
0 0 1 2
0 1 2 3
1 2 3 4.
То есть массив должен и дальше продолжаться при разной размерности

Добавлено через 2 минуты
C
1
x[i][j]=(j<n-i-1) ? 0:j+1;
- если в этой строчке изменить условие на
C
1
x[i][j]=(j<n-i-1) ? 0:j+i-2;
то он выведет правильный массив при размерности 4, но при больших размерностях уже будет не правильный
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.10.2010, 15:04
Ответы с готовыми решениями:

Окно сообщения при определенном условии
Всем привет. Есть кнопка по нажатию которой заполняется поле. Нужно, чтобы при определенном...

Вывод значения при определенном условии
Помогите, пожалуйста:В ячейки A3 и B3 помещены два числа. Если они оба четны, то в ячейку С3...

Повтор цикла при определенном условии
Как такое сделать? IF True Then Все_сначала

Сложение ячеек при определенном условии
Добрый день. я знаю как складываются ячейки =ячейка1 &amp; &quot;,&quot; &amp; ячейка2 &amp; &quot;,&quot; &amp; ячейка3 &amp; &quot;,&quot;...

6
72 / 71 / 8
Регистрация: 04.08.2010
Сообщений: 434
08.10.2010, 15:17 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Лови
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
    const int n=10;
    int a[n][n];
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            if(j<n-i-1)a[i][j]=0;
            else a[i][j]=j-(n-i)+2;
            cout << a[i][j] << "  ";
        }
        cout << endl;
    }
    return 0;
}
1
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
08.10.2010, 15:36 3
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

А я бы вот так сделал:
C
1
2
3
4
5
6
7
8
    for(i = 0; i < SIZE; ++i)
        for(j = 0; j < SIZE; ++j)
            data[i][j] = 0;
    
    for(i = 0; i < SIZE; ++i) {
        for(j = i; j < SIZE; ++j)
            data[SIZE - i - 1][j] = j - i + 1;
    }
0
16 / 16 / 1
Регистрация: 03.05.2010
Сообщений: 158
08.10.2010, 15:39  [ТС] 4
LineStown, спасибо...
видел, что от размерности n зависит, но не мог додуматься куда её впихнуть))

Добавлено через 1 минуту
fasked, и работает?
0
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
08.10.2010, 15:44 5
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Driver_09, а Вы мне не верите или проверить лень?
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
f#include <stdio.h>
 
#define SIZE 5
 
int main()
{
    int i = 0;
    int j = 0;
    int data[SIZE][SIZE];
    
    for(i = 0; i < SIZE; ++i)
        for(j = 0; j < SIZE; ++j)
            data[i][j] = 0;
    
    for(i = 0; i < SIZE; ++i) {
        for(j = i; j < SIZE; ++j)
            data[SIZE - i - 1][j] = j - i + 1;
    }
    
    for(i = 0; i < SIZE; ++i) {
        for(j = 0; j < SIZE; ++j) {
            printf("%d ", data[i][j]);
        }
        
        printf("\n");
    }
}
Код
fasked@linux-vhgb:~/Проекты/forum> ./a.out
0 0 0 0 1 
0 0 0 1 2 
0 0 1 2 3 
0 1 2 3 4 
1 2 3 4 5
1
16 / 16 / 1
Регистрация: 03.05.2010
Сообщений: 158
08.10.2010, 16:07  [ТС] 6
fasked, почему, проверить не лень)))
спасибо.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12736 / 7566 / 1764
Регистрация: 25.07.2009
Сообщений: 13,955
08.10.2010, 16:49 7
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

C
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
 
int main(void){
    int i, j, size;
 
    printf("Size: ");
    scanf("%d", &size);
    printf("\n");
    for ( i = 0; i < size; ++i )
        for ( j = 0; j < size; ++j )
            printf("%d%c", ( i + j + 2 - size < 0 ) ? 0 : i + j + 2 - size, ( j < size - 1 ) ? ' ' : '\n');
    return 0;
}
Хари-Кришна!

Добавлено через 4 минуты
Цитата Сообщение от fasked Посмотреть сообщение
C
1
2
3
4
5
6
7
...
    int data[SIZE][SIZE];
    
    for(i = 0; i < SIZE; ++i)
        for(j = 0; j < SIZE; ++j)
            data[i][j] = 0;
...
Оно же
C
1
int data[SIZE][SIZE] = { 0 };
1
08.10.2010, 16:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.10.2010, 16:49
Помогаю со студенческими работами здесь

Смена обоев при определенном условии
Возможно ли программно организовать смену обоев рабочего стола? Есть ли для этого какие-то функции?

Запуск программы при определенном условии
Доброго времени суток! Можно проверить наличие определенного файла if not exist file.exe goto...

Отобразить button при определенном условии
По умолчанию button1 скрыт в свойствах. Есть splitContainer у которого splitContainer.panel1 по...

Отыскание корня при определенном условии
Здравствуйте. Подскажите пожалуйста как можно реализовать следующую операцию: необходимо...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru