Forum huvudsida -> Programmering -> fildelning
Sidor: 1
skinkpajen | 13:59 - 26:e Augusti 2009 | Post #1 | |
Medlem Inlägg: 1 Skicka PM |
Det här har jag gjort; Programmet ska hantera både en binärfil och en textfil. Programmet uppmanar först användaren att mata in valfri text (textfil). Inmatningen avslutas med ENTER. Därefter ska användaren mata in ett antal positiva heltal som ska läsas in till en binärfil. Inmatningen ska avslutas när användaren skriver in ett negativt tal. När inmatningen är klar skrivs textfilen ut och därefter skrivs binärfilen ut. Det här är problemet som jag behöver hjälp med; Använd den del av ovanstående uppgift som hanterar binärfilen. När inmatningen är klar ska man kunna söka efter ett tal i filen. Programmet ska även söka igenom filen efter det största respektive minsta talen och skriva ut dessa. Dessutom skall man när man startar programmet få frågan om man vill tömma filen innan man startar en ny inmatning. Och så här långt har jag kommit; #include<fstream.h> #include<iostream.h> #include<string.h> #include<stdio.h> #include<conio.h> #include<stdlib.h> #include<iomanip.h> /* Filhantering Nedanstående program skapar en binärfil där man matar in tecken för tecken. Inmatningen avbryts om man matar in ett !. Därefter uppmanas användaren att mata in ett tecken. Programmet söker då igenom filen och meddelar om tecknet finns i filen eller inte. Därefter skrivs filens innehåll ut med fem tecken per rad. */ main() { char text[100]; int a=0,b=0,flagga=0,r=13; //Lite variabler int heltal; //variabel som hanterar inläsningen och skrivning till filen int letaheltal; //variabel för att söka heltal //Skapa en ström ,"minstrom",för både läsning och skrivning , knyt den till //filen heltal.dat.Lägg till nya bokstäver längst bak. // Låt det vara en binärfil. ofstream skriv("heltal.txt",ios::trunc|ios::binary); if(!skriv) //kontrollera om filen kunde öppnas { cout<<"Fel vid filöppning"; //skriv felmeddelande getch(); exit(1); //Hoppa ur programmet } gotoxy(10,5); cout<<"Mata in en heltal: (avsluta med ett netativt tal) : "; //inmatning till variabel cin>>heltal; //som används för läsning/ gotoxy(51,5); //skrivning till fil clreol(); // sudda inmatat tecken while(heltal>0) { skriv.write((char*)&heltal,sizeof(int)); //skriv en heltal på filen gotoxy(10,5); cout<<"Mata in ett heltal: (avsluta med ett negativt tal) : "; cin>>heltal; gotoxy(51,5); clreol(); } skriv.close(); //Stäng filen gotoxy(10,7); cout<<"Skriv den heltal du vill leta efter: "; cin>>letaheltal; ifstream las; //Öppna filen och ställ filpekaren i början obs inget ios::app las.open("heltal.txt",ios::binary); if(!las) { cout<<"Fel vid filöppning"; getch(); exit(1); } las.read((char*)&heltal,sizeof(heltal)); //läs från filen till heltal while(!las.eof()) //Håll på till slutet av filen { if(heltal==letaheltal) { gotoxy(10,10); cout<<"heltalen finns i filen!!"; flagga=1; break; //Hoppa ur loopen om vi hittar heltalen } las.read((char*)&heltal,sizeof(heltal)); } las.clear(); //nollställ alla flaggor så att minstrom kan användas if(flagga==0) //om man läser EOF-tecken ställs flagga som måste nollställas { gotoxy(10,10); cout<<"heltalen finns inte i filen!!"; } gotoxy(10,11); cout<<"Har kommer en utskrift av filens innehall!!"; las.seekg(0,ios::beg); //Ställ filpekaren i början på filen gotoxy(10,r); las.read((char*)&heltal,sizeof(heltal)); //Läs en gång utanför slingan while(!las.eof()) //Håll på till slutet av filen { a++; //antal bokstäver som lästs b=a%5; // b blir =0 för var femte heltal //vi får då fem bokstäver per rad i utskriften cout<<heltal<<" "; if(b!=0) ; else gotoxy(10,++r); las.read((char*)&heltal,sizeof(heltal)); //Läs igen } las.clear(); las.close(); //Stäng filen skriv.open("text.txt"); if(!skriv) { cout<<"Fel vid filöppning"; getch(); exit(1); } cin.ignore(1000,'n'); cout<<"Skriv en mening och avsluta med enbart enter: "; cin.getline(text,100); while(text[0]!='�') { skriv<<text; cout<<"Skriv en mening och avsluta med enbart enter: "; cin.getline(text,100); } skriv.close(); las.open("text.txt"); if(!las) { cout<<"Fel vid filöppning"; getch(); exit(1); } las.getline(text,100); while(!las.eof()) { cout<<text; las.getline(text,100); } las.close(); getch(); return 0; } /*while(text[0]!='�') { skriv<<text; clrscr(); cin.getline(text,100); } */ |
FunkyChicken | 18:39 - 26:e Augusti 2009 | Post #2 | |
Nyhetsredaktör Inlägg: 800 Skicka PM |
+1 för att du läste "läs innan du postar". -1 för dålig cut'n'paste. Så, du har ett program från en tidigare övning som gör något, och nu vill du göra något annat? Programmering handlar om problemlösning, vi gör detta genom att bryta ned problemet i mindre delar. Fundera över vilka delproblem som finns i din uppgift (läsa från fil, söka efter tal, leta efter största talet, skriva ut på skärmen....), hur de ska pusslas ihop till en komplett struktur, och vilka av dessa delproblem som kan lösas genom att återanvända din gamla kod. |
Sidor: 1
Forum huvudsida -> Programmering -> fildelning
Du får inte posta i den här tråden | Till toppen
Datum
2024-05-04 04:20
Vecka: 18
Besökare
Inloggade: 0
Gäster: 605
Medlemmar
Medlemmar: 53576
Forum
Senaste inlägget: HAHA MÄNNISKAN LEVER ÄN (13:45 - 18:e Januari 2019, av Hetzz)
Wiki
Senaste ändringen:
3D (rev: 1, tid: 09:40 - 13:e November 2015)
Chatt
#blinkenlights @ Libera.Chat
Gratis shellkonton för IRC, webbsidor mm.