Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Sortirovka slov ANSI C

9.1K
28 июня 2005 года
Katyafiona
16 / / 24.05.2005
Получила задание:
Напишите программу, которая считивает 20 строк с клавиатуры и сохраняется в Аrray to Pointer и потом видается обратно в рассортированном виде. Нужно исползоват malloc

Дата:
char *zeilen[20];

Сортиpоват' нужно по системе Бубблесорт, просматриваеш соседние елементи, если последуюший елемент менше предидущего, меняйеш местами (менят местами нужно толко адреса

Задан список L[0] .... L[н-1]
for (i=0; i < n-1; i++ )
{
esli L > L[i+1] pomenjaj mestami L i L[i+1]
}

Vot chto u menya poka poluchilos (pochti chto nichego <_< )


#include <stdio.h>
#include <stdlib.h>
#define MAX 132
#define ANZAHL 20

int swap_strings(char **s1,char **s2);
int StringCompare(char *s1, char *s2);
char *text[ANZAHL];
char string[MAX];
main()
{

char string[MAX];

int i;
while(i<ANZAHL)
{
printf("Bitte geben Sie ein Wort ein>>>\n"); /*Pozhalujsta zadajte slovo*/
fgets(string,MAX,stdin);
text = (char*)malloc(strlen(string)+1);
strcpy(text,string);
i++;
}
StringCompare(text, ANZAHL);

}

int StringCompare(char *s1, char *s2) /* s1 dolzhen pokazivat na string, s2 - na string[i+1], no kak konkretno eto zadat ja ne znaju, potomu chto prodvigajas po arrayu oni ukazivajut vse vremja na raznije stringi(mozhet nuzhno davat im znachenija uzhe vnutri for-schleife), i voobshe v etoj funktsii naverno more oshibok*/
{
int diff;
int i;
int n;
n = strlen(text); /* n - dlina array to pointer*/
for(i=0;i<n-1;i++)
{
diff = strcmp(s1, s2); /*zdes ja pitajus sravnit slova, i zdes navernoe oshibka*/
if(diff>0) /*esli pervoe slovo bolshe vtorogo, to ih nado pomenjat mestami*/
{
swap_strings(&s1,&s2); /*dolzhen obratitsja k swap funktsii*/
}
}
for(i=0; i<strlen(text);i++) /*dolzhen vernut spisok uzhe rassortirovannih slov*/
{
printf("%s", string); /* navernoe oshibka v vidache rezultata, potomu chto nikak ne mogu tolkom razobratsja, kak peredavat rezultati funktsij v "main"*/
}
}

int swap_strings(char **s1,char **s2)
{
char *help;

help = *s1;

*s1 = *s2;
*s2 = help;
return;
}
/*poka chto v programme napisan tolko pervij "progon" t.e do kontsa ona ne rassortiruet, no etim ja zajmus potom*/



Nadejus kto pomozhet.
Spasibo ;)
406
28 июня 2005 года
vitaly2003s
481 / / 27.07.2004
Попробуй так:

#include <stdio.h>
#include <iostream>
#include <string>
using namespace std;

#define NUM_STRINGS 20
#define MAX_STRINGS_SIZE 20

void BubbleSort(char** strings,int count_strings)
{
for(int i=0;i<count_strings;i++) {
for(int i1=0;i1<count_strings-1;i1++) {
if(strcmp(strings,strings[i1+1])>0)
{//swap element
char* tempptr=strings;
strings=strings[i1+1];
strings[i1+1]=tempptr;
}
}
}
}

int _tmain(int argc, _TCHAR* argv[])
{
char** strings;
string sl;

strings=(char**)malloc(NUM_STRINGS*sizeof(char*));

cout << "Input " << NUM_STRINGS << " strings:" << endl;
for(int i=0;i<NUM_STRINGS;i++) {
if(!(strings=(char*)malloc(MAX_STRINGS_SIZE*sizeof(char*)))) return 0;
getline(cin,sl, '\n');
strcpy(strings,sl.c_str());
}

BubbleSort(strings,NUM_STRINGS);

cout << endl << endl ;
cout << "Result: \n" ;
for(int i=0;i<NUM_STRINGS;i++) {
cout << strings << endl;
}

getline(cin,sl, '\n');
return 0;
}
9.1K
29 июня 2005 года
Katyafiona
16 / / 24.05.2005
Spasibo bolshoe. No eto vidimo C++, a poskolku ja zanimajus C vsego 2 mesjatsa, to raznitsi ne znaju, a vot kompiljator znajet:{ i vidaet more oshibok, a chto chto oboznachaet, ja ponjatija ne imeju
488
29 июня 2005 года
Mоngооsе
465 / / 01.04.2005
Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>

#define MAX 132
#define ANZAHL 20

void bubleSort(char **str, int strCnt);
char *text[ANZAHL];
char string[MAX];

void main()
{
  int i = 0;

  // cstenie szlov
  while(i<ANZAHL)
  {
    printf("Bitte geben Sie ein Wort ein>>>\n"); /*Pozhalujsta zadajte slovo*/
    fgets(string,MAX,stdin);
    text = (char*)malloc(strlen(string)+1);
    strcpy(text,string);
    i++;
  }
  //szortirovka
  bubleSort(text, ANZAHL);

  // Vivod rezulytata
  printf("\n");
  for(i=0; i<ANZAHL;i++)
  {
    printf("%s", text);
  }
  printf("\n\nNazsmite ljubuju klavisu...");
  getch();
  return;  
}

void bubleSort(char **str, int strCnt)
{
  bool bSwap = true; // ukazivaet, bila li peresztanovka
  while(bSwap)
  {
    bSwap = false; // peresztanovki poka escse nebilo
    for(int i=0;i<strCnt-1;i++)
    {
      if(strcmp(str,str[i+1])>0)
      {
        char *buf = str;  //ukazately
        str = str[i+1];
        str[i+1] = buf;
        bSwap = true;   // bila peresztanovka, znacsit nuzsen escse odin prohod
      }
    }
  }
}
2
29 июня 2005 года
squirL
5.6K / / 13.08.2003
Уважаемая Катя! это уже не первый ваш топик, в котором вы демонстрируете желание получить готовые программы нахаляву. не умеете писать программы - учитесь. не хотите учиться - платите.
топик закрываю.

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог