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

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

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

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

01.04.2010, 18:54. Просмотров 2058. Ответов 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 ошибок. Найти не могу. Помогите)))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.04.2010, 18:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос количество чисел, совпадающих с номером столбца, в которых они находятся (C++):

Заменить отрицательные элементы суммой номера столбца и номера строки, в которых они находятся - C++
Входные данные: целочисленный массив А размером m х n, где m = 2, n = 4. Заменить отрицательные элементы суммой номера столбца и номера...

Сумма элементов массива, у которых сумма индексов, на которых они находятся, - четное число. Проверить код - C++
нужно найти сумму элементов массива, у которых сумма индексов, на которых они находятся, четное число. вот что я написал, но код не...

Определить максимальный и минимальный элементы матрицы и поменять столбцы, в которых они находятся - C++
Задана матрица целых чисел. Определить максимальный и минимальный элементы этой матрицы и поменять столбцы, в которых они находятся.

Дана последовательность 100 целых чисел. Подсчитать сумму тех чисел, значения которых совпадают с их порядковым номером. - C++
Дана последовательность 100 целых чисел. Подсчитать сумму тех чисел, значения которых совпадают с их порядковым номером.

Найти номер строки и номер столбца матрицы, в которых находятся максимальный элемент - C++
задание 4 Задан двухмерный массив чисел. Элементы матрицы вводятся с клавиатуры. найти номер строки и номер столбца, в которых...

Определить номер строки и номер столбца матрицы, на пересечении которых находятся требуемые элементы - C++
В двумерном массиве определить номер строки и номер столбца, на пересечении которых находятся требуемые элементы массива: 1) Последний...

41
Shevva
17 / 17 / 0
Регистрация: 13.09.2009
Сообщений: 140
01.04.2010, 18:57 #2
одна из ошибок-ты пропустил
C++
1
}
в самом конце
0
kravam
быдлокодер
1697 / 884 / 45
Регистрация: 04.06.2008
Сообщений: 5,482
01.04.2010, 18:58 #3
Во-первых напиши комменты
ВО-вторых, дай данные при которых тестирование неудачно. Иначе работать не буду.
0
Nike775
3 / 2 / 1
Регистрация: 01.04.2010
Сообщений: 30
01.04.2010, 19:00 #4
ты на какой системе работаешЬ????
0
robert19
26 / 26 / 3
Регистрация: 26.03.2010
Сообщений: 305
01.04.2010, 19:01  [ТС] #5
Цитата Сообщение от Shevva Посмотреть сообщение
одна из ошибок-ты пропустил
C++
1
}
в самом конце
Вроде все проверил ща по новой. Все на месте, незнаю блин...(((

На Windows 7
0
kravam
быдлокодер
1697 / 884 / 45
Регистрация: 04.06.2008
Сообщений: 5,482
01.04.2010, 19:03 #6
Мне повторить?
Я тебе сказал, что делать.
0
robert19
26 / 26 / 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;
}
Так пойдет???
0
kravam
быдлокодер
1697 / 884 / 45
Регистрация: 04.06.2008
Сообщений: 5,482
01.04.2010, 19:17 #8
Другой коленкор.
Пока я ковыряюсь, подробнее об ошибках давай.
0
robert19
26 / 26 / 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 ==========

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

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

Итак, поставь закрывающую скобку '}' где она должна стоять.
0
robert19
26 / 26 / 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 ошибо)))
0
kravam
быдлокодер
1697 / 884 / 45
Регистрация: 04.06.2008
Сообщений: 5,482
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");
  }
 }
}
0
robert19
26 / 26 / 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 ==========
0
kravam
быдлокодер
1697 / 884 / 45
Регистрация: 04.06.2008
Сообщений: 5,482
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);
НЕ забывыай также и о точках с запятой. Ты какой язык учил раньше?
1
robert19
26 / 26 / 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 ==========
0
01.04.2010, 20:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.04.2010, 20:03
Привет! Вот еще темы с ответами:

Массив 5х5. Вывод на печать номер строки и столбца и адреса , где они хранятся, для элементов, значения которых равны X... - C++
Вывод на печать номер строки и столбца и адреса , где они хранятся, для элементов, значения которых равны X , среди элементов,...

Найти элементы массива, в которых значение совпадает с порядковым номером и подсчитать их количество - C++
#include &lt;iostream&gt; #include &lt;cmath&gt; #include &lt;iomanip&gt; using namespace std; int main(void) { int n,k=0; srand(time(NULL)); ...

Определить количество элементов матрицы у которых слева в его строке находятся элементы меньше его,а справа больше - C++
Задана матрица размером NxM. Определить количество элементов матрицы у которых слева в его строке находятся элементы меньше его,а справа...

Задана матрица целых чисел A(n,n). Все элементы столбца, с наибольшим номером, среди тех, где находится более двух простых элементов, заменить разно - C++
Задана матрица целых чисел A(n,n). Все элементы столбца, с наибольшим номером, среди тех, где находится более двух простых элементов,...


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

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

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