Enter the second version. This one has 1 more function that does essentially nothing, a new pointer (length_ptr), and changes to parameters to use this pointer. This second version will compile but when ran does nothing. I have entered a printf statement at the very beginning of the main function and it shows this. I then entered a printf statement after the first declaration (char row[LINE]) and it DOESNT show this.
VERSION 1, THIS WORKS FINE
#include <stdio.h>
#include <stdlib.h>
#define LINE 101
#define SIZE 150
#define WIDTH 50
void process(char * row, char * inputGrid, char * grid, char * wordList, int * words);
int main()
{
char row[LINE];
char inputGrid[SIZE][LINE];
char grid[50][LINE];
char wordList[LINE][WIDTH];
char * row_ptr = row;
char * inputGrid_ptr = &inputGrid[0][0];
char * grid_ptr = &grid[0][0];
char * wordList_ptr = &wordList[0][0];
int words;
int * words_ptr = &words;
process(row_ptr, inputGrid_ptr, grid_ptr, wordList_ptr, words_ptr);
return 0;
}
void process(char * row, char * inputGrid, char * grid, char * wordList, int * words)
{
int i = 0;
int x = 0;
int length = 0;
int height = 0;
for(i = 0; i < SIZE; i++)
{
if(fgets(row, LINE, stdin) == NULL) break;
height++;
for(x = 0; x < LINE; x++)
{
*(inputGrid + x + (LINE * i)) = row[x];
if (row[x] == '\n') break;
}
}
do{
length++;
}while(*(inputGrid + length) != '\n');
*words = height - (length/2);
printf("\nGrid: \n");
for(i = 0; i < (length/2); i++)
{
for(x = 0; x < (length + 1); x++)
{
*(grid + x + (LINE * i)) = *(inputGrid + x + (LINE * i));
printf("%c", *(grid + x + (LINE * i)));
}
}
printf("\nWord List: \n");
for(i = (height - *words); i < height; i++)
{
for(x = 0; x < (length + 1); x++)
{
*(wordList + x + (LINE * i)) = *(inputGrid + x + (LINE * i));
printf("%c", *(wordList + x + (LINE * i)));
}
}
}
VERSION 2, THIS WILL NOT RUN PROPERLY
#include <stdio.h>
#include <stdlib.h>
#define LINE 101
#define SIZE 150
#define WIDTH 50
void process(char * row, char * inputGrid, char * grid, char * wordList, int * words, int * length);
void solve(char * row, char * inputGrid, char * grid, char * wordList, int * words, int * length);
int main()
{
char row[LINE];
char inputGrid[SIZE][LINE];
char grid[50][LINE];
char wordList[LINE][WIDTH];
char * row_ptr = row;
char * inputGrid_ptr = &inputGrid[0][0];
char * grid_ptr = &grid[0][0];
char * wordList_ptr = &wordList[0][0];
int words;
int * words_ptr = &words;
int length;
int * length_ptr = &length;
process(row_ptr, inputGrid_ptr, grid_ptr, wordList_ptr, words_ptr, length_ptr);
solve (row_ptr, inputGrid_ptr, grid_ptr, wordList_ptr, words_ptr, length_ptr);
return 0;
}
void process(char * row, char * inputGrid, char * grid, char * wordList, int * words, int * length)
{
int i = 0;
int x = 0;
int height = 0;
int length_var = *length;
for(i = 0; i < SIZE; i++)
{
if(fgets(row, LINE, stdin) == NULL) break;
height++;
for(x = 0; x < LINE; x++)
{
*(inputGrid + x + (LINE * i)) = row[x];
if (row[x] == '\n') break;
}
}
do{
*length = *length + 1;
}while((*(inputGrid) + length_var) != '\n');
length_var = *length;
*words = height - (length_var/2);
printf("\nGrid: \n");
for(i = 0; i < (length_var/2); i++)
{
for(x = 0; x < (length_var + 1); x++)
{
*(grid + x + (LINE * i)) = *(inputGrid + x + (LINE * i));
printf("%c", *(grid + x + (LINE * i)));
}
}
printf("\nWord List: \n");
for(i = (height - *words); i < height; i++)
{
for(x = 0; x < (length_var + 1); x++)
{
*(wordList + x + (LINE * i)) = *(inputGrid + x + (LINE * i));
printf("%c", *(wordList + x + (LINE * i)));
}
}
}
void solve(char * row, char * inputGrid, char * grid, char * wordList, int * words, int * length)
{
int i = 0;
int x = 0;
int flag[50][LINE];
}
This post has been edited by Salem_c: 20 September 2012 - 02:35 AM
Reason for edit:: adjust font size - 7 is too much

New Topic/Question
Reply



MultiQuote




|