Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Написать код. Массивы


Автор: marysluva 29.12.2016, 12:58
Из файла F1 прочитать матрицу A (10,20). Вычислить сумму элементов каждой строки,

записать в массив В (10) отсортировать элементы этого массива по росту. результат

записать в файл F2.

Автор: likehood 30.12.2016, 13:00
Были ли попытки написать код, что в итоге получилось? На каком из этапов возникли проблемы?

Автор: marysluva 30.12.2016, 14:30
Цитата(likehood @ 30.12.2016,  13:00)
Были ли попытки написать код, что в итоге получилось? На каком из этапов возникли проблемы?

есть код с++, нужен на Си

Автор: likehood 30.12.2016, 14:38
Цитата(marysluva @  30.12.2016,  14:30 Найти цитируемый пост)
есть код с++

Можно его увидеть?

Автор: marysluva 30.12.2016, 15:03
Цитата(likehood @ 30.12.2016,  14:38)
Цитата(marysluva @  30.12.2016,  14:30 Найти цитируемый пост)
есть код с++

Можно его увидеть?

Код


#include <stdio.h>
#include <fstream>
int main()
{
    setlocale(LC_CTYPE, "ukr");
    int pole[10][20];
    ifstream fin("F1.txt");
    for(int i=0;i<10;i++)
    {
        for(int j=0;j<20;j++)
        {
            fin >> pole[i][j];
            cout<<pole[i][j]<<" ";
        }
        cout<<endl<<endl<<endl;
    }
    cout<<"Обчислюємо суму елементів кожного рядка, записуємо в масив B(10)";
    cout<<endl<<endl;
    int mabs[10];
    int sum = 0
    for(int m=0;m<10; m++)
    {
        for(int n=0; n<10; n++)
        {
        sum=+ pole[m][n];
    }
    masb[m] = sum;
    cout<<masb[m]<<" ";
    sum=0
}
cout<<endl<<endl;
cout<<"Сортуэмо елементи цього масиву в порядку зростання"<<endl<<endl;
for(int i = 0; i < 10; i ++)
{
    for(int j = 0; j < 10; j++)
    {
        if(masb[j] > masb[i])
        {
            int a = masb[i];
            masb[i] = masb[j];
            masb[j] = a;
        }
    }
}
for(int y=0; y<10; y++)
{
    cout<<masb[y]<<" ";
}
    cout<<endl<<endl;
    system("pause");
    return 0;
}

Автор: likehood 30.12.2016, 15:26
Перевёл с С++ на Си, заодно исправил мелкие ошибки.
Код

#include <stdio.h>
#include <locale.h>
#include <stdlib.h>

int main()
{
    setlocale(LC_CTYPE, "ukr");
    int pole[10][20];
    FILE *fin = fopen("F1.txt", "rt");
    for(int i=0; i<10; i++)
    {
        for(int j=0; j<20; j++)
        {
            fscanf(fin, "%d", &pole[i][j]);
            printf("%d ", pole[i][j]);
        }
        printf("\n\n\n");
    }
    printf("Обчислюємо суму елементів кожного рядка, записуємо в масив B(10)");
    printf("\n\n");
    int masb[10];
    int sum = 0;
    for(int m=0; m<10; m++)
    {
        for(int n=0; n<10; n++)
        {
            sum=+ pole[m][n];
        }
        masb[m] = sum;
        printf("%d ", masb[m]);
        sum=0;
    }
    printf("\n\n");
    printf("Сортуэмо елементи цього масиву в порядку зростання\n\n");
    for(int i = 0; i < 10; i ++)
    {
        for(int j = 0; j < 10; j++)
        {
            if(masb[j] > masb[i])
            {
                int a = masb[i];
                masb[i] = masb[j];
                masb[j] = a;
            }
        }
    }
    for(int y=0; y<10; y++)
    {
        printf("%d ", masb[y]);
    }
    printf("\n\n");
    system("pause");
    return 0;
}

Автор: marysluva 30.12.2016, 15:58
Цитата(likehood @ 30.12.2016,  15:26)
Перевёл с С++ на Си, заодно исправил мелкие ошибки.
Код

#include <stdio.h>
#include <locale.h>
#include <stdlib.h>

int main()
{
    setlocale(LC_CTYPE, "ukr");
    int pole[10][20];
    FILE *fin = fopen("F1.txt", "rt");
    for(int i=0; i<10; i++)
    {
        for(int j=0; j<20; j++)
        {
            fscanf(fin, "%d", &pole[i][j]);
            printf("%d ", pole[i][j]);
        }
        printf("\n\n\n");
    }
    printf("Обчислюємо суму елементів кожного рядка, записуємо в масив B(10)");
    printf("\n\n");
    int masb[10];
    int sum = 0;
    for(int m=0; m<10; m++)
    {
        for(int n=0; n<10; n++)
        {
            sum=+ pole[m][n];
        }
        masb[m] = sum;
        printf("%d ", masb[m]);
        sum=0;
    }
    printf("\n\n");
    printf("Сортуэмо елементи цього масиву в порядку зростання\n\n");
    for(int i = 0; i < 10; i ++)
    {
        for(int j = 0; j < 10; j++)
        {
            if(masb[j] > masb[i])
            {
                int a = masb[i];
                masb[i] = masb[j];
                masb[j] = a;
            }
        }
    }
    for(int y=0; y<10; y++)
    {
        printf("%d ", masb[y]);
    }
    printf("\n\n");
    system("pause");
    return 0;
}

как решить проблемы?

|9|error: 'for' loop initial declarations are only allowed in C99 mode|
|9|note: use option -std=c99 or -std=gnu99 to compile your code|
|11|error: 'for' loop initial declarations are only allowed in C99 mode|
|22|error: 'for' loop initial declarations are only allowed in C99 mode|
|24|error: 'for' loop initial declarations are only allowed in C99 mode|
|34|error: redefinition of 'i'|
|9|note: previous definition of 'i' was here|
|34|error: 'for' loop initial declarations are only allowed in C99 mode|
|36|error: 'for' loop initial declarations are only allowed in C99 mode|
|46|error: 'for' loop initial declarations are only allowed in C99 mode|


Автор: likehood 30.12.2016, 16:20
Вроде понятно написано: объявлять переменные в цикл for можно только в режиме C99. Объявляй их вне цикла:
Код

#include <stdio.h>
#include <locale.h>
#include <stdlib.h>
int main()
{
    setlocale(LC_CTYPE, "ukr");
    int pole[10][20];
    FILE *fin = fopen("F1.txt", "rt");
    int i, j, m, n, y;
    for(i=0; i<10; i++)
    {
        for(j=0; j<20; j++)
        {
            fscanf(fin, "%d", &pole[i][j]);
            printf("%d ", pole[i][j]);
        }
        printf("\n\n\n");
    }
    printf("Обчислюємо суму елементів кожного рядка, записуємо в масив B(10)");
    printf("\n\n");
    int masb[10];
    int sum = 0;
    for(m=0; m<10; m++)
    {
        for(n=0; n<10; n++)
        {
            sum=+ pole[m][n];
        }
        masb[m] = sum;
        printf("%d ", masb[m]);
        sum=0;
    }
    printf("\n\n");
    printf("Сортуэмо елементи цього масиву в порядку зростання\n\n");
    for(i = 0; i < 10; i ++)
    {
        for(j = 0; j < 10; j++)
        {
            if(masb[j] > masb[i])
            {
                int a = masb[i];
                masb[i] = masb[j];
                masb[j] = a;
            }
        }
    }
    for(y=0; y<10; y++)
    {
        printf("%d ", masb[y]);
    }
    printf("\n\n");
    system("pause");
    return 0;
}

Автор: marysluva 30.12.2016, 17:00
Цитата(likehood @ 30.12.2016,  16:20)
Вроде понятно написано: объявлять переменные в цикл for можно только в режиме C99. Объявляй их вне цикла:
Код

#include <stdio.h>
#include <locale.h>
#include <stdlib.h>
int main()
{
    setlocale(LC_CTYPE, "ukr");
    int pole[10][20];
    FILE *fin = fopen("F1.txt", "rt");
    int i, j, m, n, y;
    for(i=0; i<10; i++)
    {
        for(j=0; j<20; j++)
        {
            fscanf(fin, "%d", &pole[i][j]);
            printf("%d ", pole[i][j]);
        }
        printf("\n\n\n");
    }
    printf("Обчислюємо суму елементів кожного рядка, записуємо в масив B(10)");
    printf("\n\n");
    int masb[10];
    int sum = 0;
    for(m=0; m<10; m++)
    {
        for(n=0; n<10; n++)
        {
            sum=+ pole[m][n];
        }
        masb[m] = sum;
        printf("%d ", masb[m]);
        sum=0;
    }
    printf("\n\n");
    printf("Сортуэмо елементи цього масиву в порядку зростання\n\n");
    for(i = 0; i < 10; i ++)
    {
        for(j = 0; j < 10; j++)
        {
            if(masb[j] > masb[i])
            {
                int a = masb[i];
                masb[i] = masb[j];
                masb[j] = a;
            }
        }
    }
    for(y=0; y<10; y++)
    {
        printf("%d ", masb[y]);
    }
    printf("\n\n");
    system("pause");
    return 0;
}

Спасибо smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)