Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.12.2017, 23:36   #1
Diana111
Новичок
Джуниор
 
Регистрация: 28.12.2017
Сообщений: 1
По умолчанию написала код программы для работы с двухмерным массивом, но она работает не так,как должна. помогите, пожалуйста, где ошибка.

Дан двумерный массив целых чисел. Определить: а) минимальный номер столбца, состоящего только из нечетных элементов; б) минимальный номер столбца, состоящего только из элементов, больших числа 10; в) минимальный номер столбца, состоящего только из элементов, принадлежащих промежутку от aдо b; г) минимальный номер столбца, состоящего только из элементов, кратных числу b. Во всех случаях принять, что такие столбцы в массиве есть.

Код:
#include<iostream>
#include<ctime>
#include<stdlib.h>
#include <iomanip>

using namespace std;
 int main(){
 	srand(time(NULL));
 	setlocale(LC_ALL,"Russian");
	 
	 
	int arr[50][50];
 	int sr,sb,minn,most,aorb,krb,sc=0,a=10,b=5;
 	cout<<"Введите размер массива"<<endl;
 	cin>>sr;
 	cin>>sb;
 	
 	for(int i=0;i<sr;i++){
 		for(int j=0;j<sb;j++){
 			arr[i][j]=rand() %20;
		 }
	 }
 	   cout<<"Данные массива:"<<endl;
 		for(int i=0;i<sr;i++){
 		for(int j=0;j<sb;j++){
 			cout<<setw (4)<<arr[i][j]<<setw (4);
		 }
		 cout<<endl;cout<<endl;
	 }
	 
 		for(int j=0;j<sb;j++){
 			sc=0;
 		for(int i=0;i<sr;i++){
 			if(arr[i][j]%2!=0)
 			sc++;
		 }
		if(sc==sb){
		minn=j;
		break;
		} 
	 }
	 
	 for(int j=0;j<sb;j++){
 			sc=0;
 		for(int i=0;i<sr;i++){
 			if(arr[i][j]>10)
 			sc++;
		 }
		if(sc==sb){
		most=j;
		break;
		} 
}
	 
	 for(int j=0;j<sb;j++){
 			sc=0;
 		for(int i=0;i<sr;i++){
 			if(arr[i][j]>a && arr[i][j]<b)
 			sc++;
		 }
		if(sc==sb){
		aorb=j;
		break;
		} 
	 }
	 
	 for(int j=0;j<sb;j++){
 			sc=0;
 		for(int i=0;i<sr;i++){
 			if(arr[i][j]%5==0)
 			sc++;
		 }
		if(sc==sb){
		krb=j;
		break;
		} 
	 }
	 
	 cout<<"Мин номер столбца, состоящего только из нечетных-"<<minn<<endl;
	 cout<<"Мин номер столбца, состоящего только из элементов больше 10-"<<most<<endl;
	 cout<<"Мин номер столбца, состоящего только из элементов в промежутке от a до b-"<<aorb<<endl;
	 cout<<"Мин номер столбца, состоящего только из элементов кратных b-"<<krb<<endl;
 }
_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 29.12.2017 в 09:30.
Diana111 вне форума Ответить с цитированием
Старый 29.12.2017, 10:45   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Diana111 Посмотреть сообщение
Код:
if(sc==sb){
		minn=j;
		break;
		}
Это неверно. В столбце у Вас sr элементов.
поэтому счётчик во всех случаях и нужно сравнивать с sr

Код:
	if(sc==sr){
		minn=j;
		break;
		}
это раз.

второе. переменные minn,most,aorb,krb нужно обязательно иницилизировать.
при этом я бы иницилизировал из значением, которое ЗАВЕДОМО не может являться номером столбца. Ну, например, -1:
Код:
int minn=-1,most=-1,aorb=-1,krb=-1;
третье.
прежде чем выдать текст:
"Мин номер столбца, состоящего только из ...."
нужно проверить переменную. Если она равна значению, которым иницилизировали, значит, такого столбца в матрице нет.
например:
Код:
if(minn>-1)
	 cout<<"Мин номер столбца, состоящего только из нечетных-"<<minn<<endl;
else
	 cout<<"Нет столбца, состоящего только из нечетных"<<endl;
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Java] Есть код программы, но она не работает. Программа должна запросить имя пользователя и вывести диалоговое окно с его именем. Electric86 Помощь студентам 3 29.06.2017 12:06
Помогите пожалуйста. Задание такое: написать макросы для перевода числа в строку, для вывода строки на терминал, для остановки программы. Код приведен ниже. Укажите пожалуйста что Нести Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 01.11.2016 09:26
Помогите с Двухмерным массивом в Делпфи MrMorj Помощь студентам 5 20.03.2016 09:56
Помогите пожалуйста,я написала текст программы,но программа не запускается Катя08 Visual C++ 0 22.12.2015 23:02
проверьте пожалуйста, что не так, а то она не работает Анжелика Помощь студентам 2 06.12.2008 11:42