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

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

Восстановить пароль Регистрация
 
SilverSand
1 / 1 / 0
Регистрация: 01.07.2010
Сообщений: 34
07.07.2010, 15:12     Диаграмма макс элементов столбцов на С #1
Напишите пожалуйста на Си:
Для данной матрицы m на n (m не равно n) построить диаграмму максимальных элементов столбцов.
пример диаграммы:
5 *****
2 **
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.07.2010, 15:12     Диаграмма макс элементов столбцов на С
Посмотрите здесь:

Кол-во элементов в столбце с макс. элементом C++
C++ Путем перестановки элементов квадратной матрицы добиться того,чтобы ее макс элемент находился в левом верхнем углу
Найти номер первого макс значения среди отрицательных элементов C++
C++ матрицы: повернуть на 90 градусов;макс.значение элементов...
что у меня не правильно? (поменять знак элементов столбца, вывести сумму отрицательных элементов в столбце, действия для столбцов) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
07.07.2010, 15:48     Диаграмма макс элементов столбцов на С #2
SilverSand, в каждой строке надо найти максимальный элемент, после того как нашел запускаеш например цикл от 0 до макс_элемента и рисуеш звездочки.
SilverSand
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 минут
Вставьте, пожалуйста, недостающий кусок, чтобы программа выводила еще и диаграмму в файл.
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
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;
    }
SilverSand
1 / 1 / 0
Регистрация: 01.07.2010
Сообщений: 34
07.07.2010, 17:41  [ТС]     Диаграмма макс элементов столбцов на С #5
Может кто нибудь может сделать это на Си?
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
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);
SilverSand
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 стр, но, сдается мне, косяк где то до этого...)
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
07.07.2010, 19:19     Диаграмма макс элементов столбцов на С #8
Гм. Все работает. Дабы не быть голословным.

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

for(j=0;j<=col;j++)
{max=t[j][0];
for (i=0;i<=str;i++)
{
Миниатюры
Диаграмма макс элементов столбцов на С   Диаграмма макс элементов столбцов на С  
SilverSand
1 / 1 / 0
Регистрация: 01.07.2010
Сообщений: 34
07.07.2010, 19:22  [ТС]     Диаграмма макс элементов столбцов на С #9
исходный код в студию, пожалуйста)
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
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);
 
}
}
}
Миниатюры
Диаграмма макс элементов столбцов на С  
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
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");
 
 
}
}
}
Миниатюры
Диаграмма макс элементов столбцов на С  
SilverSand
1 / 1 / 0
Регистрация: 01.07.2010
Сообщений: 34
07.07.2010, 19:39  [ТС]     Диаграмма макс элементов столбцов на С #12
Тааак... что то я не понимаю....
Код чисто Ваш...
Изображения
 
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
07.07.2010, 19:43     Диаграмма макс элементов столбцов на С #13
SilverSand, Да. При таком условии работает так. Почему не знаю. Все же я делал только вывод в файл сишный.

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

Задание изначально звучало так:
Дана матрица А размером m на n (m не равно n, m<=5, n<=10). Транспонировать данную матрицу. Для полученной матрицы построить диаграмму максимальных элементов столбцов.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
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;
 
}
}
}
Миниатюры
Диаграмма макс элементов столбцов на С   Диаграмма макс элементов столбцов на С  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.07.2010, 20:26     Диаграмма макс элементов столбцов на С
Еще ссылки по теме:

Произведение отрицательных элементов между макс. и мин. границей. Выкидывает с программы иногда, что не так? C++
Определить является ли сумма элементов строк равной сумме элементов столбцов C++

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

Или воспользуйтесь поиском по форуму:
SilverSand
1 / 1 / 0
Регистрация: 01.07.2010
Сообщений: 34
07.07.2010, 20:26  [ТС]     Диаграмма макс элементов столбцов на С #16
Отлично, работает!
Спасибо!
Yandex
Объявления
07.07.2010, 20:26     Диаграмма макс элементов столбцов на С
Ответ Создать тему
Опции темы

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