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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.07.2013, 14:28   #11
RIKISHI007
Пользователь
 
Регистрация: 04.07.2013
Сообщений: 27
По умолчанию

У меня всё компилируется, в системе acmp пишут, что compilation error
RIKISHI007 вне форума Ответить с цитированием
Старый 07.07.2013, 14:30   #12
RIKISHI007
Пользователь
 
Регистрация: 04.07.2013
Сообщений: 27
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Что вызывает затруднения?
Если два числа имеют разную длину, то берем с наибольшей, если длина одинакова, то простое сравнение строк (a > b) даст верный результат.
Код:
string a, b, c;
cin >> a >> b >> c;
a = (a.length() < b.length()) ? b : (a.length() > b.length()) ? a : (a > b) ? a : b;
a = (a.length() < c.length()) ? c : (a.length() > c.length()) ? a : (a > c) ? a : c;
cout << a;
Ваш код у меня в code:blocks - компилируется, в системе acmp http://acmp.ru/, пишет compilation error!

Лог

task.cpp
task.cpp(8) : error C2679: binary '>>' : no operator found which takes a right-hand operand of
type 'std::string' (or there is no acceptable conversion)
RIKISHI007 вне форума Ответить с цитированием
Старый 07.07.2013, 14:34   #13
RIKISHI007
Пользователь
 
Регистрация: 04.07.2013
Сообщений: 27
По умолчанию

Все, принял! Спасибо!
RIKISHI007 вне форума Ответить с цитированием
Старый 07.07.2013, 14:40   #14
RIKISHI007
Пользователь
 
Регистрация: 04.07.2013
Сообщений: 27
По умолчанию

Вы гений! Мне 17 лет и я чувствую полным петушком себя( Хочу научиться программировать как вы!
RIKISHI007 вне форума Ответить с цитированием
Старый 09.07.2013, 23:32   #15
Volatile
Новичок
Джуниор
 
Регистрация: 09.07.2013
Сообщений: 2
По умолчанию

Может короче было бы добавить ко всем строкам лидирующие нули, чтобы уравнять длину каждой строки и затем их просто сравнить?
Volatile вне форума Ответить с цитированием
Старый 10.07.2013, 00:34   #16
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,299
По умолчанию

Цитата:
Сообщение от Volatile Посмотреть сообщение
Может короче было бы добавить ко всем строкам лидирующие нули, чтобы уравнять длину каждой строки и затем их просто сравнить?
Короче вряд ли, но как вариант (самый короткий из найденных способ добавить нули в строку - метод insert).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 10.07.2013, 00:34   #17
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от Volatile Посмотреть сообщение
Может короче было бы добавить ко всем строкам лидирующие нули, чтобы уравнять длину каждой строки и затем их просто сравнить?
их можно и без этого сравнить, сравнив сначала длины
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 10.07.2013, 12:56   #18
Кащей
Форумчанин
 
Аватар для Кащей
 
Регистрация: 09.07.2013
Сообщений: 249
По умолчанию

На.
Код:
#include <stdio.h>
#include <string.h>

typedef unsigned char uchar;

int main(void){
	
	uchar A[255];
	uchar B[255];
	uchar C[255];
	uchar D[3];
	
	memset(A, 255, 255);
	memset(B, 255, 255);
	memset(C, 255, 255);
	
	int i, n;
	puts("\ninput A\n");
	for(i = 255; i > 0; i--){
		scanf("%d", &n);
		if(n != 255) A[i] = n;
		else break;
	}
	puts("\ninput B\n");
	for(i = 255; i > 0; i--){
		scanf("%d", &n);
		if(n != 255) B[i] = n;
		else break;
	}
	puts("\ninput C\n");
	for(i = 255; i > 0; i--){
		scanf("%d", &n);
		if(n != 255) C[i] = n;
		else break;
	}
	
	for(i = 255; i > 0 && A[i] < 255 && B[i] < 255; i--)
		if(A[i] > B[i]) D[0] = 1;
		else if(A[i] < B[i])D[0] = 0;
		else if(A[i] == B[i])D[0] = 2;
		
	for(i = 255; i > 0 && B[i] < 255 && C[i] < 255; i--)
		if(B[i] > C[i]) D[1] = 1;
		else if(B[i] < C[i])D[1] = 0;
		else if(B[i] == C[i])D[1] = 2;
	
	for(i = 255; i > 0 && C[i] < 255 && A[i] < 255; i--)
		if(C[i] > A[i]) D[2] = 1;
		else if(C[i] < A[i])D[2] = 0;
		else if(C[i] == A[i])D[2] = 2;
	
	for(i = 0; i < 3; i++){
		if(D[i] == 0 && i == 0) printf("Первое число меньше второго\n");
		else if(D[i] == 1 && i == 0) printf("Первое число больше второго\n");
		else if(D[i] == 2 && i == 0) printf("Первое число равно второму\n");
		if(D[i] == 0 && i == 1) printf("Второе число меньше третьего\n");
		else if(D[i] == 1 && i == 1) printf("Второе число больше третьего\n");
		else if(D[i] == 2 && i == 1) printf("Второе число равно третьему\n");
		if(D[i] == 0 && i == 2) printf("Третье число меньше первого\n");
		else if(D[i] == 1 && i == 2) printf("Третье число больше первого\n");
		else if(D[i] == 2 && i == 2) printf("Третье число равно первому\n");
	}
	
	return 0;	
}
do not use your brain

Последний раз редактировалось Кащей; 10.07.2013 в 13:19.
Кащей вне форума Ответить с цитированием
Старый 10.07.2013, 13:05   #19
Кащей
Форумчанин
 
Аватар для Кащей
 
Регистрация: 09.07.2013
Сообщений: 249
По умолчанию

Вводим дестичные цифры из которых состоит число, с конца к началу, 255 завершает ввод и всё.
Тока там надо исправление внести. Оно расчитано на одинаковой длинны числа, маленькая проверка на длинну исправит это.
do not use your brain

Последний раз редактировалось Кащей; 10.07.2013 в 13:22.
Кащей вне форума Ответить с цитированием
Старый 10.07.2013, 13:08   #20
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

Цитата:
Сообщение от Кащей Посмотреть сообщение
На.
Код:
#include <stdio.h>
#include <string.h>

typedef unsigned char uchar;

int main(void){
	
	uchar A[255];
	uchar B[255];
	uchar C[255];
	uchar D[3];
	
	memset(A, 255, 255);
	memset(B, 255, 255);
	memset(C, 255, 255);
	
	int i, n;
	puts("\ninput A\n");
	for(i = 0; i < 255; i++){
		scanf("%d", &n);
		if(n != 255) A[i] = n;
		else break;
	}
	puts("\ninput B\n");
	for(i = 0; i < 255; i++){
		scanf("%d", &n);
		if(n != 255) B[i] = n;
		else break;
	}
	puts("\ninput C\n");
	for(i = 0; i < 255; i++){
		scanf("%d", &n);
		if(n != 255) C[i] = n;
		else break;
	}
	
	for(i = 255; i > 0 && A[i] < 255 && B[i] < 255; i--)
		if(A[i] > B[i]) D[0] = 1;
		else D[0] = 0;
	for(i = 255; i > 0 && B[i] < 255 && C[i] < 255; i--)
		if(B[i] > C[i]) D[1] = 1;
		else D[1] = 0;
	for(i = 255; i > 0 && C[i] < 255 && A[i] < 255; i--)
		if(C[i] > A[i]) D[2] = 1;
		else D[2] = 0;
	
	for(i = 0; i < 3; i++){
		if(D[i] == 0 && i == 0) printf("Первое число меньше второго\n");
		else if(D[i] == 1 && i == 0) printf("Первое число больше второго\n");
		if(D[i] == 0 && i == 1) printf("Второе число меньше третьего\n");
		else if(D[i] == 1 && i == 1) printf("Второе число больше третьего\n");
		if(D[i] == 0 && i == 2) printf("Третье число меньше первого\n");
		else if(D[i] == 1 && i == 2) printf("Третье число больше первого\n");
	}
	
	return 0;	
}
С выводом сообщений не пройдет.
Там система проверки не читает выведенное сообщение
Igor95 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сравнить числа в делфи amki6 Помощь студентам 2 16.02.2013 20:51
Дан целочисленный массив А(m,n) задается с экрана либо генерируется в пределах -100 до 100. Найти числа b1 b2 …bn равные суммам эл 95% Помощь студентам 0 07.01.2013 16:52
Задані цілі числа від 1 до 100.Надрукувати в порядку зростання усі числа що можна подати у вигляді 7*i*j+j+3, де i,j - цілі числа. Саша513 Паскаль, Turbo Pascal, PascalABC.NET 0 16.05.2012 18:45
Числа от 1 до 100 и обратно Винни пух JavaScript, Ajax 6 05.05.2009 17:22