Написать код. Массивы

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

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

записать в файл F2.
Kommentare (8)
ava
likehood | 30.12.2016, 13:00 #
Были ли попытки написать код, что в итоге получилось? На каком из этапов возникли проблемы?
ava
marysluva | 30.12.2016, 14:30 #
Цитата (likehood @ 30.12.2016,  13:00)
Были ли попытки написать код, что в итоге получилось? На каком из этапов возникли проблемы?

есть код с++, нужен на Си
ava
likehood | 30.12.2016, 14:38 #
Цитата (marysluva @  30.12.2016,  14:30 findReferencedText)
есть код с++

Можно его увидеть?
ava
marysluva | 30.12.2016, 15:03 #
Цитата (likehood @ 30.12.2016,  14:38)
Цитата (marysluva @  30.12.2016,  14:30 findReferencedText)
есть код с++


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



#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;
}
ava
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;
}
ava
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|

ava
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;
}
ava
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;

}


Спасибо :blum3 
Registrieren Sie sich oder melden Sie sich an, um schreiben zu können.
Unternehmen des Tages
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Mitwirkende
advanced
Absenden