Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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



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

Дан двумерный массив целых чисел. Определить: а) минимальный номер столбца, состоящего только из нечетных элементов; б) минимальный номер столбца, состоящего только из элементов, больших числа 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 в 10:30.
Diana111 вне форума   Ответить с цитированием
Старый 29.12.2017, 11:45   #2
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 23,012
Репутация: 5118
По умолчанию

Цитата:
Сообщение от 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 на форуме   Ответить с цитированием
Ответ



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Java] Есть код программы, но она не работает. Программа должна запросить имя пользователя и вывести диалоговое окно с его именем. Electric86 Помощь студентам 3 29.06.2017 13:06
Помогите пожалуйста. Задание такое: написать макросы для перевода числа в строку, для вывода строки на терминал, для остановки программы. Код приведен ниже. Укажите пожалуйста что Нести Assembler 1 01.11.2016 10:26
Помогите с Двухмерным массивом в Делпфи MrMorj Помощь студентам 5 20.03.2016 10:56
Помогите пожалуйста,я написала текст программы,но программа не запускается Катя08 Visual C++ 0 23.12.2015 00:02
проверьте пожалуйста, что не так, а то она не работает Анжелика Помощь студентам 2 06.12.2008 12:42




12:01.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru