Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
5 / 5 / 2
Регистрация: 13.03.2017
Сообщений: 101

Файлы: найти количество кубиков каждого из перечисленных цветов и их суммарный объем

11.05.2017, 21:38. Показов 1832. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задание:
Дан файл f, содержащий сведения о кубиках: размер каждого кубика, его цвет (красный, зеленый, желтый или синий) и материал (деревянный, металлический, картонный). Найти: Количество кубиков каждого из перечисленных цветов и их суммарный объем; Количество деревянных кубиков с ребром 3 см и количество металлических кубиков с ребром, большим 5 см.

Как найти:
Количество деревянных кубиков с ребром 3 см и количество металлических кубиков с ребром, большим 5 см.

f.txt

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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char* argv[])
{
    int     red, yellow, green, blue, capacity, side;
    char    color[20], stuff[20];
    FILE    *file;
    if((file = fopen("f.txt", "r")) == 0)
        puts("Unable to open file..\n"), exit(1);
    red = yellow = green = blue = capacity = 0;
    while(fscanf(file, "%d %s %s", &side, color, stuff) != EOF)
    {
        capacity += side * side * side;
             if(strcmp(color, "red")    == 0)    red++;
        else if(strcmp(color, "yellow") == 0)    yellow++;
        else if(strcmp(color, "green")  == 0)    green++;
        else if(strcmp(color, "blue")   == 0)    blue++;
    }
    printf("red     : %d\n", red);
    printf("yellow  : %d\n", yellow);
    printf("green   : %d\n", green);
    printf("blue    : %d\n", blue);
    printf("Capacity: %d\n", capacity);
    fclose(file);
    return 0;
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.05.2017, 21:38
Ответы с готовыми решениями:

Найти количество кубиков каждого из перечисленных цветов и их суммарный объем
Помогите пожалуйста. Создать файл содержащий сведения о кубиках : размер каждого кубика(длина ребра в сантиметрах), его цвет (красный,...

Найти: А) количество кубиков каждого из перечисленных цветов и их суммарный объем
Дан файл f, содержащий сведения о кубиках: размер каждого кубика (длина ребра в сантиметрах), его цвет (красный, желтый, зелены или синий)...

Найти количество кубиков каждого из перечисленных цветов и их суммарный объем
Известны такие сведения о кубиках: размер каждого кубика(длина ребра в сантиметрах), его цвет(красный, желтый, зеленый или синий) и...

9
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
12.05.2017, 09:53
C
1
2
3
4
if (strcmp(stuff, "wood") == 0 && side == 3)
    ++wood3;
else if (strcmp(stuff, "metal") == 0 && side > 5)
    ++metalGreaterThan5;
0
82 / 81 / 72
Регистрация: 25.02.2017
Сообщений: 175
15.05.2017, 21:35
Вам нужно объединить циклы (строка 12 и строка 20) в один. Ошибка в том, в первом цикле вы читаете файл до конца. И когда вы пытаетесь читать файл во втором цикле, то ничего и не получаете, поскольку указатель файла установлен в конец в предыдущем цикле.
0
5 / 5 / 2
Регистрация: 13.03.2017
Сообщений: 101
16.05.2017, 16:40  [ТС]
Что-то Вы не так говорите, точно 12 и 20? Не получается ничего)
0
1786 / 1036 / 445
Регистрация: 12.05.2016
Сообщений: 2,550
16.05.2017, 16:43
Цитата Сообщение от sidor_01 Посмотреть сообщение
Ошибка в том, в первом цикле вы читаете файл до конца.
Эм, а где второй цикл??
0
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
16.05.2017, 17:14
Такое ощущение, что объединили две темы, а код, который прокомментировал sidor_01, куда-то исчез.
0
5 / 5 / 2
Регистрация: 13.03.2017
Сообщений: 101
16.05.2017, 17:16  [ТС]
Вот код новый, как объединить 2 цикла?
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 <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char* argv[])
{
    int     red, yellow, green, blue, capacity, side;
    char    color[20], stuff[20];
    FILE    *file;
    if((file = fopen("f.txt", "r")) == 0)
        puts("Unable to open file..\n"), exit(1);
    red = yellow = green = blue = capacity = 0;
    while(fscanf(file, "%d %s %s", &side, color, stuff) != EOF)
    {
        capacity += side * side * side;
             if(strcmp(color, "red")    == 0)    red++;
        else if(strcmp(color, "yellow") == 0)    yellow++;
        else if(strcmp(color, "green")  == 0)    green++;
        else if(strcmp(color, "blue")   == 0)    blue++;
    }
   while(fscanf(file, "%s %s %s", &side, color, stuff) != EOF) 
    {
                if (strcmp(stuff, "wooden") == 0 && side == 3)     wooden++;
        else    if (strcmp(stuff, "metallic") == 0 && side > 5)    metallic++;
    }
    printf("red     : %d\n", red);
    printf("yellow  : %d\n", yellow);
    printf("green   : %d\n", green);
    printf("blue    : %d\n", blue);
    printf("Capacity: %d\n", capacity);
    fclose(file);
    return 0;
}
0
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
16.05.2017, 17:18
Цитата Сообщение от panuchi Посмотреть сообщение
как объединить 2 цикла?
удалить строки 19-21.
0
5 / 5 / 2
Регистрация: 13.03.2017
Сообщений: 101
16.05.2017, 17:22  [ТС]
Всё равно не правильно считает что-то..
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char* argv[])
{
    int     red, yellow, green, blue, capacity, side, wooden, metallic;
    char    color[20], stuff[20];
    FILE    *file;
    if((file = fopen("f.txt", "r")) == 0)
        puts("Unable to open file..\n"), exit(1);
    red = yellow = green = blue = capacity = 0;
    while(fscanf(file, "%d %s %s", &side, &color, &stuff) != EOF)
    {
        capacity += side * side * side;
             if(strcmp(color, "red")    == 0)    red++;
        else if(strcmp(color, "yellow") == 0)    yellow++;
        else if(strcmp(color, "green")  == 0)    green++;
        else if(strcmp(color, "blue")   == 0)    blue++;
              if(strcmp(stuff, "wooden") == 0 && side == 3)     wooden++;
        else if(strcmp(stuff, "metallic") == 0 && side > 5)    metallic++;
    }
    printf("red     : %d\n", red);
    printf("yellow  : %d\n", yellow);
    printf("green   : %d\n", green);
    printf("blue    : %d\n", blue);
    printf("Capacity: %d\n\n", capacity);
    printf("Wooden==3: %d\n", wooden);
    printf("Metallic>5: %d\n", metallic);
    fclose(file);
    return 0;
}
В консоли:
C
1
2
3
4
5
6
7
8
red     : 2
yellow  : 3
green   : 1
blue    : 2
Capacity: 819
 
Wooden==3: 6356886
Metallic>5: 4201120
В файле f:
C
1
2
3
4
5
6
7
8
3 yellow    cardboard
3 yellow    wooden
3 blue  metallic
5 green metallic
3 yellow    wooden
7 red   cardboard
6 blue  wooden
3 red   metallic
0
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
16.05.2017, 17:25
Лучший ответ Сообщение было отмечено panuchi как решение

Решение

Переменные wooden, metallic не инициализированы, должны быть = 0.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.05.2017, 17:25
Помогаю со студенческими работами здесь

Найти количество кубиков каждого их перечисленных цветов и их суммарный объем.
Некоторый массив содержит данные о кубиках: размер каждого кубика (длина ребра в сантиметрах), его цвет (красный, желтый, зеленый или...

Найти количество кубиков каждого из перечисленных цветов и их суммарный объем
Дано файл f, содержащий сведения о кубиках: размер каждого кубика (длина ребра в сантиметрах), его цвет (красный, желтый, зеленый или...

Записи. Найти количество кубиков каждого из перечисленных цветов и их суммарный объем
Даны сведения о кубиках: размер каждого кубика (длина ребра в сантиметрах), его цвет (красный, желтый, зеленый или синий) и материал...

Определить количество кубиков каждого из цветов и их суммарный объем
В файле записаны сведения о кубиках: 1)размер кубика(длина ребра в см) 2)цвет(красный,желтый,синий,зеленый) 3)материал(деревянный,...

Файл: Найдите количество кубиков каждого из заданных цветов и их суммарный объём
Доброго времени суток всем! Дан файл f, содержащий сведения о кубиках: размер каждого кубика (длина ребра в см), его цвет (красный,...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru