• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

Перевел с С++ на Си

  • Автор темы sashasluva
  • Дата начала
S

sashasluva

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

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

записать в файл F2.
как решить проблемы?

|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|

#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[j]);
printf("%d ", pole[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)
{
int a = masb;
masb = masb[j];
masb[j] = a;
}
}
}
for(int y=0; y<10; y++)
{
printf("%d ", masb[y]);
}
printf("\n\n");
system("pause");
return 0;
}
 
O

Olej

Вовсе не обязательно.
Оно ведь всё подсказывает:
'for' loop initial declarations are only allowed in C99 mode
Нужна всего лишь совместимость со стандартом C99.
На GCC это будет выглядеть как-то так:
Код:
$ gcc -Wall -std=c99 file.c -o file
[doublepost=1483107492,1483105473][/doublepost]А если это в выньде ... в VisualStudio, ... судя по вот этой строке:
То ... изучать C в выньде - это просто откровенное уродство.
[doublepost=1483113087][/doublepost]
Перевел с С++ на Си

Никогда!
Никогда... ;)
... не переводите тупо с одного языка на другой - у них разные философии.
Вот ваша задача:
Код:
#include <stdio.h>
#include <string.h>

#define ROWS 10
#define COLS 20

int main() {
   int A[ ROWS ][ COLS ], B[ ROWS ] = {};
   FILE *f = fopen( "F1.txt", "r" );
   for( int r = 0; r < ROWS; r ++ )
      for( int c = 0; c < COLS; c++ ) {
         fscanf( f,"%d", A[ r ] + c );
         B[ r ] += A[ r ][ c ];
      }
   fclose( f );
   for( int r = 0; r < ROWS; r++ )
      for( int k = r + 1; k < ROWS; k++ )
         if( B[ r ] > B[ k ] ) {
            int m = B[ r ];
            B[ r ] = B[ k ];
            B[ k ] = m;
         }
   char row[ 256 ] = "";
   for( int r = 0; r < ROWS; r++ )
      sprintf( row + strlen( row ), "%d ", B[ r ] );
   strcat( row, "\n" );
   f = fopen( "F2.txt", "w" );
   fputs( row, f );
   fclose( f );
}
И выполнение:
Код:
[olej@dell draft-temp]$ gcc -Wall -std=c99 matr1020.c -o matr1020

[olej@dell draft-temp]$ cat F1.txt
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23
03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22
02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20

[olej@dell draft-temp]$ ./matr1020

[olej@dell draft-temp]$ cat F2.txt
210 230 250 270 290 310 330 350 370 390

Но это - в первый и последний раз.
Потому что свои задачи нужно решать самостоятельно ... а в качестве помощи - рассчитывать только на подсказку, когда сам уже всё перепробовал.
 
  • Нравится
Реакции: sashasluva
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!