Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.95/19: Рейтинг темы: голосов - 19, средняя оценка - 4.95
29 / 29 / 7
Регистрация: 26.03.2010
Сообщений: 305
1

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

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

Author24 — интернет-сервис помощи студентам
Задача такая:

Дана целочисленная прямоугольная матрица. Определить:
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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.04.2010, 18:54
Ответы с готовыми решениями:

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

Определить количество введенных чисел значения которых находятся в заданном интервале
С клавиатуры вводятся действительные числа.Признак конца ввода-0. Определить количество чисел...

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

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

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

На Windows 7
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
01.04.2010, 19:03 6
Мне повторить?
Я тебе сказал, что делать.
0
29 / 29 / 7
Регистрация: 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
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
01.04.2010, 19:17 8
Другой коленкор.
Пока я ковыряюсь, подробнее об ошибках давай.
0
29 / 29 / 7
Регистрация: 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
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
01.04.2010, 19:28 10
Значит так, во-первых по скобкам.

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

Итак, поставь закрывающую скобку '}' где она должна стоять.
0
29 / 29 / 7
Регистрация: 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
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
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
29 / 29 / 7
Регистрация: 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
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
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
29 / 29 / 7
Регистрация: 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
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
01.04.2010, 20:06 16
Ясно, что по теме?
1
29 / 29 / 7
Регистрация: 26.03.2010
Сообщений: 305
01.04.2010, 20:10  [ТС] 17
Цитата Сообщение от kravam Посмотреть сообщение
Ясно, что по теме?
Непонял? Мож лучше в асю??? [493466015]
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
01.04.2010, 20:15 18
Дай последний код, с косяком который.
0
29 / 29 / 7
Регистрация: 26.03.2010
Сообщений: 305
01.04.2010, 20:20  [ТС] 19
Да я нашел. Все исправил. Но вот подсчитывает он не правельно
Миниатюры
количество чисел, совпадающих с номером столбца, в которых они находятся  
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
01.04.2010, 20:22 20
Щас началось самое трудное. Давай код, а я отлучусь ненадолго.
0
01.04.2010, 20:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.04.2010, 20:22
Помогаю со студенческими работами здесь

Массив: Вычислить произведение нечетных элементов, значение которых вдвое больше, чем место, где они находятся...
Дается одномерный вектор. Напишите программу, которая вычисляет произведение нечетных элементов,...

В массиве заменить отрицательные элементы номером столбца, в котором они находятся
В массиве Q(m=5,n=2) заменить отрицательные элементы номером столбца, в котором они находятся: ...

Заменить отрицательные элементы матрицы номером столбца, в котором они находятся
Всем доброго времени суток! Помогите решить задачу! Заранее спасибо! В массиве Q(m,n) заменить...

Переименование файлов по имени папок, в которых они находятся
Доброго времени суток. Не программист, сам бат-ники писать их не умею, знаю только, что с их...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru