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

Строки - C++

Восстановить пароль Регистрация
 
Show2011
0 / 0 / 0
Регистрация: 14.12.2011
Сообщений: 8
14.12.2011, 16:06     Строки #1
Написать программу, которая принимает с клавиатуры 3 целых числа через запятую и вычисляет для них среднее арифметическое. Использовать приведение типов.
Как записать эти 5 чисел через запятую в строку, и что за приведение типов использовать скажите пожалуйста)))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2011, 16:06     Строки
Посмотрите здесь:

C++ Отсортировать цифры, символы и буквы из строки в отдельные строки
Строки. Вывести на печать то слово этой строки, которое по алфавиту предшествует всем другим C++
C++ Структуры и строки (как поменять значение строки в структуре?)
C++ Если строки одинаковы, объединить две строки, исключив из второй первые десять символов
Как сделать так, что бы длинна строки сама менялась при вводе строки? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YouDoItWrong
46 / 46 / 7
Регистрация: 29.10.2011
Сообщений: 154
14.12.2011, 16:37     Строки #2
Ну как я понял, нужно считывать все в строку, а потом преобразовать char -> int ну или double если числа с плавующей точкой.

Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
8
#include <iostream>
#include <string>
 
int main() {
    std::string str;
    std::cin >> str;
    return 0;
}
считать можно как-то так.

Добавлено через 8 минут
http://www.cplusplus.com/doc/tutorial/typecasting/ Ну вот информация по type casting'у, помойму, именно это тебе нужно.
Show2011
0 / 0 / 0
Регистрация: 14.12.2011
Сообщений: 8
14.12.2011, 17:03  [ТС]     Строки #3
записываю в строку, а как мне тут приведение нужно использовать, не понимаю что хотят =)
YouDoItWrong
46 / 46 / 7
Регистрация: 29.10.2011
Сообщений: 154
14.12.2011, 17:09     Строки #4
Я же написал, вы должны преобразовать строку в число. тоесть char в int.

Приведе́ние ти́па (type conversion) — преобразование значения переменной одного типа в значение другого типа. Выделяют явное и неявное приведения типов.
При явном приведении указывается тип переменной, к которому необходимо преобразовать исходную переменную.
При неявном приведении преобразование происходит автоматически, по правилам, заложенным в данном языке программирования.
Также в языке могут быть заданы специальные функции для приведения. Wikipedia.

А еще я дал ссылку на стать по type casting'у (Приведению типов), если не устраивает англоязычный ресурс, могу дать ссылку на русский
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
14.12.2011, 17:24     Строки #5
Цитата Сообщение от Show2011 Посмотреть сообщение
принимает с клавиатуры 3 целых числа через запятую
Цитата Сообщение от Show2011 Посмотреть сообщение
Как записать эти 5 чисел
Так сколько чисел-то?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
    
int main(void){
    int a, b, c;
    char buf[BUFSIZ];
    
    while ( printf("Three comma separated values: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' ){
        if ( sscanf(buf, "%d,%d,%d", &a, &b, &c) != 3 ){
            fprintf(stderr, "Wrong input!\n");
            continue;
        }
        printf("Average: %.1f\n", ((double)(a + b + c)) / 3.0);
    }
    
    return 0;
}
YouDoItWrong
46 / 46 / 7
Регистрация: 29.10.2011
Сообщений: 154
14.12.2011, 17:24     Строки #6
Ну вот первое что в голову пришло.
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 <string>
#include <vector>
 
using namespace std;
 
int main() {
    string str, subString;
    vector<int> nums;
    int tmp = int();
    cin >> str;
    for(int i = 0; i < str.length(); i++) {
        if(str[i] == ',') {
            subString = str.substr(tmp,i);
            nums.push_back(atoi(subString.c_str()));
            tmp = i+1;
        }
    }
 
    subString = str.substr(tmp,str.length()-1);
    nums.push_back(atoi(subString.c_str()));
 
    for(int i = 0; i < nums.size(); i++) {
        cout << nums[i] << " ";
    }
 
    return 0;
}
YouDoItWrong
46 / 46 / 7
Регистрация: 29.10.2011
Сообщений: 154
14.12.2011, 17:35     Строки #7
Ну и среднее арифметическое.
C++
1
2
3
4
#include <numeric>
...
    cout << std::accumulate(nums.begin(), nums.end(), 0)/nums.size() << endl;
...
Show2011
0 / 0 / 0
Регистрация: 14.12.2011
Сообщений: 8
14.12.2011, 17:37  [ТС]     Строки #8
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
#include <iostream>
#include <math.h>
#include <conio.h>
#include <string>
 
using namespace std;
int main()
{
    int i; double S=0;
    char str[6];
    char tmp;
    cout<<"Enter the parameters:"<<endl;
    gets(str);
    puts(str);
    for(i=0;i<6;i=i+2) {
        tmp=str[i];
        cout<<"temp="<<tmp<<endl;
        cout<<"temp="<<double(tmp)<<endl;
        S=S+(int)tmp; 
    }
    S=S/3;
    cout<<"Result="<<S<<endl;
    getch();
    return 0;
}
сделал так, но приведение типов не работает, если ввожу 1,1,1 то он переводит 1 в 49, а нужно 1 в 1... как сделать это приведение..

Добавлено через 1 минуту
оу, спасибо, щас гляну))

Добавлено через 13 секунд
не видел что уже прислал)
Dr.Urban
63 / 58 / 7
Регистрация: 14.12.2011
Сообщений: 193
14.12.2011, 18:28     Строки #9
Была в С такая функция int atoi(const char *s);
Например:
C++
1
2
3
4
5
6
7
8
9
10
#include "stdlib.h"
#include <iostream>
using namespace std;
int main(void){
    char Str[] = "12";
    int k = atoi(Str);
 
    cout << k << endl;
    return 0;
}
Будет полезно или нет решайте сами...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2011, 19:04     Строки
Еще ссылки по теме:

C++ Даны строки s, s0. Найти количество вхождений строки s0 в строку s
C++ Разместить текст первой строки по центру второй строки
C++ Определить, верно ли утверждение: сумма элементов каждой i-й строки матрицы меньше суммы (i-1)-й строки

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

Или воспользуйтесь поиском по форуму:
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
14.12.2011, 19:04     Строки #10
Цитата Сообщение от Dr.Urban Посмотреть сообщение
Была в С такая функция int atoi(const char *s);
По моему скромному мнению функция скорее вредная. Никакой возможности проверить, насколько правильно она отработала. Если строка начинается не с цифры (ну или знака '-' за которым должна быть цифра) - вернёт 0, если с цифры - вернёт число состоящее из цифр от первой до той, за которой идёт буква, символ, да что угодно... И в случае переполнения просто неверный результат вернёт. Если уж на то пошло, лучше strtol() использовать...
Yandex
Объявления
14.12.2011, 19:04     Строки
Ответ Создать тему
Опции темы

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