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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2009, 11:54   #1
hen
Пользователь
 
Регистрация: 31.03.2009
Сообщений: 96
По умолчанию Гляньте код пожалуйста...

' Составьте программу для нахождения всех номеров счастливых билетов. Примечание: Номера автобусных билетов представляют собой шестизначное число. Счастливым считается тот билет, у которого сумма первых трёх цифр равна сумме последних трёх цифр. Например, билет 627294 считается счастливым, так как 6+2+7=2+9+4=15. '

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

void main()
{
int a[6] {0..9}; //в паскале это было так ' a:array [1..6] of 0..9; ' , вроде массив из 6 чисел, в котором одна цифра может быть в диапазоне от 0 до 9, как это в C++ записать??
char s[6];
int error,i;
clrscr();
cout << "Vvedite nomer avtobusnogo bileta: ";
cin >> s
for (i=1;i<6;i++)
  val(s[i], a[i], error);
if (a[1]+a[2]+a[3]==a[4]+a[5]+a[6]) cout << "Happy bilet!"
   else
   cout << "Now Happy bilet! ";
getch();
}
hen вне форума Ответить с цитированием
Старый 26.04.2009, 12:26   #2
MAKEDON
The First Person!
Форумчанин
 
Аватар для MAKEDON
 
Регистрация: 07.08.2007
Сообщений: 228
По умолчанию

Вот! Я давно писал задание.

Код:
int ticket, savedN, i = 1;
printf("Enter ticket number: ");
scanf("%d", &ticket);
if (ticket / 1000 == ticket % 1000){
printf("\nYour ticket is lucky.\n");
} else {
printf("\nYour ticket is not lucky.\n");
}
Тут твоя задача уже минимальна. Создаешь в main() цикл. И этот код в функцию. Только вместо печати на экран, возвращай 1, если число счастливое. А 0 если, нет. Короче, если не понял, могу полностью написать Но лучше самостоятельно сделай!
Программа обычно делает то что вы ей сказали сделать, а не то что бы вы хотели, чтобы она сделала.
MAKEDON вне форума Ответить с цитированием
Старый 26.04.2009, 12:39   #3
hen
Пользователь
 
Регистрация: 31.03.2009
Сообщений: 96
По умолчанию

Цитата:
Сообщение от MAKEDON Посмотреть сообщение
Вот! Я давно писал задание.

Код:
int ticket, savedN, i = 1;
printf("Enter ticket number: ");
scanf("%d", &ticket);
if (ticket / 1000 == ticket % 1000){
printf("\nYour ticket is lucky.\n");
} else {
printf("\nYour ticket is not lucky.\n");
}
Тут твоя задача уже минимальна. Создаешь в main() цикл. И этот код в функцию. Только вместо печати на экран, возвращай 1, если число счастливое. А 0 если, нет. Короче, если не понял, могу полностью написать Но лучше самостоятельно сделай!
всё дело, в том, что мне нужно наподобее моего кода, препод сказал что там можно как то ограничить как и в паскале, чтобы вводимые числа были в диапазоне от 0 до 9, и как бы можно было заменить 'Val'

Последний раз редактировалось hen; 26.04.2009 в 12:46.
hen вне форума Ответить с цитированием
Старый 26.04.2009, 12:52   #4
MAKEDON
The First Person!
Форумчанин
 
Аватар для MAKEDON
 
Регистрация: 07.08.2007
Сообщений: 228
По умолчанию

Всмысле? Надо рассмотреть все числа от 111111 до 999999, верно?
Программа обычно делает то что вы ей сказали сделать, а не то что бы вы хотели, чтобы она сделала.
MAKEDON вне форума Ответить с цитированием
Старый 26.04.2009, 12:56   #5
Troi666
Пользователь
 
Регистрация: 01.12.2008
Сообщений: 58
По умолчанию

MAKEDON Ему нужен код, похожий на его...только элементы массива a должны принимать не значения диапазона int, а только 0,1,2,3,4,5,6,7,8,9. Да и ещё нужен аналог функции val (pascal) на си.

Добавлю...если enumом подключить диапазон значений массива, у нас выпадает большая часть функций...не очень приятная ситуация...

А так можно бы было предложить такой алгоритм:
-вводишь число
В цикле
-делишь его на 10 и остаток от деления пишешь в массив.
-отсекаешь остаток от числа
-увеличиваешь счётчик
-сумму первых 3-х элементов полученного массива сравниваешь с суммой 3-х последних. Если они равны, То массив счастливый. Если нет - то неудачный.

Последний раз редактировалось Troi666; 26.04.2009 в 13:03.
Troi666 вне форума Ответить с цитированием
Старый 26.04.2009, 13:18   #6
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Вот так вот можно извратиться:
Код:
#include <iostream>
#include <conio.h>
using namespace std;

enum dig
 {
  d0,d1,d2,d3,d4,d5,d6,d7,d8,d9
 };

int main()
{
dig a[6]={d0,d0,d0,d0,d0,d0};
int i,k;

while(a[0]<=d9)
 {
  if(a[0]+a[1]+a[2]==a[3]+a[4]+a[5])
   {
    for(i=0;i<6;i++)
     cout<<a[i];
    cout<<endl;
   }
 k=5;
 a[k] = static_cast<dig>(a[k] + 1);
 while(a[k]>d9)
  {
   if(k==0) break;
   a[k]=d0;
   a[--k] = static_cast<dig>(a[k] + 1);
  }
 }

getch();
return 0;
}
Места для аналога Val (atoi) не нашлось )
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 26.04.2009, 14:57   #7
hen
Пользователь
 
Регистрация: 31.03.2009
Сообщений: 96
По умолчанию

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

void main()
{
int a[6];
char s[6];
int i,j;
clrscr();
gets(s);
for(i=0;i<6;i++) j=atoi(s[i]);
clrscr();
for(j=0;j<6;j++) cout << a[j];
if (a[0]+a[1]+a[2]==a[3]+a[4]+a[5]) cout << endl << "Happy bilet!";
   else
   cout << endl << "Now Happy bilet! ";
getch();
}
А если сделать без этих чисел of 0..9 , а как можно организовать, чтобы я ввел строку из шести чисел, потом в программе она поэлементно передается в массив, ну а потом уже сравнивать поэлементно массив, если делать с помощью функции atoi, то как правильно это записать в моем варианте??
hen вне форума Ответить с цитированием
Старый 26.04.2009, 15:07   #8
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

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

int main()
{
int a[6];
char s[6];
int i,j;
char buf[1]="";
gets(s);

for(i=0;i<6;i++)
 {
  buf[0] = s[i];
  a[i]=atoi(buf);
 }
for(j=0;j<6;j++) cout << a[j];
if (a[0]+a[1]+a[2]==a[3]+a[4]+a[5]) cout << endl << "Happy bilet!";
   else
   cout << endl << "Not Happy bilet! ";
getch();
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 26.04.2009, 16:12   #9
hen
Пользователь
 
Регистрация: 31.03.2009
Сообщений: 96
По умолчанию

Sazary, спс
hen вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Гляньте свежей головой ктонить! Плиз... Samopal Паскаль, Turbo Pascal, PascalABC.NET 2 21.04.2009 17:35
Подправьте мой код пожалуйста Volchara Общие вопросы C/C++ 5 06.04.2009 17:05
Проверьте пожалуйста код forumu Помощь студентам 1 27.12.2007 21:49
Подскажите, пожалуйста код Romuald Microsoft Office Excel 8 04.12.2007 17:39