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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.06.2011, 07:45   #1
zaki
Пользователь
 
Регистрация: 06.05.2011
Сообщений: 75
По умолчанию массивы, задача.

определить имеется ли в массиве целых положительных чисел b1, b2 b3....bn число, в котором 1-я и последняя цифры совпадают. Выдать на экран само число и его номер.
Есть вот такой код...
Код:
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
	const int N=10;
int a[N];
int i,d,f,c,k,v,t=0;
cout <<"vvedite chisla" <<endl;
for (i=1; i<=N; i++)
{
	cin >> a[i];
	d=i;
}
c=10;
for (k=1; k<=d; k++)
{
	do
	{
	f=a[k]%c;
	v=(a[k]-f)/c;
	if (f==v)
	{
		t=1;
		cout <<a[k];
	}
	t=0;
	}
	while (t=1);

	c=c*10;
}
system ("pause");
return 0;
}
Сообразить не могу, как выйти из цикла...
zaki вне форума Ответить с цитированием
Старый 06.06.2011, 08:33   #2
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Не совсем понятна логика программы.
Зачем первый (после ввода) цикл, почему он начинается с 1, и что такое d?
Да и сама проверка как-то подозрительно выглядит...
Можешь озвучить алгоритм, которым пользуешься?
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 06.06.2011, 11:33   #3
Jaguar83
Профессионал
Пользователь
 
Аватар для Jaguar83
 
Регистрация: 25.05.2011
Сообщений: 91
По умолчанию

Код:
#include <iostream>

using namespace std;

int main()
{
	const int N=10;

	int a[N];
	char * str = new char[10];
	char * str1 = new char[10];
	char * str2 = new char[10];

	cout <<"vvedite chisla" << endl;

	for (int i=0; i<N; i++)
	{
		cin >> a[i];
		str = itoa(a[i],str,10);

		strncpy(str1,str,1);
		str1[1] = 0; 
		strncpy(str2,str+strlen(str)-1,1);
		str2[1] = 0; 

		if (strcmp(str1,str2) == 0)
			cout << "Find! a[" << i << "] = " << a[i] << endl;
	}

system ("pause");
return 0;
}
Помог? Будь человеком - жми на весы слева!
Jaguar83 вне форума Ответить с цитированием
Старый 06.06.2011, 12:18   #4
RomanHouse
 
Аватар для RomanHouse
 
Регистрация: 29.05.2011
Сообщений: 6
По умолчанию

Jaguar83, у меня Ваш код почему-то выдает ошибки. Не понимаю зачем было усложнять все строками.

Код:
#include <iostream>
using namespace std;
int main()
{
    int arr[10];

    for(int i=0; i<10; i++) cin>>arr[i];

    for(int i=0; i<10; i++)
    {
        if((arr[i]%10)==(arr[i]/10))
        {
            cout<<arr[i]<<" ";
        }
    }
    return 0;
}

Последний раз редактировалось RomanHouse; 06.06.2011 в 12:24.
RomanHouse вне форума Ответить с цитированием
Старый 06.06.2011, 12:32   #5
Jaguar83
Профессионал
Пользователь
 
Аватар для Jaguar83
 
Регистрация: 25.05.2011
Сообщений: 91
По умолчанию

Кому как проще!
У меня работает без ошибок VC++ 6.0
а ваш код не работает у меня
'i' : redefinition; multiple initialization

к тому же в вашем коде есть изъян, что если кол-во цифр будет больше 2?
Помог? Будь человеком - жми на весы слева!

Последний раз редактировалось Jaguar83; 06.06.2011 в 12:40.
Jaguar83 вне форума Ответить с цитированием
Старый 06.06.2011, 14:15   #6
zaki
Пользователь
 
Регистрация: 06.05.2011
Сообщений: 75
По умолчанию

Mandrivnyk, логика как у RomanHouse(спасибо за код).

RomanHouse, программка работает только с числами где 2 цифры(
if((arr[i]%10
Как сделать 10 переменной и делить до тех пор пока число не станет меньше 1го?
Или я не так думаю
zaki вне форума Ответить с цитированием
Старый 06.06.2011, 14:17   #7
zaki
Пользователь
 
Регистрация: 06.05.2011
Сообщений: 75
По умолчанию

ой не тот кусок, (arr[i]/10) - вот тут
zaki вне форума Ответить с цитированием
Старый 06.06.2011, 14:36   #8
Jaguar83
Профессионал
Пользователь
 
Аватар для Jaguar83
 
Регистрация: 25.05.2011
Сообщений: 91
По умолчанию

Я же тебе выложил решение.
У меня работает с любым количеством цифр. Проверено на VC++ 6
Помог? Будь человеком - жми на весы слева!

Последний раз редактировалось Jaguar83; 06.06.2011 в 19:18.
Jaguar83 вне форума Ответить с цитированием
Старый 06.06.2011, 15:27   #9
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Еще один вариант...

Код:
#include <iostream>
#include <sstream>
#include <cmath>

using namespace std;

int numberofdigits(int dec);

int main()
{
    const int dim = 1000;
    int Array[dim];
   
    for(int i = 0; i < dim; i++)
        Array[i] = i;

    for(int i = 0; i < dim; i++)
        if (Array[i] % 10 == Array[i] / (int)(pow(10, numberofdigits(Array[i]) - 1)) && numberofdigits(Array[i]) != 1)    // Числа до 10 не учитываем
            cout << Array[i] << " ";
    
    return 0;
}

int numberofdigits(int dec)
{
    stringstream sstr;
    sstr << dec;
    return sstr.str().length();
}
Для проверки массив заполняется числами от 0 до 999.
Поменяешь ввод массива на свое усмотрение.

ЗЫ
2 Jaguar83
Цитата:
itoa
Цитата:
This function is not defined in ANSI-C and is not part of C++, but is supported by some compilers.
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 06.06.2011, 16:17   #10
RomanHouse
 
Аватар для RomanHouse
 
Регистрация: 29.05.2011
Сообщений: 6
По умолчанию

Код:

#include <iostream>
#include <stdlib.h>
#include <string.h>

using namespace std;

char*str=new char [sizeof(int)];

int len(int k)         //находим количество цифр в числе
{
    char*str=new char [sizeof(int)];
    itoa(k, str, 10);
    return strlen(str);
}

int main()
{
    int arr[10];
    int k=1;

    for(int i=0; i<10; i++) cin>>arr[i];
    for(int i=0; i<10; i++)
    {
        for(int j=0; j<len(arr[i])-1; j++) k*=10;          //делитель
        if((arr[i]%10)==(arr[i]/k))
        {
            cout<<arr[i]<<" ";
        }
        k=1;
    }
    delete []str;
    return 0;
}

Последний раз редактировалось RomanHouse; 06.06.2011 в 21:23.
RomanHouse вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на массивы. Хайд Паскаль, Turbo Pascal, PascalABC.NET 3 19.12.2010 01:01
Задача на массивы в Си. jusstes Фриланс 4 12.11.2010 19:41
задача на массивы lini Помощь студентам 2 20.09.2009 21:28
Задача на массивы Альбиша Паскаль, Turbo Pascal, PascalABC.NET 0 08.04.2009 19:03