powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Требуеться помощь с поиском ошибки в написании вывода строки/строк текста(язык С)
8 сообщений из 8, страница 1 из 1
Требуеться помощь с поиском ошибки в написании вывода строки/строк текста(язык С)
    #39568715
Karassu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
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.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <string.h>
#include <ctype.h>
int main()
{
    setlocale(LC_ALL,"rus");
    char Name_s[20];
    int i,n,t,j,z,p;
    float max_s,max_r,min_o;
    printf("\n Введите кол-во товаров ");
    scanf("%d",&n);
    struct TOVAR
    {
        char Name[20];
        char Cont[20];
        char Part[15];
        int S_Obs;
        int R_Obs;
        float Price;
    }mas[n];
    for(i=0;i<n;i++)
    {
        printf("\n Номер товара -%d",i+1);
        printf("\n Введите имя товара ");
        scanf("%s",mas[i].Name);

        printf("\n Введите страну ");
        scanf("%s",mas[i].Cont);

        printf("\n Введите партию ");
        scanf("%s",mas[i].Part);

        printf("\n Введите общие количество ");
        scanf("%d",&mas[i].S_Obs);

        printf("\n Введите количество расфасовки ");
        scanf("%d",&mas[i].R_Obs);

        printf("\n Введите цену товара ");
        scanf("%f",&mas[i].Price);
    }
    printf("\n Товар    \t \t Страна    \t \t Партия    \t \t Общее кол-во \t \t Кол-во расфасовки \t \t Цена");
    for(i=0;i<n;i++)
    {
        printf("\n %-20s",mas[i].Name);
        printf("\t %-20s",mas[i].Cont);
        printf("\t %-20s",mas[i].Part);
        printf("\t %-20d",mas[i].S_Obs);
        printf("\t %-20d",mas[i].R_Obs);
        printf("\t         %-20.2f",mas[i].Price);
    }
    t=0;
    for(j=1;j<n;j++)
    {
        max_s=mas[0].Price*mas[0].S_Obs;
        if((mas[j].Price*mas[j].S_Obs)>max_s)
        {
            max_s=mas[j].Price*mas[j].S_Obs;
            t=j;
            strcpy(Name_s,mas[j].Name);
        }
    }
    printf("\n Страна, в которую экспортируется товар на максимальную сумму - %s",mas[t].Cont);
    //////////////////////////////////////////////////////////////////////
    printf("\n Список стран, в которые этот товар экспортируется:");
    for(i=0;i<n;i++)
        if(!strcmp(Name_s,mas[i].Name));
            printf("\n %s",mas[i].Cont);
    //////////////////////////////////////////////////////////////////////
    max_r=mas[0].R_Obs;
    z=0;
    min_o=mas[0].S_Obs;
    p=0;
    for(j=1;j<n;j++)
    {
        if(mas[j].R_Obs>max_r)
        {
            max_r=mas[j].R_Obs;
            z=j;
        }
        if(mas[j].S_Obs<min_o)
        {
            min_o=mas[j].S_Obs;
            p=j;
        }
    }
     printf("\n Товар с наибольшим обьёмом росфасовки - %s",mas[z].Name);
    printf("\n Товар с наименьшим обьёмом партии - %s",mas[p].Name);
    return 0;
}



В подчёркнутом отрезке кода возникает проблема с выводом, и выводит лишь взятый в квадратную рамочку вопросительный знак. Что это может значить? Заранее благодарю за ваш ответ.
...
Рейтинг: 0 / 0
Требуеться помощь с поиском ошибки в написании вывода строки/строк текста(язык С)
    #39568728
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Karassu,

Такая строка в Cont. Замени %s на %d и посмотри, какие символы (их коды) в Cont[0] и в [1]. Сам увидишь.
...
Рейтинг: 0 / 0
Требуеться помощь с поиском ошибки в написании вывода строки/строк текста(язык С)
    #39568735
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
scanf("%d",&n);
.....
}mas[n];


По-моему эта программа даже компилироваться не должна. Или Си уже научился создавать
массивы заранее неизвестной длины?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Требуеться помощь с поиском ошибки в написании вывода строки/строк текста(язык С)
    #39568828
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Karassu printf("\n Товар с наибольшим обьёмом росфасовки - %s",mas[z].Name);
printf("\n Товар с наименьшим обьёмом партии - %s",mas[p].Name);


Расстрелять. Из ржавого пистолета. Не сразу насмерть, так от заражения крови помрет.
...
Рейтинг: 0 / 0
Требуеться помощь с поиском ошибки в написании вывода строки/строк текста(язык С)
    #39568842
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Код: sql
1.
2.
3.
scanf("%d",&n);
.....
}mas[n];


По-моему эта программа даже компилироваться не должна. Или Си уже научился создавать
массивы заранее неизвестной длины?..


Научился.
...
Рейтинг: 0 / 0
Требуеться помощь с поиском ошибки в написании вывода строки/строк текста(язык С)
    #39568850
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Karassu,

Это недопустимый символ в данной кодировке.

Варианта два: либо там в выводимой строке у тебя вообще какая-то несимвольная информация записана (не заполненная строка, строка без завершающего '\0' или ещё что-то плохое), либо выводимая строка заполнена нормально, но в ней находится символ, не представимый в кодировке консоли, в которой работает программа (например, символ номера "№" из cp1251, которого нет в cp866 или что-то подобное)

Можно проверить, посимвольно вывести перед этим код каждого символа из строки

Код: plaintext
1.
2.
for ( unsigned i = 0; i < strlen(s); ++i )
   printf( " [%x]", int(s[i]) );
...
Рейтинг: 0 / 0
Требуеться помощь с поиском ошибки в написании вывода строки/строк текста(язык С)
    #39568851
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
schiKarassu printf("\n Товар с наибольшим обьёмом росфасовки - %s",mas[z].Name);
printf("\n Товар с наименьшим обьёмом партии - %s",mas[p].Name);


Расстрелять. Из ржавого пистолета. Не сразу насмерть, так от заражения крови помрет.

Какие проблемы?
Выражался бы ты яснее...


P.S. Всё же "росфасовки" пишется как "расфасофки".
...
Рейтинг: 0 / 0
Требуеться помощь с поиском ошибки в написании вывода строки/строк текста(язык С)
    #39568901
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivнапример, символ номера "№" из cp1251, которого нет в cp866Alt+252
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Требуеться помощь с поиском ошибки в написании вывода строки/строк текста(язык С)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]