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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.75
robert19
25 / 25 / 3
Регистрация: 26.03.2010
Сообщений: 305
#1

количество чисел, совпадающих с номером столбца, в которых они находятся - C++

01.04.2010, 18:54. Просмотров 1995. Ответов 41
Метки нет (Все метки)

Задача такая:

Дана целочисленная прямоугольная матрица. Определить:
1) сумму элементов тех строк, которые содержат хотя бы один нулевой элемента;
2) количество чисел, совпадающих с номером столбца, в которых они находятся.

Вот мой вариант кода:
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
#include <stdio.h> 
#include <time.h>
#include<stdlib.h>
int input (int n, int m){
     printf("Enter n: ");  
     scanf("%i",&n);     
     printf("Enter m: ");  
     scanf("%i",&m);
}
 
int Rand_mas (int** matr,int n, int m){
  int** matr = new int *[n];   
  for(int i=0; i<n; i++)
   matr[i] = new int [m];  
   srand (time (0));
  for(int i=0; i<n; i++){ 
   for(int j=0; j<m; j++){ 
   matr[i][j]=0 + (rand() % 5);
    printf("%3i ",matr[i][j]);
  } 
   printf("\n");
 }
 printf ("\n");
  
 int schet_str (int** matr,int sum){
     sum=0;
 for (int i=0; i<n; i++){
     k=0; sum_i=0;
     for (int j=0; j<m; j++){
         sum_i+= matr[i][j];
         if (matr[i][j]==0) k=1;
     }
     if (k==1) sum+=sum_i;
 }
printf ("sum =  %5i ", &sum);
printf ("\n");
 }
 
 int schet_stb (int** matr,int sum_ch,int b){
     for (int i=0; i<n; i++){
    b=0;sum_ch=0;
    for(int j=0; j<m; j++){
        if (matr[i][j]==j) b=1;
    }
}   if (b==1) sum_ch++;
printf ("sum_ch = %i", &sum_ch);
 }
 int del_matr (int** matr){
      for (int i=0; i<n; i++){
      delete [] matr[i];
  }
  delete [] matr;
 }
 
int main(){ 
  int n,m,sum,k,sum_i,sum_ch,b;
 
  int** matr = new int *[n];
  
  input (int n, int m)
  Rand_mas (int** matr,int n, int,m)
  schet_str (int** matr,int sum)
  schet_stb (int matr[i][j],int sum_ch,int b)
  del_matr (int matr[i][j])
 
  return 0;
}
Но выдает 6 ошибок. Найти не могу. Помогите)))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.04.2010, 18:54     количество чисел, совпадающих с номером столбца, в которых они находятся
Посмотрите здесь:
Заменить отрицательные элементы суммой номера столбца и номера строки, в которых они находятся C++
C++ Определить максимальный и минимальный элементы матрицы и поменять столбцы, в которых они находятся
C++ Дана последовательность 100 целых чисел. Подсчитать сумму тех чисел, значения которых совпадают с их порядковым номером.
Найти номер строки и номер столбца матрицы, в которых находятся максимальный элемент C++
Определить номер строки и номер столбца матрицы, на пересечении которых находятся требуемые элементы C++
C++ Массив 5х5. Вывод на печать номер строки и столбца и адреса , где они хранятся, для элементов, значения которых равны X...
C++ Найти элементы массива, в которых значение совпадает с порядковым номером и подсчитать их количество
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Shevva
17 / 17 / 0
Регистрация: 13.09.2009
Сообщений: 140
01.04.2010, 18:57     количество чисел, совпадающих с номером столбца, в которых они находятся #2
одна из ошибок-ты пропустил
C++
1
}
в самом конце
kravam
быдлокодер
1693 / 880 / 44
Регистрация: 04.06.2008
Сообщений: 5,438
01.04.2010, 18:58     количество чисел, совпадающих с номером столбца, в которых они находятся #3
Во-первых напиши комменты
ВО-вторых, дай данные при которых тестирование неудачно. Иначе работать не буду.
Nike775
3 / 2 / 1
Регистрация: 01.04.2010
Сообщений: 30
01.04.2010, 19:00     количество чисел, совпадающих с номером столбца, в которых они находятся #4
ты на какой системе работаешЬ????
robert19
25 / 25 / 3
Регистрация: 26.03.2010
Сообщений: 305
01.04.2010, 19:01  [ТС]     количество чисел, совпадающих с номером столбца, в которых они находятся #5
Цитата Сообщение от Shevva Посмотреть сообщение
одна из ошибок-ты пропустил
C++
1
}
в самом конце
Вроде все проверил ща по новой. Все на месте, незнаю блин...(((

На Windows 7
kravam
быдлокодер
1693 / 880 / 44
Регистрация: 04.06.2008
Сообщений: 5,438
01.04.2010, 19:03     количество чисел, совпадающих с номером столбца, в которых они находятся #6
Мне повторить?
Я тебе сказал, что делать.
robert19
25 / 25 / 3
Регистрация: 26.03.2010
Сообщений: 305
01.04.2010, 19:07  [ТС]     количество чисел, совпадающих с номером столбца, в которых они находятся #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
62
63
64
65
66
67
68
69
#include <stdio.h> 
#include <time.h>
#include<stdlib.h>
//====Ввожу размерность матрицы (обычно пишу 5 на 6)====
int input (int n, int m){
     printf("Enter n: ");  
     scanf("%i",&n);     
     printf("Enter m: ");  
     scanf("%i",&m);
}
//===Заполняю случайными числами от 0 до 5===
int Rand_mas (int** matr,int n, int m){
  int** matr = new int *[n];   
  for(int i=0; i<n; i++)
   matr[i] = new int [m];  
   srand (time (0));
  for(int i=0; i<n; i++){ 
   for(int j=0; j<m; j++){ 
   matr[i][j]=0 + (rand() % 5);
    printf("%3i ",matr[i][j]);
  } 
   printf("\n");
 }
 printf ("\n");
 //===считаю сколько нулей в строке, и в которой строке они есть, я эту строку сумирую=== 
 int schet_str (int** matr,int sum){
     sum=0;
 for (int i=0; i<n; i++){
     k=0; sum_i=0;
     for (int j=0; j<m; j++){
         sum_i+= matr[i][j];
         if (matr[i][j]==0) k=1;
     }
     if (k==1) sum+=sum_i;
 }
printf ("sum =  %5i ", &sum);
printf ("\n");
 }
//===Тут считаю сколько чисел совподают с номером столбца и считаю===
 int schet_stb (int** matr,int sum_ch,int b){
     for (int i=0; i<n; i++){
    b=0;sum_ch=0;
    for(int j=0; j<m; j++){
        if (matr[i][j]==j) b=1;
    }
}   if (b==1) sum_ch++;
printf ("sum_ch = %i", &sum_ch);
 }
//===Очищаю мусор===
 int del_matr (int** matr){
      for (int i=0; i<n; i++){
      delete [] matr[i];
  }
  delete [] matr;
 }
//===Сама функция main===
int main(){ 
  int n,m,sum,k,sum_i,sum_ch,b;
 
  int** matr = new int *[n];
  
  input (int n, int m)
  Rand_mas (int** matr,int n, int,m)
  schet_str (int** matr,int sum)
  schet_stb (int matr[i][j],int sum_ch,int b)
  del_matr (int matr[i][j])
 
  return 0;
}
Так пойдет???
kravam
быдлокодер
1693 / 880 / 44
Регистрация: 04.06.2008
Сообщений: 5,438
01.04.2010, 19:17     количество чисел, совпадающих с номером столбца, в которых они находятся #8
Другой коленкор.
Пока я ковыряюсь, подробнее об ошибках давай.
robert19
25 / 25 / 3
Регистрация: 26.03.2010
Сообщений: 305
01.04.2010, 19:20  [ТС]     количество чисел, совпадающих с номером столбца, в которых они находятся #9
1>------ Build started: Project: Test, Configuration: Debug Win32 ------
1>Compiling...
1>Test.cpp
1>c:\users\******\documents\visual studio 2008\projects\test\test\test.cpp(6) : warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files (x86)\microsoft visual studio 9.0\vc\include\stdio.h(306) : see declaration of 'scanf'
1>c:\users\******\documents\visual studio 2008\projects\test\test\test.cpp(8) : warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files (x86)\microsoft visual studio 9.0\vc\include\stdio.h(306) : see declaration of 'scanf'
1>c:\users\******\documents\visual studio 2008\projects\test\test\test.cpp(12) : error C2082: redefinition of formal parameter 'matr'
1>c:\users\******\documents\visual studio 2008\projects\test\test\test.cpp(15) : warning C4244: 'argument' : conversion from 'time_t' to 'unsigned int', possible loss of data
1>c:\users\******\documents\visual studio 2008\projects\test\test\test.cpp(26) : error C2601: 'schet_str' : local function definitions are illegal
1> c:\users\******\documents\visual studio 2008\projects\test\test\test.cpp(11): this line contains a '{' which has not yet been matched
1>c:\users\******\documents\visual studio 2008\projects\test\test\test.cpp(40) : error C2601: 'schet_stb' : local function definitions are illegal
1> c:\users\******\documents\visual studio 2008\projects\test\test\test.cpp(11): this line contains a '{' which has not yet been matched
1>c:\users\******\documents\visual studio 2008\projects\test\test\test.cpp(49) : error C2601: 'del_matr' : local function definitions are illegal
1> c:\users\******\documents\visual studio 2008\projects\test\test\test.cpp(11): this line contains a '{' which has not yet been matched
1>c:\users\******\documents\visual studio 2008\projects\test\test\test.cpp(56) : error C2601: 'main' : local function definitions are illegal
1> c:\users\******\documents\visual studio 2008\projects\test\test\test.cpp(11): this line contains a '{' which has not yet been matched
1>c:\users\******\documents\visual studio 2008\projects\test\test\test.cpp(69) : fatal error C1075: end of file found before the left brace '{' at 'c:\users\******\documents\visual studio 2008\projects\test\test\test.cpp(11)' was matched
1>Build log was saved at "file://c:\Users\******\Documents\Visual Studio 2008\Projects\Test\Test\Debug\BuildLog.htm"
1>Test - 6 error(s), 3 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Вот такие вот ошибки. Так как я другой язык учил, так вот и не понимаю
kravam
быдлокодер
1693 / 880 / 44
Регистрация: 04.06.2008
Сообщений: 5,438
01.04.2010, 19:28     количество чисел, совпадающих с номером столбца, в которых они находятся #10
Значит так, во-первых по скобкам.

C++
1
int Rand_mas (int** matr,int n, int m){
Это начало функциии Rand_mas. Где конец- я ума не приложу. Парная скобка для '{' отсутствует. Я могу поставить её где-нибудь, чтобы компилятор схавал, но, как ты понимаешь это не наш метод.

Итак, поставь закрывающую скобку '}' где она должна стоять.
robert19
25 / 25 / 3
Регистрация: 26.03.2010
Сообщений: 305
01.04.2010, 19:33  [ТС]     количество чисел, совпадающих с номером столбца, в которых они находятся #11
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int Rand_mas (int** matr,int n, int m){
  int** matr = new int *[n];   
  for(int i=0; i<n; i++){
   matr[i] = new int [m];  
   srand (time (0));
  for(int i=0; i<n; i++){ 
   for(int j=0; j<m; j++){ 
   matr[i][j]=0 + (rand() % 5);
    printf("%3i ",matr[i][j]);
   } 
   printf("\n");
  }
 }
} printf ("\n");
Тогда поидее должно быть так. Но если так ставлю скобку, то у меня выдает 15 ошибо)))
kravam
быдлокодер
1693 / 880 / 44
Регистрация: 04.06.2008
Сообщений: 5,438
01.04.2010, 19:43     количество чисел, совпадающих с номером столбца, в которых они находятся #12
Ошибки в печку, слушай меня. Ставь скобку там, где считаешь что заканчивается функция. Подумай ещё раз. Должно быть так?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int Rand_mas (int** matr,int n, int m){
  int** matr = new int *[n];   
  for(int i=0; i<n; i++){
   matr[i] = new int [m];  
   srand (time (0));
  for(int i=0; i<n; i++){ 
   for(int j=0; j<m; j++){ 
   matr[i][j]=0 + (rand() % 5);
    printf("%3i ",matr[i][j]);
   } 
   printf("\n");
  }
 }
}
robert19
25 / 25 / 3
Регистрация: 26.03.2010
Сообщений: 305
01.04.2010, 19:46  [ТС]     количество чисел, совпадающих с номером столбца, в которых они находятся #13
Вот некоторые исправил. Терь 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
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
#include <stdio.h> 
#include <time.h>
#include<stdlib.h>
int input (int n, int m){
     printf("Enter n: ");  
     scanf("%i",&n);     
     printf("Enter m: ");  
     scanf("%i",&m);
}
 
int Rand_mas (int** matr,int n, int m){
  int** matr = new int *[n];   
  for(int i=0; i<n; i++){
   matr[i] = new int [m]; 
  }
   srand (time (0));
  for(int i=0; i<n; i++){ 
   for(int j=0; j<m; j++){ 
   matr[i][j]=0 + (rand() % 5);
    printf("%3i ",matr[i][j]);
   } printf("\n");
  } printf ("\n");
}
 
 
 int schet_str (int** matr,int sum, int k, int sum_i, int n, int m){
     sum=0;
 for (int i=0; i<n; i++){
     k=0; sum_i=0;
     for (int j=0; j<m; j++){
         sum_i+= matr[i][j];
         if (matr[i][j]==0) k=1;
     }
     if (k==1) sum+=sum_i;
 }
printf ("sum =  %5i ", &sum);
printf ("\n");
 }
 
 int schet_stb (int** matr,int sum_ch,int b,int m, int n){
     for (int i=0; i<n; i++){
    b=0;sum_ch=0;
    for(int j=0; j<m; j++){
        if (matr[i][j]==j) b=1;
    }
}   if (b==1) sum_ch++;
printf ("sum_ch = %i", &sum_ch);
 }
 int del_matr (int** matr, int n){
      for (int i=0; i<n; i++){
      delete [] matr[i];
  }
  delete [] matr;
 }
 
int main(){ 
  int n,m,sum,k,sum_i,sum_ch,b;
 
  int** matr = new int *[n];
  
  input (int n, int m)
  Rand_mas (int** matr,int n, int,m)
  schet_str (int** matr,int sum)
  schet_stb (int** matr,int sum_ch,int b)
  del_matr (int** matr)
 
  return 0;
}
Добавлено через 2 минуты
Цитата Сообщение от kravam Посмотреть сообщение
Ошибки в печку, слушай меня. Ставь скобку там, где считаешь что заканчивается функция. Подумай ещё раз. Должно быть так?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int Rand_mas (int** matr,int n, int m){
  int** matr = new int *[n];   
  for(int i=0; i<n; i++){
   matr[i] = new int [m];  
   srand (time (0));
  for(int i=0; i<n; i++){ 
   for(int j=0; j<m; j++){ 
   matr[i][j]=0 + (rand() % 5);
    printf("%3i ",matr[i][j]);
   } 
   printf("\n");
  }
 }
}
Я исправил в некоторых местах. Теперь ошибки вот такие:

1>c:\users\******\documents\visual studio 2008\projects\test\test\test.cpp(6) : warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files (x86)\microsoft visual studio 9.0\vc\include\stdio.h(306) : see declaration of 'scanf'
1>c:\users\******\documents\visual studio 2008\projects\test\test\test.cpp(8) : warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files (x86)\microsoft visual studio 9.0\vc\include\stdio.h(306) : see declaration of 'scanf'
1>c:\users\******\documents\visual studio 2008\projects\test\test\test.cpp(12) : error C2082: redefinition of formal parameter 'matr'
1>c:\users\******\documents\visual studio 2008\projects\test\test\test.cpp(16) : warning C4244: 'argument' : conversion from 'time_t' to 'unsigned int', possible loss of data
1>c:\users\******\documents\visual studio 2008\projects\test\test\test.cpp(61) : error C2144: syntax error : 'int' should be preceded by ')'
1>c:\users\******\documents\visual studio 2008\projects\test\test\test.cpp(61) : error C2660: 'input' : function does not take 0 arguments
1>c:\users\******\documents\visual studio 2008\projects\test\test\test.cpp(61) : error C2059: syntax error : ')'
1>Build log was saved at "file://c:\Users\******\Documents\Visual Studio 2008\Projects\Test\Test\Debug\BuildLog.htm"
1>Test - 4 error(s), 3 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
kravam
быдлокодер
1693 / 880 / 44
Регистрация: 04.06.2008
Сообщений: 5,438
01.04.2010, 19:56     количество чисел, совпадающих с номером столбца, в которых они находятся #14
В функции Rand_mas надо писать так:
C++
1
matr = new int *[n];
Поскольку тип переменной matr уже присутствует в списке параметпров функции Rand_mas
И в функции main закомментируй это всё или убери
C++
1
2
3
4
5
  //input (int n, int m);
  //Rand_mas (int** matr,int n, int,m)
  //schet_str (int** matr,int sum)
  //schet_stb (int** matr,int sum_ch,int b)
  //del_matr (int** matr)
В теле функции, как я понимаю подобные прототипы считаются за вызовы, а они таковыми не являются.

ПРототипы если хочешь писать, пиши после инклудов. И не забывай указывать, переменную какого типа возвращает каждая функция. Вот так:
C++
1
2
3
4
5
6
7
8
#include <stdio.h> 
#include <time.h>
#include <stdlib.h>
  int input (int n, int m);
  int Rand_mas (int** matr,int n, int,m);
  int schet_str (int** matr,int sum);
  int schet_stb (int** matr,int sum_ch,int b);
  int del_matr (int** matr);
НЕ забывыай также и о точках с запятой. Ты какой язык учил раньше?
robert19
25 / 25 / 3
Регистрация: 26.03.2010
Сообщений: 305
01.04.2010, 20:03  [ТС]     количество чисел, совпадающих с номером столбца, в которых они находятся #15
Никакой. Щас в универ поступил, дак вот приходится по специальности учить

Блин но все же выдал касяк какой то
1>c:\users\******\documents\visual studio 2008\projects\test\test\test.cpp(15) : warning C4244: 'argument' : conversion from 'time_t' to 'unsigned int', possible loss of data
1>c:\users\******\documents\visual studio 2008\projects\test\test\test.cpp(61) : error C2061: syntax error : identifier 'm'
1>Build log was saved at "file://c:\Users\******\Documents\Visual Studio 2008\Projects\Test\Test\Debug\BuildLog.htm"
1>Test - 1 error(s), 3 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
kravam
быдлокодер
1693 / 880 / 44
Регистрация: 04.06.2008
Сообщений: 5,438
01.04.2010, 20:06     количество чисел, совпадающих с номером столбца, в которых они находятся #16
Ясно, что по теме?
robert19
25 / 25 / 3
Регистрация: 26.03.2010
Сообщений: 305
01.04.2010, 20:10  [ТС]     количество чисел, совпадающих с номером столбца, в которых они находятся #17
Цитата Сообщение от kravam Посмотреть сообщение
Ясно, что по теме?
Непонял? Мож лучше в асю??? [493466015]
kravam
быдлокодер
1693 / 880 / 44
Регистрация: 04.06.2008
Сообщений: 5,438
01.04.2010, 20:15     количество чисел, совпадающих с номером столбца, в которых они находятся #18
Дай последний код, с косяком который.
robert19
25 / 25 / 3
Регистрация: 26.03.2010
Сообщений: 305
01.04.2010, 20:20  [ТС]     количество чисел, совпадающих с номером столбца, в которых они находятся #19
Да я нашел. Все исправил. Но вот подсчитывает он не правельно
Миниатюры
количество чисел, совпадающих с номером столбца, в которых они находятся  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.04.2010, 20:22     количество чисел, совпадающих с номером столбца, в которых они находятся
Еще ссылки по теме:
Определить количество элементов матрицы у которых слева в его строке находятся элементы меньше его,а справа больше C++
Задана матрица целых чисел A(n,n). Все элементы столбца, с наибольшим номером, среди тех, где находится более двух простых элементов, заменить разно C++
C++ Как ввести числа из txt, в котором они находятся на каждой строчке?
C++ Вопрпос про const: в какой области памяти они находятся, и где это объявлять ?
Создать матрицу 7х7, найти максимальный и минимальный элементы, и поменять строки где они находятся C++

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

Или воспользуйтесь поиском по форуму:
kravam
быдлокодер
1693 / 880 / 44
Регистрация: 04.06.2008
Сообщений: 5,438
01.04.2010, 20:22     количество чисел, совпадающих с номером столбца, в которых они находятся #20
Щас началось самое трудное. Давай код, а я отлучусь ненадолго.
Yandex
Объявления
01.04.2010, 20:22     количество чисел, совпадающих с номером столбца, в которых они находятся
Ответ Создать тему
Опции темы

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