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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 27.05.2009, 20:54   #1
lutuygrey1
Пользователь
 
Регистрация: 27.05.2009
Сообщений: 30
Восклицание Все слова входного потока вывести в алфавитном порядке

Помогите пожалуйста!!!!!!! Все слова входного потока вывести в алфавитном порядке. Вот прога написанная я там наверно накасячил немного.
Код:
#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<ctype.h>
#define N 128
#define B 10

int main(void)
{
clrscr();
int slovo=0;
char str[N];
char mas[B][N];
int  i,j,a;
while(1)
{
 printf("\n введите  %d слово ",slovo+1);
 if (scanf("%s",str)==EOF) break;
 strcpy(mas[slovo],str);
 printf("%s",mas[slovo++]);
 getch();
 }
for(i=0;i<N;i++)
 {
 for(j=0;j<B;j++)
  {
  if(strcmp(mas[slovo],str)>0)
  {
   a=mas[slovo];
   mas[slovo]=str;
   str=a;
  }
 }
}
printf("%s",mas[slovo++]);
getch();
printf("%s",mas[slovo++]);
getch();
return 0;
}
Модератор: тег CODE

Последний раз редактировалось Sazary; 27.05.2009 в 21:01.
lutuygrey1 вне форума
Старый 27.05.2009, 21:09   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Код:
 if (scanf("%s",str)==EOF) break;
И когда, по-вашему, должен закончиться ввод?
Код:
char mas[b][N];
Код:
 a=mas[slovo];
   mas[slovo]=str;
   str=a;
нельзя так. Используйте strcpy.
Код:
for(i=0;i<N;i++)
 {
 for(j=0;j<B;j++)
  {
  if(strcmp(mas[slovo],str)>0)
  {
   a=mas[slovo];
   mas[slovo]=str;
   str=a;
  }
 }
}
Какая связь между счетчиками i и j и переменной slovo? Никакой.
Да и сама сортировка у вас написана неверно.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума
Старый 27.05.2009, 21:35   #3
lutuygrey1
Пользователь
 
Регистрация: 27.05.2009
Сообщений: 30
По умолчанию

а как тогда лучше написать чтобы она всё правильно делалал. заранее сапасибо
lutuygrey1 вне форума
Старый 27.05.2009, 21:44   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от lutuygrey1
а как тогда лучше написать чтобы она всё правильно делалал.
А для чего я вам ошибки указал? Исправьте и будет правильно работать.
Вместо while(1) используйте for.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума
Старый 27.05.2009, 21:57   #5
lutuygrey1
Пользователь
 
Регистрация: 27.05.2009
Сообщений: 30
По умолчанию

Код:
#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<ctype.h>
#define N 128
#define B 10
int main(void)
{clrscr();
int slovo=0;
char str[n];
char mas[b][n];
int  i,j,a;
     
for(i,i)
{
printf(0"\n введите %d слово: ",slovo+1);
if (scanf("%s",str)==EOF) 
strcpy(mas[slovo],str);
printf("%s",mas[slovo++]);
getch();
}
for(i=0;i<N;i++);
{
for(j=0;j<B;j++)
{
if(strcpy(mas[slovo],str)>0)
{a=mas[i][j];
mas[i][j]=str;
str=a;
}
}
}
printf("%s",mas[slovo++]);
getch();
printf("%s",mas[slovo++]);
getch();
return 0;
}

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

Пользуйтесь тегом CODE!

И что это? Вижу код. А что не работает?
Это называется исправили ошибки?

Перечитайте 2-й пост. Вы его, похоже, не заметили.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума
Старый 27.05.2009, 22:16   #7
lutuygrey1
Пользователь
 
Регистрация: 27.05.2009
Сообщений: 30
По умолчанию

а куда вставлять тег CODE а

Sazary: на панели в окне редактирования нажмите "#". Появятся открывающий и закрывающий теги CODE. Между ними и заключайте код.

Последний раз редактировалось Sazary; 27.05.2009 в 22:19.
lutuygrey1 вне форума
Старый 27.05.2009, 22:32   #8
lutuygrey1
Пользователь
 
Регистрация: 27.05.2009
Сообщений: 30
По умолчанию

а надо заходить В show chilipboard
if (scanf("%s",str)==EOF) а почему эта строка неправильна ведь тут как раз залаётся признак конца входного потока
char mas[b][n]- должен быть целй тип? тогда выскакивает ошибка cannot char* to char.
а почему неправильна тогда строка for(i,i) это равносильно while(1)

Последний раз редактировалось lutuygrey1; 27.05.2009 в 22:38.
lutuygrey1 вне форума
Старый 27.05.2009, 23:06   #9
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
if (scanf("%s",str)==EOF) а почему эта строка неправильна ведь тут как раз залаётся признак конца входного потока
Каким образом вы собираетесь ввести символ EOF?
Цитата:
char mas[b][n]- должен быть целй тип?
В си важен регистр. Нужно B, вместо b.
Цитата:
а почему неправильна тогда строка for(i,i) это равносильно while(1)
А при чем тут равносильность? Здесь не нужен бесконечный цикл.

Переменная 'a' вас вообще целого типа. А вы в нее строку пытаетесь впихнуть.

Код:
#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<ctype.h>
#define N 128
#define B 10

int main(void)
{
int slovo=0;
char str[N],a[N];
char mas[B][N];
int  i,j;
for(slovo=0; slovo<B; slovo++)
{
 printf("\n введите  %d слово ",slovo+1);
 scanf("%s",str);
 strcpy(mas[slovo],str);
 }
 
for(i=0;i<B-1;i++)
 {
 for(j=i+1;j<B;j++)
  {
  if(strcmp(mas[i],mas[j])>0)
  {
   strcpy(a,mas[i]);
   strcpy(mas[i],mas[j]);
   strcpy(mas[j],a);
  }
 }
}
for(i=0; i<B; i++)
 printf("%s\n",mas[i]);
 getch();
return 0;
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]

Последний раз редактировалось Sazary; 27.05.2009 в 23:43.
Sazary вне форума
Старый 27.05.2009, 23:29   #10
lutuygrey1
Пользователь
 
Регистрация: 27.05.2009
Сообщений: 30
По умолчанию

спасибо огромное только у меня маленькая проблема я абсолютно такой же код ввёл у меня ошибки на символе 'b'
lutuygrey1 вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Упорядочить слова в алфавитном порядке sasha45 Общие вопросы C/C++ 36 20.06.2011 11:03
Вывести все слова входного потока, заканчивающиеся заданной последовательностью символов fiaftw Общие вопросы C/C++ 2 03.02.2009 00:44
Вывести в алфавитном порядке все латинские буквы Jereme Паскаль, Turbo Pascal, PascalABC.NET 6 26.12.2008 13:15
Как расположить в алфавитном порядке слова,содержащиеся в файле? JiLiYa Паскаль, Turbo Pascal, PascalABC.NET 0 20.12.2008 13:58