Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 01.10.2013
Сообщений: 16
1

Переворот столбец со словами

01.10.2013, 19:04. Показов 596. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вечер добрый. Нужна помощь.

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

Я понятия не имею как это можно сделать. Препод сказал использовать двумерный массив...

Помогите пожалуйста, буду очень благодарен!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.10.2013, 19:04
Ответы с готовыми решениями:

Поменять местами первый столбец и столбец и столбец, где находится максимальный элемент массива
Дан двумерный массив вещественных чисел из 4 столбцов и 3 строк. Поменять местами первый столбец и...

Удалить пробелы, стоящие между первым вторым словами, а также между двумя последними словами
Удалить пробелы, стоящие между первым вторым словами, а также между двумя последними словами, на...

Удалить пробелы, стоящие между первым и вторым словами, а также между двумя последними словами
Задание: Удалить пробелы, стоящие между первым и вторым словами, а также между двумя последними...

Отсев данных по формуле: Столбец 3 = Столбец 1 - Столбец 2
Уважаемые умные мужчины! Подскажите девушке, а то никак не могу разобраться с клиентской базой....

15
zzzZZZ...
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,041
02.10.2013, 20:04 2
кол-во и длинна слов известны или нет? тут задачу то по разному можно решить
0
0 / 0 / 0
Регистрация: 01.10.2013
Сообщений: 16
03.10.2013, 00:45  [ТС] 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
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    char filename[128], filename2[128];
    cin >> filename >> filename2;
    FILE *file, *file2;
    char strings[100][100];
    file = fopen(filename, "r");
    file2 = fopen(filename2, "w");
    int count=0;
    while (!feof(file)) {
        strcpy(strings[count], "");
        fgets(strings[count], 40, file);
        int len = strlen(strings[count]);
        if(strings[count][len-1] == 10) 
            strings[count][len-1] = 0;
        count++;
    }
    fclose(file);
 
    for (int i=count-1; i>=0; i--) {
        if (i>0)
            strcat(strings[i], "\n");
        fputs(strings[i], file2);
    }
    fclose(file2);
    return 0;
}
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
03.10.2013, 00:55 4
Цитата Сообщение от trinkle69 Посмотреть сообщение
Код выглядит так
Если слов в файле окажется больше, чем 100?
0
0 / 0 / 0
Регистрация: 01.10.2013
Сообщений: 16
03.10.2013, 00:57  [ТС] 5
не тестил, но думаю будет работать..
Я новичек, только учусь, если есть предложения и замечания, то с удовольствием выслушаю.
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
03.10.2013, 01:01 6
Цитата Сообщение от trinkle69 Посмотреть сообщение
не тестил, но думаю будет работать..
Как же он будет работать, если массив выделен только на 100 слов?
0
0 / 0 / 0
Регистрация: 01.10.2013
Сообщений: 16
03.10.2013, 01:04  [ТС] 7
я выделил столько, сколько мне нужно было. Моя задача работает
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
03.10.2013, 01:06 8
Цитата Сообщение от trinkle69 Посмотреть сообщение
я выделил столько, сколько мне нужно было. Моя задача работает
Вам нужно было или исходя из задачи? Текст задачи в первом посте? Там не сказано о количестве слов в файле.
0
0 / 0 / 0
Регистрация: 01.10.2013
Сообщений: 16
03.10.2013, 01:11  [ТС] 9
Мне нужно было не более 10 строк.
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
03.10.2013, 01:14 10
Цитата Сообщение от trinkle69 Посмотреть сообщение
Мне нужно было не более 10 строк.
Вопрос остаётся. В задании сказано, что в файле не более 10 строк? Зачем тогда массив на 100?
0
0 / 0 / 0
Регистрация: 01.10.2013
Сообщений: 16
03.10.2013, 01:18  [ТС] 11
Цитата Сообщение от alsav22 Посмотреть сообщение
Вопрос остаётся. В задании сказано, что в файле не более 10 строк? Зачем тогда массив на 100?
я по моему написал, что я только учусь. Если есть что-то конструктивное, пожалуйста излагай, если нет, то спасибо за поддержание разговора. Удачи.
0
Обитатель форума
201 / 184 / 54
Регистрация: 28.10.2012
Сообщений: 543
03.10.2013, 01:19 12
В таких случаях определяется переменная для счета строк в файле. После чего выделяется память под динамический массив или просто использовать контейнер. И не нужно придумывать отговорки, что, мол, я захотел 10 строк, значит будет 10.
1
alsav22
03.10.2013, 01:22
  #13

Не по теме:

Цитата Сообщение от trinkle69 Посмотреть сообщение
я по моему написал, что я только учусь.
Что не заметно желания учиться... Заметна упёртость.

0
0 / 0 / 0
Регистрация: 01.10.2013
Сообщений: 16
03.10.2013, 01:22  [ТС] 14
Цитата Сообщение от Afflicted Посмотреть сообщение
В таких случаях определяется переменная для счета строк в файле. После чего выделяется память под динамический массив. И не нужно придумывать отговорки, что, мол, я захотел 10 строк, значит будет 10.
как это все делается?
0
Обитатель форума
201 / 184 / 54
Регистрация: 28.10.2012
Сообщений: 543
03.10.2013, 01:26 15
Цитата Сообщение от trinkle69 Посмотреть сообщение
как это все делается?
Например, так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <vector>
#include <fstream>
 
 
int main()
{
    char tempString[255];
    std::vector<char*> vct;
 
    std::ifstream fin("");
 
    while (fin.getline(tempString, 255, '\n'));
        vct.push_back(tempString);
}
0
zzzZZZ...
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,041
03.10.2013, 18:28 16
привет, я тоже только учусь, поэтому решил твою задачку вот так, тут кое-что лишнее, но я не успеваю подправить тк надо домой идти с работы))
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
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
int main()
{
ifstream somefile("xxx1.txt"); // открываю для чтения
ofstream out("xxx2.txt");      // открываю для записи
int size=sizeof(char); // непомню зачем
char *b,*y; // динамич массив для строк символов
int i=0; // счётчик для массива а, соответственно длина 1ого слова пишется в a[0]
int s;  // просто для ограничения for после while
char **c = new char*[2000*sizeof(char)]; // указатель на массив с указателями
 
while (!somefile.eof()) // цЫкл
{
y = new char[255];
somefile>>y; //сам поток
size = strlen(y); //ищем длину слова
b = new char[size];
strcpy(b, y);
c[i]=b;
cout<<"       b = "<<b<<endl;
 
cout<<"adress c:= "<<c<<endl;
cout<<"adress b:= "<<b<<endl;
 
i++;
s=i;
delete [] y;
}
cout<<"\n\nwhile off"<<endl;
int o=s;
for (int i=0;i<s;i++)
{
o--;
out<<c[o]<<endl;
cout<<"adress c["<<i<< "] = "<<c[i]<<endl;
cout<<"       c["<<i<< "] = "<<&c[i]<<endl;
}
    delete [] c;
    delete [] b;
    return 0;
}
Добавлено через 4 минуты
вообщем подправть сам и разбирись если интересно

Добавлено через 1 час 15 минут
char **c = new char*[2000*sizeof(char)];
вот эту строчку можно тоже сделать по-нормальному(не было времени), а то памяти тратится, просто сначала нужно найти кол-во строк, а потом объявлять этот массив и далее уже весь код который за ней, т.е. читать файл придётсмя 2 раза, что на времени скажется, но тут уже или время или память, я другого решения не знаю.
Можно там всякие классы контейнеры итп но я про них ещё не читал
0
03.10.2013, 18:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.10.2013, 18:28
Помогаю со студенческими работами здесь

Файл: Загрузка данных из файла: первый столбец записывался в 1й массив, второй столбец - во 2й массив, а 3й столбец - в 3й массив.
Есть текстовый файл, в нем 3 столбца чисел (число строк заранее неизвестно). Напишите пожалуйста...

Дана строка текста, между словами текста минимум один пробел.Написать программу, которая между словами текста ставит по три точки!!
Дана строка текста, между словами текста минимум один пробел.Написать программу, которая между...

«Переворот» числа
6. «Переворот» числа. Преобразовать введенное число в другое число, цифры которого будут следовать...

Переворот числа
Вводится число и его нужно перевернуть Типо вводится 12345 нужно вывести 54321 Но у меня проблема...


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

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