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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.01.2016, 08:52   #1
ddfd
Новичок
Джуниор
 
Регистрация: 22.01.2016
Сообщений: 1
По умолчанию Задача на си

Дана строка, содержащая цифры и строчные латинские буквы. Если
буквы в строке упорядочены по алфавиту, то вывести 0; в противном
случае вывести номер первого символа строки, нарушающего алфавитный
порядок.
Помогите, пожалуйста, составить программу без использования cin и cout. Буду очень благодарен и признателен.
Вот я тут написал небольшую часть:
#include <conio.h>
#include <iostream>
#include <time.h>
#include <string.h>

void main()
{
char s[100];
int k, i;
printf_s("Введите строку: ");

s[1]='a';
s[2]='b';
s[3]='c';
s[4]='d';
s[5]-'e';
s[6]='f';
s[7]='g';
s[8]='h';
s[9]='i';
s[10]='j';
s[11]='k';
s[12]='l';
s[13]='m';
s[14]='n';
s[15]='o';
s[16]='p';
s[17]='q';
s[18]='r';
s[19]='s';
s[20]='t';
s[21]='u';
s[22]='v';
s[23]='w';
s[24]='x';
s[25]='y';
s[26]='z';

k==0;
}
ddfd вне форума Ответить с цитированием
Старый 22.01.2016, 11:42   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

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

/*
Дана строка, содержащая цифры и строчные латинские буквы. Если
буквы в строке упорядочены по алфавиту, то вывести 0; в противном
случае вывести номер первого символа строки, нарушающего алфавитный
порядок.
*/

char CheckStr(char* p)
{
  char next = *p;
  while (*p)
  {
    if ((*p > 0x2F) && (*p < 0x3A)) 
    {
      p++; 
      continue; // проигнорить цифру
    }
		
    if (next != *p) 
      break;
		
    next++; 
    p++;   
  }
  
  return *p;
}

int main(int argc, char** argv) 
{
	char* S = "abc0dxef"; // "abcdefghijklm"
	char x = CheckStr(S);
	if (!x) x = '0';
	printf(" returned --> '%c'\n", x); 
	getch();
	return 0;
}
ВНИМАНИЕ!
УВАГА!!
АХТУНГ!!!
АТТЕНШН!!!!

Shit-code detected!
Код не отлаживал. Писал на заборе!
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...

Последний раз редактировалось min@y™; 22.01.2016 в 11:45.
min@y™ вне форума Ответить с цитированием
Старый 22.01.2016, 13:11   #3
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,601
По умолчанию

Латинский алфавит в шестнадцатеричном виде начинается с \x61 и заканчивается \x7a
Цифры в шестнадцатеричном виде начинаются с \x30 и заканчиваются \x39
Шестндацатеричный вид - ASCII.

Проверка на соответствие множества символов строки заданному набору символов из латинского алфавита и цифр if ((c > '\x61' && c < '\x7a')||(c > '\x30' && c < '\x39'))

Размер строки неизвестен, поэтому возникает постановка вопроса о типе данных для хранения строки. В языке C требуется указывать размер массива в фиксированном виде.

Если количество символов строки превышает размер массива, то получается, что при фиксированном задании размера массива программа будет работать неправильно.

Базовый тип данных для хранения одного символа - char.

В задании не указано, что считаем концом строки, то есть требуется договариваться о терминах. Должна ли последовательность в алфавитном порядке вмещаться во всю строку или нет?

Код:
#include <stdio.h>
#include <malloc.h>

#define P(a) printf(a);
#define R(a,b) printf(a,b);

void main()
{
int fl;
int i;
int n;
char* s;
char c;

P("Enter size of string: \n");
scanf("%d", &n);

R("size of string is %d\n", n);
s = (char*) malloc(n);

P("Enter string: \n");
scanf("%s", s);

R("string is %s\n",s);

c = s[0];

if ((c > '\x61' && c < '\x7a')||(c > '\x30' && c < '\x39'))
for (fl = 0, i = 0; i < n && fl == 0; i++)
{
if ((c > '\x61' && c < '\x7a')||(c > '\x30' && c < '\x39'))
{
if (s[i] == c)
fl = 0;
else
fl = 1;

if (i <= n-1 && fl == 1)
printf("%c\n%d\n", s[i], i);
else if (i == n-1 && fl == 0)
printf("0\n");

c++;
}
else
{
fl = 1;
printf("%c\n%d\n", s[i], i);
}
}

}
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задача на зачёт. проблема Задача на нобелевскую премию! Sabotage5 Паскаль, Turbo Pascal, PascalABC.NET 2 18.03.2013 15:18
Задача по подсчёту статистики использования букв. Другая задача - по длинной арифметике Pascal ABC kimberly Паскаль, Turbo Pascal, PascalABC.NET 3 24.12.2012 17:03
Задача на оптимальный расчет маршрута (задача в презентации) в табличном процессоре Excel Toofed Помощь студентам 0 30.11.2011 01:12
Задача минимизации дисбаланса на линии сборки (задача минимакса) LenZab Microsoft Office Excel 13 13.03.2011 22:51