Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Myrbm
0 / 0 / 0
Регистрация: 09.04.2009
Сообщений: 20
#1

задачи на текст и массивы - C++

09.04.2009, 20:04. Просмотров 726. Ответов 7
Метки нет (Все метки)

Помогите пожалуйста с лабораторкой. Я больше по Паскалю, а в Си плаваю, и очень мелко...

1. Ввести с клавиатуры предложение. Удалить из него слово, номер которого задаст пользователь. Если слов меньше, оповестить об ошибке.

2. Сформировать массив из 50 случайных чисел которые входят в промежуток А..В.
Распечатать его, потом удалить из него нечетные элементы (со сдвигом), снова распечатать и указать, сколько элементов удалено
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2009, 20:04     задачи на текст и массивы
Посмотрите здесь:

C++ задачи на C++, на массивы
Массивы - задачи C++
с++ задачи на массивы и мартицы C++
Задачи на массивы C++
Массивы(задачи) C++
Задачи на массивы в С++ C++
C++ Задачи на массивы С++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
sigmaalgebra
9 / 9 / 0
Регистрация: 15.03.2009
Сообщений: 76
09.04.2009, 21:34     задачи на текст и массивы #2
Могу простенький вариант, немного глуповатый но чем могу...
#include<stdio.h>
#include<conio.h>
#include<string.h>
int main()
{
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
//Задание строки с клавы, корявое правда... 
      char str[255];
      char rez_str[255];
      int i=0,n=0,kol_vo_probelov=0,num=0,dlina++;
      char c=0;
     while(c!=13)//кажется 13 код ENTER
     {
           c=getch();
           if(c=='\n') break;
           else
           str[i]=c;i++;dlina++;
           if(c==' ' && (i>0 &&str[i-1]!=' ') || (c==' ' && i==0))kol_vo_probelov++;
     }
     cout<<"VVedite nomer slova";
     cin>>n;
     if(kol_vo_probelov<n)cout<<"ILLEGAL NUMBER\n";
     else
     {
         i=0;
//Ищем n-е слово
         while(num<n)
         {
            rez_str[i]=str[i];
            if(str[i]==' ')num++;
            i++;
         }
         c=str[i];
//Пропускаем слово
         while(c!=' ')
         {
            c=str[i];i++;
         }
         while(i<dlina)
        { rez_str[i]=str[i];i++;}
     }
return 0;
}
Добавлено через 1 минуту 29 секунд
Ну я этот код правда не тестила...Но должно работать, правда если подряд несколько пробелов там надо кусок их пропускающий вставить..Но примерно так)

Добавлено через 3 минуты 40 секунд
По поводу второго. Есть в Си в библиотеке math кажется функция rand(), параметры у нее число,до которого генерировать случ числа от нуля. Поэтому чтобы сгенерировать от А до в Это так:
chislo=A+rand(В). 50 раз в цикле. нечетные- значит при деоении на два остаток не нулевой, те chislo%2!=0. Тогда удаляешь, ну а дальше идея то и как в Паскале реализовывается, на этом отличия вроде заканчиваются.
Monte-Cristo
2786 / 1372 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
09.04.2009, 21:48     задачи на текст и массивы #3
только предварительно, желательно прописать
srand(time(0)); иначе числа будут не случайными, а машинозависимыми...
и скгенирировать от А до В выглядит так

int C = A+rand()%(B-A);
Myrbm
0 / 0 / 0
Регистрация: 09.04.2009
Сообщений: 20
09.04.2009, 22:53  [ТС]     задачи на текст и массивы #4
Большое спасибо, конечно... Но я ж говорю - мелко плаваю... Если можно, плиз, полный тест проги. А то я в первом не смог разобраться с вводом - не читает оно почему-то. Ну дуб я, дуб...
Gravity
557 / 551 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
10.04.2009, 16:20     задачи на текст и массивы #5
По первой.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <conio.h>
 
#define MAXLINE 80
#define MAXWORDS 40
int addword(char *[], char *);
void printl(char *[], int);
 
main()
{
      int nwords = 0, delnum;
      char *line, word[MAXLINE], *wordsptr[MAXWORDS];
      
      /* выделение памяти под предложение */
      if( (line = (char *)malloc(MAXLINE)) == NULL) {
         printf("error: can't allocate memory for line\n");
         getch();
         return 1;
      }
      /* читаем строку */
      if(fgets(line, MAXLINE, stdin) == NULL)
         return 1;
      /* разбиваем строку на слова */
      while(sscanf(line, "%s", word) != EOF) {
         line = strstr(line, word);   /* пропуск символов-разделителей перед словом */
         line += strlen(word);
         while(isspace(*line))   /* пропуск символов-разделителей после считанного слова */
            line++;
         nwords += addword(wordsptr, word);
      }
      /* удаление заданного слова */
      printf("Enter number of word to delete: ");
      scanf("%d", &delnum);
      if(delnum > 0 && delnum <= nwords)
         wordsptr[delnum-1] = NULL;
      else
         printf("error: word #%d not exist\n", delnum);
      
      /* печать предложения */
      printl(wordsptr, nwords);
      
      getch();
      return 0;
}
 
/* добавляет слова в массив указателей */      
int addword(char *wordsptr[], char *w)
{
    static int nw = 0;
    char *p;
    
    if(nw >= MAXWORDS) {
       printf("error: wordsptr: buffer overflow\n");
       return 0;
    }
    if( (p = (char *)malloc(strlen(w))) == NULL) {
       printf("error: can't allocate memory for %s\n", w);
       return 0;
    }
    strcpy(p, w);
    wordsptr[nw++] = p;
    return 1;
}
 
/* печать предложения */
void printl(char *wordsptr[], int lim)
{
    while(lim-- > 0)
       if(*wordsptr != NULL)
          printf("%s ", *wordsptr++);
       else
          wordsptr++;
}
Скомпилированный экзешник.
Вложения
Тип файла: rar words.rar (6.6 Кб, 12 просмотров)
sigmaalgebra
9 / 9 / 0
Регистрация: 15.03.2009
Сообщений: 76
10.04.2009, 20:14     задачи на текст и массивы #6
srand- для меня что-то новое) Вот randomize() сразу после маин знаю)
Monte-Cristo
2786 / 1372 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
10.04.2009, 20:19     задачи на текст и массивы #7
randomize - это паскаль... в СИ++ srand(time(0)); обычно используется...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.04.2009, 22:42     задачи на текст и массивы
Еще ссылки по теме:

C++ Задачи на массивы
Задачи на двумерные массивы C++
C++ Задачи на массивы

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Myrbm
0 / 0 / 0
Регистрация: 09.04.2009
Сообщений: 20
13.04.2009, 22:42  [ТС]     задачи на текст и массивы #8
Большое спасибо за решения, но не мог би кто-то решить еще и 2 задачу?? оч надо, плиз...
Yandex
Объявления
13.04.2009, 22:42     задачи на текст и массивы
Ответ Создать тему
Опции темы

Текущее время: 09:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru