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

Диаграмма макс элементов столбцов на С

07.07.2010, 15:12. Показов 1355. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Напишите пожалуйста на Си:
Для данной матрицы m на n (m не равно n) построить диаграмму максимальных элементов столбцов.
пример диаграммы:
5 *****
2 **
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.07.2010, 15:12
Ответы с готовыми решениями:

Номера строк, в которых макс. эл-т с четными индексами столбцов совпадает с макс. эл-ом с нечетными индексами столбцов
Составить программу, находящую в матрице D(m, n), номера строк, в которых максимальный среди...

Найти мин элемент каждой строки и макс элемент столбцов, строку с макс суммой, строку с макс элем.
Массив 10х10 N=10 1) Минимальный элемент каждой строки 2) Максимальный элемент каждого столбца...

Двумерный массив, поиск макс элементов и удаление строк и столбцов
Имеется двумерный массив arr . Необходимо сгенерировать в него числа от -n до n. Найти максимальные...

В матрице макс.элемент заменить средним арифм. элементов строки, в к-рой находится макс.элемент
Здравствуйте! Помогите пожалуйста с решением такой задачи: В матрице D максимальный элемент...

15
ниначмуроФ
851 / 535 / 110
Регистрация: 12.10.2009
Сообщений: 1,913
07.07.2010, 15:48 2
SilverSand, в каждой строке надо найти максимальный элемент, после того как нашел запускаеш например цикл от 0 до макс_элемента и рисуеш звездочки.
0
1 / 1 / 0
Регистрация: 01.07.2010
Сообщений: 34
07.07.2010, 16:48  [ТС] 3
вообще, все немного сложнее...
есть программа, транспонирующая матрицу и надо для полученной матрицы построить диаграмму максимальных элементов столбцов+ все выводится в файл.

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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
void main(void)
{
clrscr();
FILE *f;
f=fopen("IN_6.TXT", "r");
int a[10] [10], t[10][10];
int str,col,i,j;
 
fscanf(f, "%d", &str);
fscanf(f, "%d", &col);
{
for(i=0; i<str; i++)
    {
    for(j=0; j<col; j++)
    {
        a[i][j]=rand() % 10;
        printf ("%d", a[i][j]);
        printf (" ");
    }
    printf("\n");
    }
printf("\n");
fclose (f);
 
}
 
 
    for (i=0; i<str; i++)
    for (j=0; j<col; j++)
 
    t[j][i]=a[i][j];
 
    for (i=0; i<col; i++)
    {
    for (j=0; j<str; j++)
    {
        printf("%d", t[i][j]);
        printf(" ");
    }
    printf("\n");
 
 
 
    }
f=fopen("OUT_6.TXT", "w");
    for(i=0; i<col; i++)
    {
    for(j=0; j<str; j++)
    {
        fprintf(f,"%d", t[i][j]);
        fprintf(f," ");
    }
    fprintf(f,"\n");
 
    }
 
}
как здесь, в транспонированной матрице, найти макс элементы столбцов?

Добавлено через 11 минут
Вставьте, пожалуйста, недостающий кусок, чтобы программа выводила еще и диаграмму в файл.
0
ниначмуроФ
851 / 535 / 110
Регистрация: 12.10.2009
Сообщений: 1,913
07.07.2010, 17:14 4
на с++ так
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
#include <iostream>
#include <vector>
#include <iomanip>
#include <fstream>
 
int main()
{
    const int COL=3;
    const int ROW=8;
    std::vector<std::vector<int> >  mas(ROW,std::vector<int>(COL));
 
 
    for( int i = 0; i < ROW; ++i){
        for( int j = 0; j < COL; ++j){
            mas[i][j]=rand()%20;
            std::cout<<std::setw(5)<<mas[i][j];
        }
        std::cout<<std::endl;
    }
 
    std::ofstream out("1.txt", std::ios::out);
 
    int j=0;
    for( int i = 0; i < ROW; ++i){
        int max=mas[i][0];
        for( j = 0; j < COL; ++j){
            if ( mas[i][j]>max )
            max=mas[i][j];
        }
        out<<max<<" ";
        for ( int i=0; i<max; ++i){
        out<<"*";
        }
        out<<std::endl;
    }
 
    out.close();
 
    return EXIT_SUCCESS;
}

вам нужен лиш этот кусок (только переделать на С)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    std::ofstream out("1.txt", std::ios::out);
 
    int j=0;
    for( int i = 0; i < ROW; ++i){
        int max=mas[i][0];
        for( j = 0; j < COL; ++j){
            if ( mas[i][j]>max )
            max=mas[i][j];
        }
        out<<max<<" ";
        for ( int i=0; i<max; ++i){
        out<<"*";
        }
        out<<std::endl;
    }
1
1 / 1 / 0
Регистрация: 01.07.2010
Сообщений: 34
07.07.2010, 17:41  [ТС] 5
Может кто нибудь может сделать это на Си?
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
07.07.2010, 18:46 6
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    FILE*f;
    f=fopen("D:\\1.txt", "w");
    if (f==0)
    {
        printf("No file\n");
        exit(1);
    }
    int j=0;
    for( int i = 0; i < ROW; ++i)
    {
        int max=mas[i][0];
        for( j = 0; j < COL; ++j)
            {
                if ( mas[i][j]>max )
                max=mas[i][j];
            }
        fprintf(f, "%d "" ", max);
        for ( int i=0; i<max; ++i){
        fputs("*", f);
        }
    }
    return 0;
Как-то так...

Или вот так... Каждая цифра со звездочками на новой строке...

После вот этого: fputs("*", f); за циклом пишем fputs("\n", f);
1
1 / 1 / 0
Регистрация: 01.07.2010
Сообщений: 34
07.07.2010, 19:11  [ТС] 7
Так... Ну все почти хорошо, НО...
при подсчете последнего макс значения из столбца вылезает фигня.
Код в итоге таков:
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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
void main(void)
{
clrscr();
FILE *f;
f=fopen("IN_6.TXT", "r");
int a[10] [10], t[10][10];
int str,col,i,j,max[10];
fscanf(f, "%d", &str);
fscanf(f, "%d", &col);
{
for(i=0; i<str; i++)
    {
    for(j=0; j<col; j++)
    {
        a[i][j]=rand() % 10;
        printf ("%d", a[i][j]);
        printf (" ");
    }
    printf("\n");
    }
printf("\n");
fclose (f);
}
    for (i=0; i<str; i++)
    for (j=0; j<col; j++)
    t[j][i]=a[i][j];
    for (i=0; i<col; i++)
    {
        for (j=0; j<str; j++)
        {
        printf("%d", t[i][j]);
        printf(" ");
        }
    printf("\n");
    }
f=fopen("OUT_6.TXT", "w");
    for(i=0; i<col; i++)
    {
    for(j=0; j<str; j++)
    {
        fprintf(f,"%d", t[i][j]);
        fprintf(f," ");
    }
    fprintf(f,"\n");
    }
{
int max=0;
for(j=0;j<col;j++)
{max=t[j][0];
for (i=0;i<str;i++)
{
if (t[i][j]>max)
max=t[i][j];}
printf("max=%i\n",max);
 
}
}
}
Что делать?!
(подсчет макс значение в столбце идет с 50 стр, но, сдается мне, косяк где то до этого...)
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
07.07.2010, 19:19 8
Гм. Все работает. Дабы не быть голословным.

Гм. Если правильно вас понял...

for(j=0;j<=col;j++)
{max=t[j][0];
for (i=0;i<=str;i++)
{
Миниатюры
Диаграмма макс элементов столбцов на С   Диаграмма макс элементов столбцов на С  
0
1 / 1 / 0
Регистрация: 01.07.2010
Сообщений: 34
07.07.2010, 19:22  [ТС] 9
исходный код в студию, пожалуйста)
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
07.07.2010, 19:28 10
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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
void main(void)
{
system("cls");
FILE *f;
f=fopen("D:\\IN_6.TXT", "r");
int a[10] [10], t[10][10];
int str,col,i,j,max[10];
fscanf(f, "%d", &str);
fscanf(f, "%d", &col);
{
for(i=0; i<str; i++)
        {
        for(j=0; j<col; j++)
        {
                a[i][j]=rand() % 10;
                printf ("%d", a[i][j]);
                printf (" ");
        }
        printf("\n");
        }
printf("\n");
fclose (f);
}
        for (i=0; i<str; i++)
        for (j=0; j<col; j++)
        t[j][i]=a[i][j];
    for (i=0; i<col; i++)
    {
            for (j=0; j<str; j++)
            {
            printf("%d", t[i][j]);
            printf(" ");
            }
        printf("\n");
    }
    f=fopen("D:\\OUT_6.TXT", "w");
        for(i=0; i<col; i++)
        {
        for(j=0; j<str; j++)
        {
            fprintf(f,"%d", t[i][j]);
            fprintf(f," ");
        }
        fprintf(f,"\n");
        }
{
int max=0;
for(j=0;j<=col;j++)
{max=t[j][0];
for (i=0;i<=str;i++)
{
if (t[i][j]>max)
max=t[i][j];}
printf("max=%i\n",max);
fprintf(f, "%d", max);
 
}
}
}
Миниатюры
Диаграмма макс элементов столбцов на С  
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
07.07.2010, 19:39 11
Собственно с выводом max в файл и диаграммой для каждого max...

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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
void main(void)
{
system("cls");
FILE *f;
f=fopen("D:\\IN_6.TXT", "r");
int a[10] [10], t[10][10];
int str,col,i,j,max[10];
fscanf(f, "%d", &str);
fscanf(f, "%d", &col);
{
for(i=0; i<str; i++)
        {
        for(j=0; j<col; j++)
        {
                a[i][j]=rand() % 10;
                printf ("%d", a[i][j]);
                printf (" ");
        }
        printf("\n");
        }
printf("\n");
fclose (f);
}
        for (i=0; i<str; i++)
        for (j=0; j<col; j++)
        t[j][i]=a[i][j];
    for (i=0; i<col; i++)
    {
            for (j=0; j<str; j++)
            {
            printf("%d", t[i][j]);
            printf(" ");
            }
        printf("\n");
    }
    f=fopen("D:\\OUT_6.TXT", "w");
        for(i=0; i<col; i++)
        {
        for(j=0; j<str; j++)
        {
            fprintf(f,"%d", t[i][j]);
            fprintf(f," ");
        }
        fprintf(f,"\n");
        }
{
    fprintf(f, "\n");
int max=0;
for(j=0;j<=col;j++)
{max=t[j][0];
for (i=0;i<=str;i++)
{
if (t[i][j]>max)
max=t[i][j];}
printf("max=%i\n",max);
fprintf(f, "%d ", max);
for(int i=0;i<max;i++)
{
    fprintf(f,"%s","*");
}
fprintf(f, "%s", "\n");
 
 
}
}
}
Миниатюры
Диаграмма макс элементов столбцов на С  
0
1 / 1 / 0
Регистрация: 01.07.2010
Сообщений: 34
07.07.2010, 19:39  [ТС] 12
Тааак... что то я не понимаю....
Код чисто Ваш...
Изображения
 
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
07.07.2010, 19:43 13
SilverSand, Да. При таком условии работает так. Почему не знаю. Все же я делал только вывод в файл сишный.

Между прочим код то не при всех случаях ловит максимумы. А иногда пишет больше или меньше чем нужно
0
1 / 1 / 0
Регистрация: 01.07.2010
Сообщений: 34
07.07.2010, 19:49  [ТС] 14
А не могли бы Вы сделать как надо?
У меня видимо, не получилось где то до вывода, накосячил...
Последняя надежда на Вас!

Задание изначально звучало так:
Дана матрица А размером m на n (m не равно n, m<=5, n<=10). Транспонировать данную матрицу. Для полученной матрицы построить диаграмму максимальных элементов столбцов.
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
07.07.2010, 20:09 15
Криво. Но вроде пашет.

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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
void main(void)
{
system("cls");
FILE *f;
f=fopen("D:\\IN_6.TXT", "r");
int a[10] [10], t[10][10];
int str,col,i,j,max[10];
fscanf(f, "%d", &str);
fscanf(f, "%d", &col);
{
for(i=0; i<str; i++)
        {
        for(j=0; j<col; j++)
        {
                a[i][j]=rand() % 10;
                printf ("%d", a[i][j]);
                printf (" ");
        }
        printf("\n");
        }
printf("\n");
fclose (f);
}
        for (i=0; i<str; i++)
        for (j=0; j<col; j++)
        t[j][i]=a[i][j];
    for (i=0; i<col; i++)
    {
            for (j=0; j<str; j++)
            {
            printf("%d", t[i][j]);
            printf(" ");
            }
        printf("\n");
    }
    f=fopen("D:\\OUT_6.TXT", "w");
        for(i=0; i<col; i++)
        {
        for(j=0; j<str; j++)
        {
            fprintf(f,"%d", t[i][j]);
            fprintf(f," ");
        }
        fprintf(f,"\n");
        }
{
    fprintf(f, "\n");
    int max=0;
for(i=0;i<str;++i)
{max=t[0][0];
for (j=0;j<col;++j)
{
if (t[j][i]>max)
max=t[j][i];}
printf("max=%i\n",max);
fprintf(f, "%d ", max);
for(int i=0;i<max;i++)
{
    fprintf(f,"%s","*");
}
fprintf(f, "%s", "\n");
max=0;
 
}
}
}
Миниатюры
Диаграмма макс элементов столбцов на С   Диаграмма макс элементов столбцов на С  
1
1 / 1 / 0
Регистрация: 01.07.2010
Сообщений: 34
07.07.2010, 20:26  [ТС] 16
Отлично, работает!
Спасибо!
0
07.07.2010, 20:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.07.2010, 20:26
Помогаю со студенческими работами здесь

Подпрограммы: вычесть из элементов нечетных столбцов значения элементов четных столбцов матрицы
Найти количество 0 в матрице. Вычитание из элементов нечетных столбцов значений элементов четных...

Вычислить в массиве сумму отрицательных элементов и произведение элементов между макс. и мин. элементами
Здравствуйте, есть массив, который рандомно заполняется положительными и отрицательными числами....

Вычислить сумму всех элементов четных столбцов и произведение всех элементов нечетных столбцов матрицы
Вычислить сумму всех элементов четных столбцов и произведение всех элементов нечатных столбцов в...

Найти макс. элемента и макс. сумм строк двумерного массива
Здравствуйте. Возникли затруднения при решении следующей задачи. По отдельности работает, а вот...


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

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