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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2008, 21:04   #1
TheWanderer
Пользователь Подтвердите свой е-майл
 
Регистрация: 01.10.2008
Сообщений: 82
По умолчанию Задачи по С++

Координаты точки на плоскости заданы переменными Х и Y.
Записать следующие условия в форме логических выражений:
а) точка лежит в первой четверти координатной плоскости;
б) точка лежит на оси X;
в) точка лежит на одной из осей.
TheWanderer вне форума Ответить с цитированием
Старый 17.11.2008, 21:17   #2
vvviperrr
Тупой студент
Форумчанин
 
Аватар для vvviperrr
 
Регистрация: 12.05.2007
Сообщений: 614
По умолчанию

a) (x > 0) && (y > 0)
b) (x != 0) && (y == 0)
c) ( (x != 0) && (y == 0) ) || ( (x == 0) && (y != 0) )

Это чтоле?
vvviperrr вне форума Ответить с цитированием
Старый 17.11.2008, 21:50   #3
TheWanderer
Пользователь Подтвердите свой е-майл
 
Регистрация: 01.10.2008
Сообщений: 82
По умолчанию

да, спасибо за помощь.
TheWanderer вне форума Ответить с цитированием
Старый 18.11.2008, 03:13   #4
MURREX
Студент
 
Аватар для MURREX
 
Регистрация: 27.07.2008
Сообщений: 7
Вопрос Помогите решить 2 задачи

Помогите пожалуйста решить 2 задачи :
1.Дан массив:
int m[][10] = { {62,49,50,87,13,49,58,17,83,54},
{12,56,32, 5,86,10,97,22,51,0 },
{93,35,25, 6,23,27, 4,35,44,13},
{38,81,70,38,80,40,41, 0,38,92},
{53,33,84,94,63,54,96,42,83,30},
{ 8,10, 0,18, 2,24,61,81,90, 9},
{56,53,71,49,23,84,46,29,30,82},
{19,42,55,57,27,50,42,40,37, 0},
{ 6,71,80,22,22,33,51,64,47,75},
{84,43,99, 5,46,85,28, 0,50, 4}}
Определите количество столбцов, содержащих хотя бы один нулевой элемент и
номер строки, в которой находится наибольшее количество одинаковых элементов.


2. С клавиатуры вводится последовательность строк. Длина каждой строки – не более 80 символов. Строки состоят из слов, разделенных знаками пунктуации или пробельными символами. Количество строк заранее не известно. Окончание ввода – пустая строка. Для каждой строки захватывать порцию динамической памяти. Использовать массив указателей (100 элементов). Разместить строки в динамической памяти , подсчитать к-во слов, длиннее 6-ти букв и вывести только строки, содержащие двузначные числа.
MURREX вне форума Ответить с цитированием
Старый 18.11.2008, 09:59   #5
StarWorm
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 233
Подмигивание

Цитата:
Сообщение от MURREX Посмотреть сообщение
Помогите пожалуйста решить 2 задачи :
1.Дан массив:
int m[][10] = { {62,49,50,87,13,49,58,17,83,54},
{12,56,32, 5,86,10,97,22,51,0 },
{93,35,25, 6,23,27, 4,35,44,13},
{38,81,70,38,80,40,41, 0,38,92},
{53,33,84,94,63,54,96,42,83,30},
{ 8,10, 0,18, 2,24,61,81,90, 9},
{56,53,71,49,23,84,46,29,30,82},
{19,42,55,57,27,50,42,40,37, 0},
{ 6,71,80,22,22,33,51,64,47,75},
{84,43,99, 5,46,85,28, 0,50, 4}}
Определите количество столбцов, содержащих хотя бы один нулевой элемент и
номер строки, в которой находится наибольшее количество одинаковых элементов.
Вот тебе друг решение с комментариями... Все утро на это угрохал, но зато как работает!

Код:
#include "stdafx.h"
#include <conio.h>
#include <iostream>

using namespace std;

int main()
{
	const int col=10;	//Количество столбцов, которое вроде бы известно
	int str=0;	//Количество строк, которое изначально неизвестно
	int replaceElement=-1000;
	
	//Твой массив
	int m[][col] = { {62,49,50,87,13,49,58,17,83,54},
	{12,56,32, 5,86,10,97,22,51,0 },
	{93,35,25, 6,23,27, 4,35,44,13},
	{38,81,70,38,80,40,41, 0,38,92},
	{53,33,84,94,63,54,96,42,83,30},
	{ 8,10, 0,18, 2,24,61,81,90, 9},
	{56,53,71,49,23,84,46,29,30,82},
	{19,42,55,57,27,50,42,40,37, 0},
	{ 6,71,80,22,22,33,51,64,47,75},
	{84,43,99, 5,46,85,28, 0,50, 4}};
	
	//Распечатываем массив и находим количество строк
	for(int i=0;*m[i]>NULL;i++)
	{
		for(int j=0;j<col;j++)
			cout<<m[i][j]<<"\t";
		cout<<"\n";
		str++;
	}

	//Считаем количество столбцов с элементом '0'
	int countCol=0;
	for(int j=0;j<col;j++)
		for(int i=0;i<str;i++)
			if(m[i][j]==0)
			{
				countCol++;		//Если элемент найден, то увеличеть кол-во найденных столбцов
				break;			//и перейти к следующему столбцу
			}
	//Вывести на экран кол-во стольбцов с элементом '0'
	cout<<"\n\nColumns with Zero('0') element: "<<countCol;
	
	//Создадим массив для хранения кол-ва одинаковых элементов
	int* countArr=new int[str];
	for(int i=0;i<str;i++)		//и обнулим его
		countArr[i]=0;
	
	bool flag=false;			//Этот флжок для того, чтобы понять был ли встречен одинак элемент при проходе строки
	
	//Создадим дупликат изначального массива, т.к. нам придется его поменять
	int** myArr=new int*[str];
	for(int i=0;i<str;i++)
		myArr[i]=new int[col];
	for(int i=0;i<str;i++)				//заполним его
		for(int j=0;j<col;j++)
			myArr[i][j]=m[i][j];
	
	//Будем заменять все одинаковые элементы в строках на элемент 'replaceElement'
	for(int i=0;i<str;i++)
		for(int j=0;j<col-1;j++)
		{
			flag=false;
			//if(myArr[i][j]==replaceElement)break;
			for(int k=j+1;k<col;k++)
				if(myArr[i][j]==myArr[i][k] && myArr[i][j]!=replaceElement)
				{
					myArr[i][k]=replaceElement;
					flag=true;
				}
			if(flag==true)myArr[i][j]=replaceElement;
		}
	
	//Посчитаем ко-во одинаковых элементов в строках и запишем эти значения в массив countArr
	for(int i=0;i<str;i++)
		for(int j=0;j<col;j++)
			if(myArr[i][j]==replaceElement)
				countArr[i]++;
	int max=0;			//максимальное значение одинаковых элементов
	
	//Найдем максимальное значение один элементов
	for(int i=0;i<str;i++)
		if(countArr[i]>max)max=countArr[i];

	//Распечатаем все номера строк, которые соответствуют найденному максимальному значению одинак эл-тов
	cout<<"\nString with most like elements: ";
	for(int i=0;i<str;i++)
		if(countArr[i]==max)cout<<"#"<<i<<" ";

	getch();
	delete [] countArr;		//удалим наши
	delete [] myArr;		//динамические массивы
	return 0;
}
Если есть какие-либо недочеты или пожелания - говори, помогу!

Немного исправил код А то получалось, что после одного исправления другие не правились (например если в строке были две разные повторяющиеся величины)... Этого я добился убрав строчку:
Код:
if(myArr[i][j]==replaceElement)break;

Последний раз редактировалось StarWorm; 18.11.2008 в 12:38.
StarWorm вне форума Ответить с цитированием
Старый 18.11.2008, 10:07   #6
StarWorm
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 233
Счастье

Цитата:
С клавиатуры вводится последовательность строк. Длина каждой строки – не более 80 символов. Строки состоят из слов, разделенных знаками пунктуации или пробельными символами. Количество строк заранее не известно. Окончание ввода – пустая строка. Для каждой строки захватывать порцию динамической памяти. Использовать массив указателей (100 элементов). Разместить строки в динамической памяти , подсчитать к-во слов, длиннее 6-ти букв и вывести только строки, содержащие двузначные числа.
Что значит разделены знаками пунктуации... Т.е. точками и запятыми?! Для каждой строки захватывать порцию новой??? памяти... Или же создать массив (100 элементов) указателей на строки (по 80 символов) и после ввода пустой строки присвоить этому указателю NULL???
Что значит вывести строки, содерж двузначные числа??? Длина >=100 символам или что? или слов там >=100?
А насчет подсчитать кол-во слов... у меня есть прога (сам написал), которая разбивает предложение на отдельные слова и забивает этими словами динамический массив! Правда там разделителями являются пробелы!
StarWorm вне форума Ответить с цитированием
Старый 18.11.2008, 11:51   #7
TheWanderer
Пользователь Подтвердите свой е-майл
 
Регистрация: 01.10.2008
Сообщений: 82
По умолчанию

Вот ещё одна задачка:
В программе объявлена переменная: float х=2. Какое значение получит переменная х в результате вычисления следующих выражений?
а) х+=2;
б) х*=(х+1)
в) х+=х+=х+=1
Если я правильно всё сделал, то ответы должны выглядеть так:
а) 4 б) 6 в) 12
Но преподаватель говорит, что неверная форма записи.
Значит, ответ должен выглядеть, так что ли?:
а) 4.0 б) 6.0 в) 12.0
TheWanderer вне форума Ответить с цитированием
Старый 18.11.2008, 12:46   #8
Ламер_001
Ну и что? :)
Форумчанин
 
Регистрация: 20.10.2008
Сообщений: 129
По умолчанию

да. только нулей побольше напиши что бы препод доволен был
Учиться, учиться и еще раз учиться
Ламер_001 вне форума Ответить с цитированием
Старый 18.11.2008, 12:50   #9
StarWorm
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 233
По умолчанию

Вот тебе прога, которая выдает тебе ответы!
Код:
#include "stdafx.h"
#include <conio.h>
#include <iostream>

using namespace std;

int main()
{
	float x=2;
	cout<<"1. If x not refresh then:\n\n";
	x+=2;
	cout<<"\tImpression\t\tAnswer\n\n";
	cout<<"\ta)x+=2\t\t\t"<<x<<"\n";
	x*=(x+1);
	cout<<"\tb)x*=(x+1)\t\t"<<x<<"\n";
	x+=x+=x+=1;
	cout<<"\tc)x+=x+=x+=1\t\t"<<x<<"\n";

	x=2;
	cout<<"\n\n2. If x refresh then:\n\n";
	x+=2;
	cout<<"\tImpression\t\tAnswer\n\n";
	cout<<"\ta)x+=2\t\t\t"<<x<<"\n";
	x=2;
	x*=(x+1);
	cout<<"\tb)x*=(x+1)\t\t"<<x<<"\n";
	x=2;
	x+=x+=x+=1;
	cout<<"\tc)x+=x+=x+=1\t\t"<<x<<"\n";
	getch();
	return 0;
}
И объясни, переменная сохраняет свое значение или каждый раз типо по новому?! Oo

P.S. Ну а насчет нулей - это уже придирка... ИМХО!

Последний раз редактировалось StarWorm; 18.11.2008 в 12:53.
StarWorm вне форума Ответить с цитированием
Старый 19.11.2008, 01:48   #10
MURREX
Студент
 
Аватар для MURREX
 
Регистрация: 27.07.2008
Сообщений: 7
По умолчанию

Огромное Спасибо.Все проканало.
MURREX вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задачи на С++ Nemisoi Фриланс 7 06.10.2011 22:55
3 задачи innaa639 Паскаль, Turbo Pascal, PascalABC.NET 8 17.11.2008 00:30
Задачи Денискин Помощь студентам 5 27.09.2008 08:46
Задачи vitalik007 Помощь студентам 1 13.10.2007 23:09
2 Задачи Stan Помощь студентам 4 02.06.2007 19:47