Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
SilverSand
1 / 1 / 0
Регистрация: 01.07.2010
Сообщений: 34
1

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

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

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

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

Сортировка столбцов матрицы по возрастанию последних элементов столбцов
Сортировка столбцов по росту последних элементов столбцов.Помогите пожалуйста,...

Сортировка столбцов массива по убыванию элементов столбцов
Заполнить двумерный числовой массив A целыми числами. Вычислить сумму элементов...

Найти номера тех столбцов матрицы, сумма элементов которых превышает заданную величину, и число таких столбцов
Для матрицы из 3 строк и 7 столбцов отпечатать номератех слобцов, сумма...

матрицы: повернуть на 90 градусов;макс.значение элементов...
Помогите пожалуйста хотя бы часть кода написать на С. 1) повернуть массив по...

15
PointsEqual
ниначмуроФ
840 / 524 / 110
Регистрация: 12.10.2009
Сообщений: 1,915
07.07.2010, 15:48 2
SilverSand, в каждой строке надо найти максимальный элемент, после того как нашел запускаеш например цикл от 0 до макс_элемента и рисуеш звездочки.
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 минут
Вставьте, пожалуйста, недостающий кусок, чтобы программа выводила еще и диаграмму в файл.
0
PointsEqual
ниначмуроФ
840 / 524 / 110
Регистрация: 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;
    }
1
SilverSand
1 / 1 / 0
Регистрация: 01.07.2010
Сообщений: 34
07.07.2010, 17:41  [ТС] 5
Может кто нибудь может сделать это на Си?
0
ForEveR
В астрале
Эксперт С++
7996 / 4755 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 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);
1
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 стр, но, сдается мне, косяк где то до этого...)
0
ForEveR
В астрале
Эксперт С++
7996 / 4755 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
07.07.2010, 19:19 8
Гм. Все работает. Дабы не быть голословным.

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

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

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

Задание изначально звучало так:
Дана матрица А размером m на n (m не равно n, m<=5, n<=10). Транспонировать данную матрицу. Для полученной матрицы построить диаграмму максимальных элементов столбцов.
0
ForEveR
В астрале
Эксперт С++
7996 / 4755 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 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;
 
}
}
}
1
Миниатюры
Диаграмма макс элементов столбцов на С   Диаграмма макс элементов столбцов на С  
SilverSand
1 / 1 / 0
Регистрация: 01.07.2010
Сообщений: 34
07.07.2010, 20:26  [ТС] 16
Отлично, работает!
Спасибо!
0
07.07.2010, 20:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.07.2010, 20:26

Найти номер первого макс значения среди отрицательных элементов
1.Двумерные массивы. Проверить, все ли столбцы матрицы упорядочены по убыванию....

Не правильно выводит произведение элементов массива кратных 3-ем, между мин. и макс
Привет ребят,посмотрите почему у меня не правильно выводит произведение...

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


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

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

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