Решить задачу на C++

Ответить
DeniC++
Сообщения: 1
Зарегистрирован: 25 янв 2009, 15:21

26 янв 2009, 19:33

я решил так:
#include "stdafx.h"
int dlinna(int a)
{ int s=1, u=a;
while(u>9)
{
s++;
u=u/10;
}
return s;
}
int invent(int a)
{ int p=0,w=1,s=0;
int t=dlinna(a);
for(int i=1;i<t+1;i++)
{
int u=a;
for(int j=i;j<t;j++)
u=u/10;
for(int k=1 ;k<i;k++)
w=w*10;
u=u-(u/10)*10;
s=s+u*w;
w=1;
}
return s;
}
int _tmain()
{
int a;
printf("введите число \n");
scanf("%d",&a);
printf("новое число %d\n",invent(a));
scanf("%d",&a);
return 0;
}
atavin-ta
Сообщения: 572
Зарегистрирован: 30 янв 2009, 06:38

03 фев 2009, 13:35

&quot писал(а):int fact(int n)
{
if(n==1)return 1;
else return n*fact(n-1);
}
перепиши так:
int fact (int i)
{
int j;
for (j=i-1; j>0; --j)
{
i*=i;
}
return i;
}
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
Werth
Сообщения: 2
Зарегистрирован: 09 янв 2009, 14:55

03 фев 2009, 21:27

Написать программу, которая проверяет, есть ли во введен*
ном с клавиатуры массиве элементы с одинаковым значением.
У меня не получается!!!!!!!!! В чём ошибки??
#include<iostream>
#include<conio.h>
using namespace std;
void main()
{
const int n = 5;
int arr[n];
int i;
cout <<"Vvedite elementi massiva: " << endl;
for(i = 0; i < n; i++)
{
cout << "Element " << i << " : ";
cin >> arr;
}
cout << endl;
cout << "Massiv imeet vid: " << endl;
for(i = 0; i < n; i++)
{
cout << arr << " ";
}
cout << endl;
cout <<"Dlia prodolgenia nagmite lubuu klavishu: ";
getch();
cout << endl;
int m = 0;
for(i = 0; i < n; i++)
{
if(arr == i )
{
m++;
}
}
if(m)
{
cout <<"Naideni odinakovie elementi: " << m << i << endl;
}
else
{
cout << "Odinakovix elementov ne obnarugenno!! " << endl;
}
cout << endl;
getch();
}
Werth
Сообщения: 2
Зарегистрирован: 09 янв 2009, 14:55

03 фев 2009, 21:30

PaNyA писал(а):Народ,помогите решить задачку на с++ ! "Написать программу, которая проверяет, является ли введенное пользователем число четным" Заранее спасибо!

Вот то что ты хотел:
#include<iostream>
#include<conio.h>
using namespace std;
void main()
{
int n;
cout <<"Vvedite chislo: ";
cin >> n;
if(n % 2 == 0)
{
cout << "Chetnoe " << endl;
}
else
{
cout <<"Nechetnoe " << endl;
}
getch();
}
Аватара пользователя
TDUTY
Сообщения: 31
Зарегистрирован: 30 янв 2009, 10:20
Контактная информация:

04 фев 2009, 09:16

Werth писал(а):Написать программу, которая проверяет, есть ли во введен*
ном с клавиатуры массиве элементы с одинаковым значением.
У меня не получается!!!!!!!!! В чём ошибки??
#include<iostream>
#include<conio.h>
using namespace std;
void main()
{
const int n = 5;
int arr[n];
int i;
cout <<"Vvedite elementi massiva: " << endl;
for(i = 0; i < n; i++)
{
cout << "Element " << i << " : ";
cin >> arr;
}
cout << endl;
cout << "Massiv imeet vid: " << endl;
for(i = 0; i < n; i++)
{
cout << arr << " ";
}
cout << endl;
cout <<"Dlia prodolgenia nagmite lubuu klavishu: ";
getch();
cout << endl;
int m = 0;
//проверку надо изменить
for(i = 0; i < n; i++)
{
if(arr == i )
{
m++;
}
}
//-----------------
if(m)
{
cout <<"Naideni odinakovie elementi: " << m << i << endl;
}
else
{
cout << "Odinakovix elementov ne obnarugenno!! " << endl;
}
cout << endl;
getch();
}


//проверку надо изменить
for(i = 0; i < n; i++)
{
for(int i1 = 0; i1 < n; i1++)
{
//стандартное решение: как быдто сравниваем элементы из двух массивов(массивы одинаковые)
//только одно условие что б элемент сам собой не сравнивать то проверяем индекс чтоб не совпадал
if((arr == arr[i1])&&(i!=i1))
{
m++;
}
}
//-----------------
qwerty2009
Сообщения: 14
Зарегистрирован: 04 фев 2009, 13:48

04 фев 2009, 14:01

Помогите пожалуйста решить задачу на C++.
В массиве целых чисел размерности n найти наиболее часто встречающееся число. Если таких чисел несколько, то определить наименьшее из них.
Аватара пользователя
Airhand
Сообщения: 234
Зарегистрирован: 06 окт 2005, 16:21
Откуда: Dnepropetrovsk

04 фев 2009, 14:45

Werth
У тебя подход в корне неверный: ты сравниваеш не введённые числа, а числа и их индексы.
Аватара пользователя
TDUTY
Сообщения: 31
Зарегистрирован: 30 янв 2009, 10:20
Контактная информация:

05 фев 2009, 08:51

qwerty2009 писал(а):Помогите пожалуйста решить задачу на C++.
В массиве целых чисел размерности n найти наиболее часто встречающееся число. Если таких чисел несколько, то определить наименьшее из них.


вот решение с коментами:

Код: Выделить всё

int main()
{
//В массиве целых чисел размерности n найти
//наиболее часто встречающееся число.
//Если таких чисел несколько,
//то определить наименьшее из них.
const int n = 10;
int mas[n]; //заданный массив
int vsp[n]; //вспомогательный массив
int sum[n];	//для подсчета наиболее
			//повторяющихся чисел
//тут мона написать по вводу чисел.
//смотри в этой теме есть примеры
//я просто задаю в программе
cout<<"\n---------------------------------\n";
randomize();
for(int i = 0; i < n; i++)
	mas[i]=random(10);

for(int i = 0; i < n; i++)
	vsp[i]=0;
for(int i = 0; i < n; i++)
	sum[i]=0;

//выделяем все неповторяющиеся числа и
//записываем в вспомогательный массив
int y=0; //количество не повторяющихся чисел
//пробегаемся по нашему массиву
for(int i = 0; i < n; i++)
	{
	bool f=false; //нету такого числа
	//пробегаем по вспомогательному массиву
	for(int h=0; h<y; h++)
		{
		if(mas[i] == vsp[h])
			{
			f=true; // у нас есть такой
			};     //элемент в вспомогательном массиве
		};
	//если нет такого числа то добавляем его.
	if (f==false)
		{
		vsp[y]=mas[i];
		y++;
		};
	};
//теперь подсчитаем какие числа больше всего повторяются.
//пробегаемся по нашему массиву
for(int i = 0; i < n; i++)
	{
	//пробегаем по вспомогательному массиву
	for(int h=0; h<y; h++)
		{
		if(mas[i] == vsp[h])
			{
			sum[h]++;
			};
		};
	};
//определим наиболее встречаемое и меньшее
//пробегаем по вспомогательному массиву
int c,w; //с - число;
//w - количество раз встречается в mas
c=vsp[0];
w=sum[0];
for(int i = 0; i < y; i++)
	{
	if(sum[i]>=w) //выбираем наиболее встречающиеся
		{
		if(sum[i]==w) //если частота совпадает
			{
			//то выбираем наименьшее число
			if(c>vsp[i])
				{
				w=sum[i];
				c=vsp[i];
				};
			}
		else //если частота больше
			{
			w=sum[i];
			c=vsp[i];
			};
		};
	};


//выводим что есть
cout<<"mas: [";
for(int i = 0; i < n; i++)
	{
	cout<<mas[i]<<"] [";
	};
cout<<"]\n";
cout<<"y="<<y<<"\n";
cout<<"vsp: |";
for(int i = 0; i < y; i++)
	{
	cout<<vsp[i]<<"| |";
	}
cout<<"|\n";
cout<<"sum: |";
for(int i = 0; i < y; i++)
	{
	cout<<sum[i]<<"| |";
	}
cout<<"|\n";
cout<<"c="<<c<<" - otvet (w="<<w<<" raz(a))\n";
cout<<"Press anykey... ";
	getch();   //ожидаем нажатия клавиши(любой)
	return 0;
}
atavin-ta
Сообщения: 572
Зарегистрирован: 30 янв 2009, 06:38

06 фев 2009, 13:15

&quot писал(а):Сообщение от Werth
Написать программу, которая проверяет, есть ли во введен*
ном с клавиатуры массиве элементы с одинаковым значением.
Сравнивать надо каждый элмент с каждым (кроме него самого) в двойном цикле, как во вложении.
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
Аватара пользователя
TDUTY
Сообщения: 31
Зарегистрирован: 30 янв 2009, 10:20
Контактная информация:

06 фев 2009, 17:39

atavin-ta писал(а):Сравнивать надо каждый элмент с каждым (кроме него самого) в двойном цикле, как во вложении.

то есть вот так? :) :)

for(i = 0; i < n; i++)
{
for(int i1 = 0; i1 < n; i1++)
{
//стандартное решение: как быдто сравниваем элементы из двух массивов(массивы одинаковые)
//только одно условие что б элемент сам собой не сравнивать то проверяем индекс чтоб не совпадал
if((arr == arr[i1])&&(i!=i1))
{
m++;
}
}
Ответить