файл — Как написать несколько столбцов в цикле в C ++?

Предположим, у меня есть цикл:

for(int i=1; i<=1024; i++)

Я хочу заполнить файл 128 столбцами (не строками!), Поэтому первый столбец содержит числа от 1 до 8, второй от 9 до 16 и т. Д. И т. Д.

Пожалуйста помоги

0

Решение

Пункты для каждого столбца всего от 8i до 8i + 7. Вы можете написать несколько петель.for(int i = 0; i< 128;i++)
for(int j = 0; j <8;j++)
int k = 8* i+ j;

0

Другие решения

void write_in_file( ofstream &fout, int start){
for(int i = 1; i <= 128; i++){
fout<<start <<"\t";
start+=8;
}
fout<<"\n";
}
int main(){
ofstream fout;
fout.open("out.txt");
for(int i=1;i<=8;i++){
write_in_file(fout,i);
}
}

Объяснение:
Нам нужно 8 строк, поэтому мы вызываем функцию write_in_file 8 раз. Каждый раз функция write_in_file записывает в файл 128 записей.

0

Самый простой способ — создать два цикла — первый по строкам и вложенный по столбцам, а затем вычислить числа с помощью простого математического выражения.
Например.:

    for(int line = 0; line < 8; line++)
{
for( int col = 0; col < 128; col++)
{
cout << setw(5) << line + col * 8 + 1;
}
cout << endl;
}

setw() имеет параметр 5, чтобы сделать одинаковую ширину для столбцов с номерами от 1 до 1024

Редакция:

Если вы хотите использовать только один for Цикл и точное, как вы даете в вопросе, вы можете использовать более сложные математические выражения.
Для начала посчитаем номер строки как (i-1) / 128 (числа начинаются с 0) и номер столбца как (i-1) % 128 (цифры от 0 до 127). И теперь вы можете сделать следующий цикл с дополнительным условным выводом новой строки:

    for(int i=1; i<=1024; i++)
{
cout << setw(5) << ( 1 + 8 * ((i-1) % 128) ) + ( (i-1) / 128 );
if( i % 128 == 0 ) // new line once per 128 numbers
cout << endl;
}

Конечно, если вы хотите создать файл, вы должны сделать что-то с выводом — перенаправить стандартный вывод в файл или изменить cout в другой поток.

0
По вопросам рекламы [email protected]