2012-06-02 2 views
-3

Я имею проблему с физическими упражнениями, так вот упражнение:Сравнить две строки и удалить общие буквы

Напишите программу, которая помогает с соответствующими сообщениями на экране, чтобы прочитать две строки символов str1 и str2 даже который будет задан с клавиатуры, а затем удалите все буквы в переменной str1, которые также отображаются в переменной str2. На дисплее отображается конечный результат для проверки правильности работы программы.

И вот что я сделал до сих пор (я могу использовать только эти библиотеки):

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 

int main() 
{ 
    char str1[80], str2[80]; 
    int megethos1, megethos2,max,i,j; 
    printf ("Give the first string: "); 
    scanf ("%s", &str1); 
    printf ("Give the second string: "); 
    scanf ("%s", &str2); 

    size1= strlen(str1); 
    size2= strlen(str2); 

    for (j=0; j<=megethos2; j++){ 
     for (i=0; i<=megethos1; i++){ 
      if (str2[(strlen(str2)-j)]=str1[(strlen(str1)-i)]) 
       str1[(strlen(str1)-i)]=' '; 
     } 
    } 

    printf (str1); 

    system("pause"); 

} 

Так кто может мне помочь?

+1

Есть проблема с тем, что вы закодированы до сих пор? Разве это не работает? Какое поведение у него есть? – robert

+2

вы используете c, а не C#. –

+1

Кроме того, теги не принадлежат к названию, а «I» написано с большой буквы. –

ответ

0
#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 

int main(){ 
    char str1[80], str2[80]; 
    int size1,size2, i,j; 
    printf ("Give the first string: "); 
    scanf ("%s", str1); 
    printf ("Give the second string: "); 
    scanf ("%s", str2); 

    size1= strlen(str1); 
    size2= strlen(str2); 

    for (j=0; j<size2; j++){ 
     for (i=0; i<size1; i++){ 
      if (str2[j]==str1[i]) 
       str1[i]=' '; 
     } 
    } 

    printf("%s\n", str1); 

    system("pause"); 

} 
2
 if (str2[(strlen(str2)-j)]=str1[(strlen(str1)-i)]) 
     str1[(strlen(str1)-i)]=' '; 

Когда i является 0 то str2[(strlen(str1)] является завершающим нулевым символом строки, которые вы перезапись с ' '. Вам понадобится - 1.

В качестве @PaulR отмечено в комментариях, первое = должно быть ==.

Также обратите внимание, что вы должны использовать scanf("%s", str), а не scanf("%s", &str).

+1

Также обратите внимание, что первый '=' должен, вероятно, быть '=='? –

-1

Ваш вопрос о C или C#?

Для C# вы можете использовать LINQ:

var s1 = "string new"; 
var s2 = "string"; 

var excludedCharText = 
    s1 
    .Where(c => s2.All(o => o != c)) 
    .Select(c => c.ToString()) 
    .Aggregate((prev, next) => prev + next); 
+1

Я думаю, что весь ваш ответ - ужасно медленная замена для новой строки (s1.Except (s2) .ToArray()) '(которая уже довольно неэффективна). Посмотрите на построитель строк, если вы хотите что-то более эффективное – sehe

Смежные вопросы