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

Массивы - C++

Восстановить пароль Регистрация
 
Лёша128
0 / 0 / 0
Регистрация: 25.01.2010
Сообщений: 63
25.01.2011, 13:28     Массивы #1
Помогите пожалуйста решить 2 задачи на си(Завтра здать нужно.)
Задача 1
Найти в отсортированном в порядке увеличения элементов массиве место для нового заданного элемента
Задача 2
Написать программу, которая угадывает задуманное число в интервале [0,n-1] за n вопросов типа "Ваше число меньше такого-то?"


Надеюсь на вашу помощь. Заранее спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.01.2011, 13:28     Массивы
Посмотрите здесь:

массивы C++
Массивы C++
C++ С++ массивы
индексные массивы и адресные массивы C++
C++ Массивы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
46280
0 / 0 / 0
Регистрация: 25.01.2011
Сообщений: 26
25.01.2011, 13:53     Массивы #2
Вроде я видел решение подобных тем в Уроках по С++.

ссылка удалена
bobrovskii
57 / 57 / 3
Регистрация: 22.01.2011
Сообщений: 187
25.01.2011, 13:56     Массивы #3
Лёша128, у тебя то есть какие то наработки?
иначе даже не интересно(
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
25.01.2011, 14:17     Массивы #4
не на с, и не за n вопросов
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
 
int main() {
    int n, min, temp, max;
    char c;
    cout<<"n= ";
    cin>>n;
    max=n;
    min=0;
    temp=(max+min)/2;
    while((temp-min)!=0){
        //cout<<"max= "<<max<<"\nmin= "<<min<<"\n";
        cout<<"Chislo menshe "<<temp<<"?(\'y\', \'n\')";
        cin>>c;
        if(c=='y') max=temp;
        else min=temp;
        temp=(max+min)/2;
    }
    cout<<"\nchislo= "<<min;
}
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
25.01.2011, 15:17     Массивы #5
тоже не за n ходов, на С для разнообразия
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
#include <stdio.h>
 
#define MAX_NUM 100
 
int main(void){
    int guess, cnt, top, bottom;
    char answ;
    
    printf("Make a number less than %d\n", MAX_NUM);
    
    cnt = 0;
    guess = MAX_NUM / 2;
    top = MAX_NUM - 1;
    bottom = 0;
 
    printf("Enter l if your number is less than showed, g if greater, or y if guessed.\n");
    while ( cnt++ < MAX_NUM ){
        
        printf("How about %d? ", guess);
        if ( scanf("%c%*c", &answ) != 1 ){
            fprintf(stderr, "Input error!\n");
            return 1;
        }
        
        switch ( answ ){
            case 'L' :
            case 'l' :
                if ( guess == bottom ){
                    printf("So funny!\n");
                    return 1;
                }
                top = guess;
                guess = ( top + bottom ) / 2;
                break;
            case 'G' :
            case 'g' :
                if ( guess == top ){
                    printf("You true joker!\n");
                    return 1;
                }
                bottom = guess;
                guess += ( top - bottom + 1 ) / 2 ;
                break;
            case 'Y' :
            case 'y' :
                printf("Oh yeah! I just did it for %d steps!\n", cnt);
                return 0;
            default : 
                printf("Wrong command!\n");
                --cnt;
        }
        
    }
 
    printf("I so stupid, can't guess the number!\n");
    return 0;
}
Лёша128
0 / 0 / 0
Регистрация: 25.01.2010
Сообщений: 63
25.01.2011, 17:36  [ТС]     Массивы #6
а по поводу первой задачи у кого-то есть идеи?
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
25.01.2011, 17:58     Массивы #7
Цитата Сообщение от Лёша128 Посмотреть сообщение
а по поводу первой задачи у кого-то есть идеи?
примерно то же самое, только на каждом шаге у пользователя ничего спрашивать не нужно. первый индекс в массиве для сравнения - половина количества элементов массива. А дальше - если значение для вставки меньше элемента посреди массива - ищем место слева, если больше - справа. Задача сводится к тому, чтобы найти два элемента, первый из которых меньше вставляемого, а второй - больше...
Лёша128
0 / 0 / 0
Регистрация: 25.01.2010
Сообщений: 63
25.01.2011, 18:36  [ТС]     Массивы #8
Цитата Сообщение от easybudda Посмотреть сообщение
примерно то же самое, только на каждом шаге у пользователя ничего спрашивать не нужно. первый индекс в массиве для сравнения - половина количества элементов массива. А дальше - если значение для вставки меньше элемента посреди массива - ищем место слева, если больше - справа. Задача сводится к тому, чтобы найти два элемента, первый из которых меньше вставляемого, а второй - больше...
Я понимаю, что кажусь глупым первокурсником но я действительно не помню язов языка си. если не трудно покажи как надо
Noname2512
4 / 4 / 1
Регистрация: 25.06.2010
Сообщений: 106
25.01.2011, 18:40     Массивы #9
не получается считать массив строк из файла
я токо с паскаля слез, не понимаю эту лексику с
вобщем смотрите че написал:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void _tmain( )
{
    using namespace std;
    fstream in;
    string s[3];
    int i,x;
 
    in.open("input.txt",ios::in);
    for (i=1;i<=3;i++)
    {
         in.getline(s[i].c_str());//ошибка тут, но как еще эту строку считать?
             }
 
    in.close();
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.01.2011, 19:07     Массивы
Еще ссылки по теме:

C++ Массивы
C++ массивы
C++ Массивы

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

Или воспользуйтесь поиском по форуму:
Лёша128
0 / 0 / 0
Регистрация: 25.01.2010
Сообщений: 63
25.01.2011, 19:07  [ТС]     Массивы #10
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void _tmain( )
{
    using namespace std;
    fstream in;
    string s[3];
    int i,x;
 
    in.open("input.txt",ios::in);
    for (i=1;i<=3;i++)
    {
         in.getline(s[i].c_str());//ошибка тут, но как еще эту строку считать?
             }
 
    in.close();
}
[/QUOTE]

не компилит..
Yandex
Объявления
25.01.2011, 19:07     Массивы
Ответ Создать тему
Опции темы

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