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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.93
LamerOnLine
0 / 0 / 0
Регистрация: 23.01.2009
Сообщений: 17
#1

Ширина столбцов матрицы - C++

24.01.2009, 17:20. Просмотров 1847. Ответов 12
Метки нет (Все метки)

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
#include<stdio.h>
#include<conio.h>
#define A 3
#define B 2
int main()
{
    int mass[A][B],i,j,a,b,s=0;
    clrscr();
    printf("input mass\n");
    for(i=0;i<A;i++)
        for(j=0;j<B;j++)
            scanf("%d",&mass[i][j]);
    for(i=0;i<A;i++)
        {
        printf("\n");
        for(j=0;j<B;j++)
            printf("%d\t",mass[i][j]);
        }
    printf("\n\ninput a\n");
    scanf("%d",&a);
    printf("input b\n");
    scanf("%d",&b);
    for(i=a-1;i<b;i++)
        for(j=0;j<B;j++)
            s+=mass[i][j];
    printf("summa=%d\n\n",s);
    printf("press any key");
    getch();
    return 0;
}
Как модифицировать задачу так, что бы при выведении матрицы на экран ширина всех столбцов была одинаковой? Ибо в нынешнем своем виде если вводить например однозначные и двузначные числа - то столбцы матрицы жутко корёжит... Так вроде прога работает нормально, но выравнивание столбцов - одно из условий задачи... Подскажите - как это реализовать. Через поиск вроде не нашел.

Добавлено через 19 минут 3 секунды
Ой... вообще размерность массива 9x7... просто посоветовали уменьшить для отладки) а назад вернуть забыл...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.01.2009, 17:20     Ширина столбцов матрицы
Посмотрите здесь:

C++ сортировка столбцов матрицы
Сортировка столбцов матрицы C++
Сортировка столбцов матрицы C++
C++ Сортировка столбцов матрицы
C++ Ошибка при вводе разного кол-ва строк и столбцов в матрицы. Динамич. матрицы/массивы
C++ Сортировка столбцов матрицы
C++ Найти номера тех столбцов матрицы, сумма элементов которых превышает заданную величину, и число таких столбцов
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Otaka
1822 / 678 / 18
Регистрация: 11.12.2008
Сообщений: 1,019
24.01.2009, 17:41     Ширина столбцов матрицы #2
C++
1
printf("%4d\t",mass[i][j]);
LamerOnLine
0 / 0 / 0
Регистрация: 23.01.2009
Сообщений: 17
24.01.2009, 17:52  [ТС]     Ширина столбцов матрицы #3
Во... нормально) Только все таки если в массиве есть числа из 5 символов то снова начинается смещение... Но думаю прокатит... А есть еще какие-нибудь способы? На будущее)

Добавлено через 2 минуты 18 секунд
А как это на пальцах объяснить? Что-то вроде отступа?
Otaka
1822 / 678 / 18
Регистрация: 11.12.2008
Сообщений: 1,019
24.01.2009, 17:55     Ширина столбцов матрицы #4
А написать %10d нельзя?
При использовании консоли хорошо пользоваться cout из iostream.h и манипуляторами из iomanip.h
Там можно писать так:
C++
1
2
3
cout<<setw(5)<<45<<endl;
cout<<setw(6)<<setprecision(2)<<46.6;
//и еще много других манипуляторов вывода
Ширина поля вывода.
LamerOnLine
0 / 0 / 0
Регистрация: 23.01.2009
Сообщений: 17
24.01.2009, 18:03  [ТС]     Ширина столбцов матрицы #5
Написать можно) только тогда это будет очень большая матрица... все таки 9x7... А какими именно элементами она будет заполняться - не известно...
... эм... с iostream и iomanip пока не занком) Но думаю на данном этапе сойдет и способ с шириной поля ввода... Спасибо)
xToTa
13 / 13 / 0
Регистрация: 26.01.2009
Сообщений: 162
26.01.2009, 18:05     Ширина столбцов матрицы #6
А вообще `\t` это табуляция.
LamerOnLine
0 / 0 / 0
Регистрация: 23.01.2009
Сообщений: 17
26.01.2009, 18:09  [ТС]     Ширина столбцов матрицы #7
Это я знаю)) четверка стоит не перед \t, а между % и d...
Otaka
1822 / 678 / 18
Регистрация: 11.12.2008
Сообщений: 1,019
26.01.2009, 18:09     Ширина столбцов матрицы #8
Действительно. Я о ней и не подумал, наверное потому, что ниразу ей не пользовался.
accept
4819 / 3239 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
27.01.2009, 00:33     Ширина столбцов матрицы #9
Код
#define A 3  
#define B 2

    int mass[A][b]
Код
    printf("%*d", (maxelem > 100000 ? 10 : 5), mass[i][j]);
LamerOnLine
0 / 0 / 0
Регистрация: 23.01.2009
Сообщений: 17
27.01.2009, 16:03  [ТС]     Ширина столбцов матрицы #10
не знает - что такое maxlem. Что для него нужно подключить? Или самому писать функцию?
xToTa
13 / 13 / 0
Регистрация: 26.01.2009
Сообщений: 162
27.01.2009, 16:12     Ширина столбцов матрицы #11
maxelem это ты сам должен функцию написать маленькую... функцию нахождения максимального элемента всей матрицы, а это я думаю не так уж сложно для тебя

оно просто заменяет * между % и d на число 5 если максимальный элемент < 10000, т.е. 4 цифры, или на 10 если максимальный элемент более 4 цифр...
только в строке printf("%*d", (maxelem > 100000 ? 10 : 5), mass[i][j]); надо сравнение делать не просто >, а >=

И мне кажется достаточно будет и не 10, а всего 7-8... иначе действительно размажет на весь экран =)
LamerOnLine
0 / 0 / 0
Регистрация: 23.01.2009
Сообщений: 17
27.01.2009, 16:46  [ТС]     Ширина столбцов матрицы #12
Да думаю сойдет и поле ввода... Суть задачи не в этом... Но если что - думаю функцию написать смогу)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.01.2009, 01:14     Ширина столбцов матрицы
Еще ссылки по теме:

C++ Сложение столбцов матрицы
C++ Перестановка столбцов матрицы
C++ Перестановка столбцов матрицы
Вывести на экран номера столбцов матрицы, сумма которых превышает заданную величину, и число таких столбцов C++
Сдвиг столбцов матрицы C++

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

Или воспользуйтесь поиском по форуму:
accept
4819 / 3239 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
28.01.2009, 01:14     Ширина столбцов матрицы #13
Код
printf("%*d", (abs(maxelem) > 9999  ? 12 : 6), mass[i][j]);
int помещает 2147483647 и -2147483648

Добавлено через 4 минуты 0 секунд
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
#include <stdio.h>
 
/* находит максимальный элемент матрицы */
main()
{
    int mtx[3][3] = {
        1, 2, 3,
        4, 5, 6,
        1, 7, 3
    };
    int i, j, maxelem;
    
    for (maxelem = i = 0; i < 3; i++)
        for (j = 0; j < 3; j++)
            if (maxelem < mtx[i][j])
                maxelem = mtx[i][j];
    printf("%d\n", maxelem);
    return 0;
}
Yandex
Объявления
28.01.2009, 01:14     Ширина столбцов матрицы
Ответ Создать тему
Опции темы

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