0 / 0 / 1
Регистрация: 11.01.2015
Сообщений: 10
1

Ввод/вывод через printf() и scanf()

19.01.2015, 21:11. Показов 3120. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как правильно заменить вывод и ввод с cout/cin на printf() и scanf()?
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include <string.h>
#include <iostream>
#include <string>
#include <stdio.h>
 
using std::cout;
using std::cin;
using std::endl;
 
void Sortirovka(char **a); 
void Vivod(char **a);
 
void (*aa)(char**);   // указатель на функцию
 
       
       
     
 
int main ()
{
    int j,i;
     char **a = new char*[31];
     for (i=0; i<31; i++)
        a[i]=new char[30];
 
    cout<< "Vvedite slova ";
    cout <<endl;
    for (i=0;i<30;i++)
    {
        cout<< "Vvedite slovo # "<<i+1<<" : ";
        cin >> a[i] ; 
    }
    aa=&Sortirovka; 
    (*aa)(a);
    aa=&Vivod; 
    (*aa)(a);
        system("pause");    
        
    return 0;
}
 
void Sortirovka(char **a) //Сортировка списка
{
    int j,i;
    for(i=29;i>=1;i--)
        for(j=0;j<i;j++)
        {
            
            if (a[j][0] > a[j+1][0])
            {
            a[31] = a[j];
            a[j] = a[j+1];
            a[j+1] = a[31];
            }
 
            if (a[j][0] == a[j+1][0])
            {
             if (a[j][1] > a[j+1][1])
                {
                 a[31] = a[j];
                 a[j] = a[j+1];
                 a[j+1] = a[31];
                }
            }
        }
 
}
 
void Vivod(char **a) //Сортировка списка
{
    int i;
    
    for (i=0;i<30;i++)
    {
        cout<< "Slovo # "<<i+1<<" : "<< a[i] << endl;
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.01.2015, 21:11
Ответы с готовыми решениями:

Тип long long и его ввод\вывод с использованием scanf\printf
Добрый день! Мне в программе надо вывести и ввести, соответственно, некоторые данные с помощью...

Записать через printf и scanf
Помогите переписать код через printf и scanf #include &lt;iostream&gt; #include &lt;cstdlib&gt; int mul(...

Не работает программа через printf и scanf
Нужно написать программу, которая бы выводила таблицу через printf и scanf, которые бы находились в...

Перепишите мой код через scanf printf
Замените cin cout на scaf print правильно #include &lt;cmath&gt; #include &lt;vector&gt; #include &lt;iostream&gt;...

2
Модератор
Эксперт С++
13502 / 10754 / 6409
Регистрация: 18.12.2011
Сообщений: 28,699
19.01.2015, 22:02 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
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
//#include <string.h>
#include <stdio.h>
#include <conio.h>
 
void Sortirovka(char **a); 
void Vivod(char **a);
void (*aa)(char **a);   // указатель на функцию
 
int main ()
{
    int i;
    char **a = new char*[30];
     for (i=0; i<30; i++)
        a[i]=new char[100];
    printf("Vvedite slova\n");
    for (i=0;i<30;i++)
    {
        printf("Vvedite slovo #%d:",i+1);
        scanf("%s",a[i]); 
    }
    aa=&Sortirovka; 
    (*aa)(a);
    aa=&Vivod; 
    (*aa)(a);
    for (i=0; i<30; i++)
        delete[] a[i];
    delete[] a;
    getch();    
    return 0;
}
 
void Sortirovka(char**  a) //Сортировка списка
{
    int j,i;
    for(i=29;i>=1;i--)
        for(j=0;j<i;j++)
        {
            if (a[j][0] > a[j+1][0])
            {
                char* t= a[j];
                a[j] = a[j+1];
                a[j+1] = t;
            }else if (a[j][0] == a[j+1][0])
            {
               if (a[j][1] > a[j+1][1])
               {
                 char* t = a[j];
                 a[j] = a[j+1];
                 a[j+1] = t;
               }
            }
        }
 
}
 
void Vivod(char **a) //Сортировка списка
{
    int i;
    
    for (i=0;i<30;i++)
    {
        printf("Slovo #%d: %s\n",i+1,a[i]);
    }
}
1
0 / 0 / 1
Регистрация: 11.01.2015
Сообщений: 10
22.01.2015, 21:25  [ТС] 3
Спасибо! С этой программой разобрался.
Можете помочь с этой программой!? Та же проблема, только , как я понимаю, посложнее решение.
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
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
93
94
#include <string.h>
#include <iostream>
#include <string>
#include <stdio.h>
 
using std::cout;
using std::cin;
using std::endl;
 
int main ()
{
    struct TAM
    {
        char date[10];
        int key ;
        char fir[16];
        int sum,st; 
        float sb;
    } inf[100];
 
    FILE  *rstr;
    rstr = fopen ("c:\\my_file.txt", "w+");
 
    int kol,i,j,m,t,sum,kod,sr[100];
    char fir0[12],fir1[10],fir2[18],fir3[11],fir4[12],fir5[14];
    char h[2];
    cout<< "Vvedite kolichestvo dogovorov : ";
    cin >> kol ;
    cout <<endl;
    for (i=0;i<kol;i++)
    {
        cout<< "Vvedite daty dogovora: ";
        cin >> inf[i].date ; 
        cout<<"Vvedite  nomer dogovora: ";
        cin >> inf[i].key;
        cout<< "Vvedite nazvanie firmi: ";
        cin >> inf[i].fir;
        cout<<"Vvedite summu dogovora (y.e.): ";
        cin >> inf[i].sum;
        cout << "Vvedite procent sbora (%): ";
        cin >> inf[i].st;
        inf[i].sb=inf[i].sum*inf[i].st/100;
        cout <<endl;
        sr[i]=i;
    }
    
 
    for(i=kol-1;i>=1;i--)
        for(j=0;j<i;j++)
        {
            if (inf[sr[j]].key > inf[sr[j+1]].key)
            {
            sr[80] = sr[j];
            sr[j] = sr[j+1];
            sr[j+1] = sr[80];
            }
        }
         
 
    for (i=0;i<kol;i++)
    {
        fprintf (rstr, "%10s ", inf[sr[i]].date); 
        fprintf (rstr, "%8d ", inf[sr[i]].key); 
        fprintf (rstr, "%16s ", inf[sr[i]].fir); 
        fprintf (rstr, "%8d ", inf[sr[i]].sum); 
        fprintf (rstr, "%8d ", inf[sr[i]].st); 
        fprintf (rstr, "%8.2f\n", inf[sr[i]].sb);
    }
 
    fclose (rstr);
    rstr = fopen ("c:\\my_file.txt", "rt");
    cout << "Data      |"<<"Nomer   |"<<"Firma           |"<<"Summa   |"<<"Sbor(%) |"<<"Sbor(y.e.) |"<<endl;
    
    for (i=0;i<kol;i++)
    {
        fgets(fir0,12,rstr);
        fgets(fir1,9,rstr);
        fgets(fir2,18,rstr);
        fgets(fir3,10,rstr);
        fgets(fir4,11,rstr);
        fgets(fir5,12,rstr);
        printf(fir0);
        printf(fir1);
        printf(fir2);
        printf(fir3);
        printf(fir4);
        printf(fir5);cout<<endl;
    }
    cout<<endl;
    fclose (rstr);
        system("pause");    
        
    return 0;
}
0
22.01.2015, 21:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.01.2015, 21:25
Помогаю со студенческими работами здесь

Файловый ввод/вывод с использованием scanf();
Дан текстовый файл с числами. Следует заполнить массив int arr; числами из файла input.txt. Для...

Ввод\вывод одномерного массива (printf)
Одномерный массив x с 4-мя элементами Ввод идет нормально, а вот вывод - всегда 0, в чем проблема?...

Ввод данных через scanf без перехода на новую строку, используя пробел
Нужно ввести двумерный массив так, чтобы каждый символ вводился на этой же строке нажатием клавиши...

Ввод строки в структуре, заданной как char *str через scanf (ПОМОЩЬ)
struct {char *str;} A; scanf(&quot;%s&quot;, &amp;A.str); Аварийное завершение программы после ввода. Если...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru