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

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

Войти
Регистрация
Восстановить пароль
 
lasbat
2 / 2 / 0
Регистрация: 06.05.2010
Сообщений: 18
#1

перевод из строк в числа - C++

06.05.2010, 07:46. Просмотров 385. Ответов 4
Метки нет (Все метки)

помогите с корректированием задачи: дан текст, содержащий целые числа, составить программу, которая выводит на экран минимальное из чисел.

тут идея с поиском в строке целых чисел и закидыванием их в массив, идея оказалась полной фигней.
сделал потом решение без массива, но файл с кодом благополучно потерян.
за индусский код просьба не кидать помидоры >_<
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "iostream"
#include "cstdlib"
#include "cstring"
#include "string"
using namespace std;
int main(){
 
    int min;
    string s1,sub;
        getline(cin,s1);
    int *s2=new int[s1.length()];
    for(unsigned int i=0;i<s1.length();i++)
 
        s2[i]=atoi(sub.c_str());
    min=s2[0];
    for(int i=0;i<n;i++){
        if (s2[i]<min)
            min=s2[i];
    }
    cout<<min;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.05.2010, 07:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос перевод из строк в числа (C++):

Бинарные числа! Перевод простого числа в бираное и расчет. - C++
Здравствуйте!Я понимаю, что моя просьба банальна, но я правда не могу никак разобраться с бинарными числами и переводом простых чисел в...

Перевод числа из одной с.с. в другую, манипуляции с цифрами числа - C++
Здравствуйте! У меня такая проблема... Есть программа, выполняющая определенные операции с введенным числом (переставляет местами цифры,...

перевод строк - C++
как перевести строку при работе с файлами? заранее спасибо

Перевод с Pascal на С++(16 строк) - C++
Всем добрый день! Так и не разобрался как пользоваться транслятором. Помогите пожалуйста перевести эти несчастные 16 строк.. program...

Перевод строк в массив int - C++
Добрый вечер, как мне перевести 2 строки в два разных массива ?

Перевод строк при их записи в текстовый файл - C++
Как сделать перевод строк при их записи в текстовый файл (CArchiv::WriteString())? не подойдет, т.к. редактор неформатированного текста...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
fasked
Эксперт С++
4936 / 2516 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
06.05.2010, 08:26 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <vector>
#include <fstream>
#include <algorithm>
 
int main()
{
   std::vector<int> v;
   std::ifstream ifs("outfile.txt");
 
   int t = 0;
   while(ifs >> t)
      v.push_back(t);
 
   int min = *(std::min_element(v.begin(), v.end()));
   std::cout << min << std::endl;
 
   system("pause");
   return 0;
}
1
lasbat
2 / 2 / 0
Регистрация: 06.05.2010
Сообщений: 18
06.05.2010, 08:40  [ТС] #3
ну с алгоритмом и векторами естественно очень легкая задача, мне надо реализовать её, без использования подобных библиотек и дополнительных функций
0
fasked
Эксперт С++
4936 / 2516 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
06.05.2010, 09:04 #4
то есть ты хочешь сказать что использовать string можно, а vector нет? странное представление об алгоритмах и библиотеках.

Сделай тогда вот так:
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
#include <iostream>
#include <fstream>
 
int * min_element(int * a, int size)
{
   int * found = a;
   for(int i = 0; i < size; ++i)
      if(*found > a[i])
         found = &a[i];
   return found;
}
 
int main()
{
   std::ifstream ifs("infile.txt");
 
   int n = 0;
   ifs >> n;
 
   int *a = new int[n];
 
   for(int i = 0; i < n; ++i)
      ifs >> a[i];
 
   int min = *(min_element(a, n));
   std::cout << min << std::endl;
 
   delete[] a;
 
   system("pause");
   return 0;
}
В переменной n хранится количество чисел в файле, это должна быть самая первая запись в файле, напрмиер вот так:
Код
8
34 34 23 2 6 57 346 782
первая запись - 8 - это и есть размер
1
lasbat
2 / 2 / 0
Регистрация: 06.05.2010
Сообщений: 18
07.05.2010, 14:11  [ТС] #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
#include "iostream"
#include "cstdlib"
#include "cstring"
#include "string"
using namespace std;
int main(){
    unsigned int i=0;
int min=500;
cin.get();
string s1,sub;
string razdel=".,;:!? ";
getline(cin,s1);
string::size_type k=0;
k=s1.find_first_of(razdel,0);
int *s2=new int[s1.length()];
while(i!=s1.length()){
        if(isdigit(s1[i])){
            k=s1.find_first_of(razdel,i)+1;
            sub=s1.substr(i,k-i);
            cout<<"k="<<k<<"i="<<i<<endl;
            s2[i]=atoi(sub.c_str());
            if(min>s2[i])
                min=s2[i];
                    }
        i++;
    }
cout<<min;
}
вот практически то, чего я хотел добиться, но теперь прога сравнивает только однозначные числа, и не реагирует на 1 элемент строки
пример: 1 фыв 2, выводит 2
пример: длорфы 17 128 12 лор27ю 88, выводит 1

Добавлено через 3 часа 17 минут
проблема всё еще не решена, реквестирую помощь=)

Добавлено через 17 часов 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
#include "iostream"
#include "cstdlib"
#include "cstring"
#include "string"
using namespace std;
int main(){
    unsigned int i=0;
int min=INT_MAX;
cin.get();
string s1,sub;
string razdel=".,;:!? ";
getline(cin,s1);
string::size_type k=0;
int *s2=new int[s1.length()];
s1=s1+" ";
while(k!=string::npos && i!=s1.length()){
        if(isdigit(s1[i])){
            k=s1.find_first_of(razdel,i);
            if(k==string::npos) break;
            sub=s1.substr(i,k-i);
            
            s2[i]=atoi(sub.c_str());
            
            if(min>s2[i])
                min=s2[i];
            i=k;
                        }
        i++;
 
 
    }
 
 
cout<<min;
}
решил=)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.05.2010, 14:11
Привет! Вот еще темы с ответами:

Перевод переменной из int в char и конкатенация строк - C++
вообщем вот кусок кода. max - это та самая переменная которую нужно было мне перевести в char, но потом у меня никак не получается...

Перевод строк в верхний и нижний регистры не работает для кириллицы - C++
Для того, чтобы в программе можно было осуществлять различные действия вне зависимости от регистра, используются специальные функции...

Перевод 10-го числа в 2-ое - C++
Народ обьясните пжлста как работает эта функция(быстрое возведение числа в степень a^d mod n) : long powmod(long a, long d, long n) ...

Перевод числа из 10 в 2 сс - C++
Написать рекурсивную функцию перевода числа из 10 в 2 систему счисления. Помогите пожалуйста.


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
07.05.2010, 14:11
Ответ Создать тему
Опции темы

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