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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2012, 18:29   #1
SHIFT999
 
Регистрация: 19.11.2012
Сообщений: 8
По умолчанию Работа с массивом: удаление, замена и сортировка

Программа должна считывать пользовательскую строку, оставив только символы от "i" до "z" и от "I" до "Z", сделать все маленькие буквы большими, упорядочить массив в алфавитном порядке.
Я взял 2 массива, из одного перекидывал значения в другой, сделал сортировку, но на выходе получается не то. Во-первых - вывод почему-то с середины страницы, во вторых - строка выводится вся и нужные нам символы просто дублируются, и она упорядочена! Я уже голову себе сломал об эту задачу, что делать?
Все в борландской консоли 3.1.

Код:
#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void main ()
{
int i,j;
char e,x,enter[100],out[100];
clrscr();
for (i=0;i<100;i++)
  {
  enter[i]=' ';
  out[i]=' ';
  }
x=0;
printf ("Введите строку символов: \n");
gets (enter);
for (i=0;i<strlen(enter);i++)
  if ((enter[i]>=113&&enter[i]<=122))
    enter[i]=enter[i]-32;
for (i=0;i<strlen(enter);i++)
  if ((enter[i]>=81&&enter[i]<=90))
    {
    out[x]=enter[i];
    x++;
    }
for (j=0;j<strlen(out);j++)
{
  for (i=0;i<=strlen(out);i++)
    if (out[j]<out[i])
      {
      e=out[j];
      out[j]=out[i];
      out[i]=e;
      }
}
for (i=0;i<strlen(out);i++)
  printf ("%c",out[i]);
getch();
}
SHIFT999 вне форума Ответить с цитированием
Старый 20.12.2012, 21:35   #2
SHIFT999
 
Регистрация: 19.11.2012
Сообщений: 8
По умолчанию

Есть тут кто живой?
SHIFT999 вне форума Ответить с цитированием
Старый 20.12.2012, 23:05   #3
Perchik71
С++, Delphi
Форумчанин
 
Аватар для Perchik71
 
Регистрация: 24.11.2012
Сообщений: 495
По умолчанию

да есть, только вот одни примеры с рунета.
Если помог, тут весы есть , Вам не сложно, а мне приятно.
Perchik71 вне форума Ответить с цитированием
Старый 20.12.2012, 23:47   #4
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
упорядочить массив в алфавитном порядке.
Цитата:
во вторых - строка (...) упорядочена!
Ы?..
Стесняюсь спросить, а почему такая претензия-то?
Abstraction вне форума Ответить с цитированием
Старый 21.12.2012, 00:01   #5
Perchik71
С++, Delphi
Форумчанин
 
Аватар для Perchik71
 
Регистрация: 24.11.2012
Сообщений: 495
По умолчанию

Цитата:
Сообщение от Abstraction Посмотреть сообщение
Ы?..
Стесняюсь спросить, а почему такая претензия-то?
это типо в скобках уже упорядочено. Сам офигиваю.
но ещё больше добивает сам код. я его уже видел тута. в одной из тем по массивам.
Если помог, тут весы есть , Вам не сложно, а мне приятно.
Perchik71 вне форума Ответить с цитированием
Старый 21.12.2012, 08:42   #6
SHIFT999
 
Регистрация: 19.11.2012
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Abstraction Посмотреть сообщение
Ы?..
Стесняюсь спросить, а почему такая претензия-то?
Потому что упорядочены все символы, даже те, которые мне не нужны.

Цитата:
Сообщение от Perchik71 Посмотреть сообщение
это типо в скобках уже упорядочено. Сам офигиваю.
но ещё больше добивает сам код. я его уже видел тута. в одной из тем по массивам.
Не нужно обвинять меня в плагиате. Этот код я ковырял сам, к тому же его не так уж и сложно написать. В конце концов у меня бы не было таких ошибок, если бы я тупо скопировал все. Мне не нужны примеры с рунета, я все стараюсь делать сам, так что если вы что-то знаете, от прошу помочь с программой, если нет - не тратьте мое и ваше время.
SHIFT999 вне форума Ответить с цитированием
Старый 21.12.2012, 15:04   #7
Perchik71
С++, Delphi
Форумчанин
 
Аватар для Perchik71
 
Регистрация: 24.11.2012
Сообщений: 495
Стрелка

Цитата:
Сообщение от SHIFT999 Посмотреть сообщение
Не нужно обвинять меня в плагиате. Этот код я ковырял сам, к тому же его не так уж и сложно написать. В конце концов у меня бы не было таких ошибок, если бы я тупо скопировал все. Мне не нужны примеры с рунета, я все стараюсь делать сам, так что если вы что-то знаете, от прошу помочь с программой, если нет - не тратьте мое и ваше время.
Хорошо, посчитаем вы меня убедили...
во-первых. когда что то нужно изобретать берите бумагу.
во-вторых. комментарии это сопровождение ваших мыслей.
в-третьих. когда вы говорите о проблеме напрямую, обычно ошибка видна сразу.

Warning:
вы используете библиотеку строк. при этом её игнорите. зачем
её включать?

Попытался переделать этот код, который я всё равно видел.
с комментами.

Код:
clrscr();  //чистка экрана
char str[100]; // массив букашек, ничего чистить там не нужно, 
                    // тем более 99 символ, что кончается \0.
printf("Введите строку символов: \n");
gets(str);       // получил строку в 99 букашек, 100 символ \0.
/*
Далее пишу ваш код... 
*/
int i;
for(i=0; i< strlen(str); i++) // от 0 до конца строки не считая \0.
{
    if((str[i] >= 113) && (str[i] <= 122)) // нужно разделить скобками. 
                                                      // что и сделал 
                                                      // чтоб вы знали
                                                      // символ можно писать 'g'.
                                                      // эффект тот же.
        str[i] = str[i]-32;                       // мы вычитаем пробел царь велел.
}

char out_str[100];
int x = 0;          // У вас x вобще char.. при строке 100 сработает, но.....
for(i=0; i< strlen(str); i++) // от 0 до конца строки не считая \0.
{
    if((str[i] >= 81) && (str[i] <= 90))     // нужно разделить скобками.  
                                                      // на фоне должно быть 9 букв
                                                      // из алфавита
    {
        out_str[x] = enter[i];                  // присваивание
        x++;                                        // инкремент на 1
    }
}

/*
for(x=0;x<strlen(out_str);x++)              // бежим по длине новой строки
{
    for(i=0;i<=strlen(out_str);i++)           // бежим ещё раз
    {
        if(out_str[x] < out_str[i])              // и тут меня прорезало
      {
      e=out[j];/// вы что сортируете? и причём пузыркёвой сортировкой?
                  // нет бы шела загнали..... 
      out[j]=out[i];       
      out[i]=e;
      }
}*/
// всё это не правильно
char c;
int len = strlen(out_str);
for(i=1;i<len;++i)              // бежим по длине новой строки, но с 1 
                                     // ибо с 0 будет мусор
{
     for(x=len - 1;x>=i;--x)  // изучи цикл внимательно.
     {
         if(out_str[x - 1] > out_str[x]) // i тут и не лежал
         {
             c=out_str[x - 1];
             out_str[x - 1] = out_str[x];
             out_str[x] = c;
         }
     }
}
// "Злой дух перестановок" - откройте книгу автора Г. Шилдт. любую.

printf("%s",out_str);
getch();
}
И да пишите в чём проблема изначально, чибо тут не каждый будет вашу кашу переписывать.
Если помог, тут весы есть , Вам не сложно, а мне приятно.
Perchik71 вне форума Ответить с цитированием
Старый 21.12.2012, 15:16   #8
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
мы вычитаем пробел царь велел.
Это toupper/tolower для "хакеров". Символы верхнего и нижнего регистра в ASCII отличаются только в 5-м бите.
Abstraction вне форума Ответить с цитированием
Старый 21.12.2012, 15:25   #9
Perchik71
С++, Delphi
Форумчанин
 
Аватар для Perchik71
 
Регистрация: 24.11.2012
Сообщений: 495
По умолчанию

Цитата:
Сообщение от Abstraction Посмотреть сообщение
Это toupper/tolower для "хакеров". Символы верхнего и нижнего регистра в ASCII отличаются только в 5-м бите.
да я вкурсах. поэтому и написал "царь"
Если помог, тут весы есть , Вам не сложно, а мне приятно.
Perchik71 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
массивы замена нечетных чисел и удаление Артем4ик Паскаль, Turbo Pascal, PascalABC.NET 0 18.05.2012 17:13
Работа с массивом, удаление элементов, исправте что не так(очень важно) Valent22 Помощь студентам 0 29.01.2012 20:13
Сортировка массивом Sobaka_ru Помощь студентам 0 24.01.2012 21:59
удаление\замена 30gb Microsoft Office Excel 3 13.09.2010 06:25